“ rm” ในระบบไฟล์ NTFS แตกต่างจากการใช้งานของ Windows เองอย่างไร


16

ฉันมีดิสก์ USB ภายนอกที่มีระบบไฟล์ NTFS อยู่

ถ้าฉันลบไฟล์ออกจาก Windows และฉันเรียกใช้หนึ่งในหลาย ๆ ยูทิลิตี้ "ยกเลิกการลบ" (เช่น TestDisk) ฉันสามารถกู้คืนไฟล์ได้อย่างง่ายดาย (เพราะ "มันยังอยู่ที่นั่น แต่ถูกทำเครื่องหมายว่าถูกลบ")

หากฉันลบไฟล์ออกจาก Linux ไม่มียูทิลิตี้ (ยกเว้นว่าฉันใช้การค้นหาแบบอิงฐานข้อมูลแบบลึก) สามารถกู้คืนไฟล์ได้ ทำไม? unlink ถูกนำไปใช้ในระบบไฟล์ NTFS ของ Linux อย่างไร? ดูเหมือนว่ามันจะไม่เพียง "ทำเครื่องหมายว่าถูกลบ" แต่มันลบล้างโครงสร้างบนดิสก์บางส่วนนี่เป็นกรณีหรือไม่


2
@Jay silly_evarlast Wren คุณอาจพูดถูกฉันจะลองใช้ serverfault ระบบที่ฉันใช้สำหรับทดสอบลักษณะการทำงานนี้เป็น Ubuntu ดังนั้นนี่อาจเกี่ยวข้องกับอูบุนตู

คุณสามารถผ่านซอร์สโค้ดของ ntfs-3g และดูว่ามีอะไรเกี่ยวกับปัญหาของคุณหรือไม่
Martin Ueding

อาจถามนักพัฒนา ntfs-3g ก็มีความเป็นไปได้เช่นกัน (พวกเขารู้ว่า NTFS ทำงานอย่างไรและพวกเขาใช้มันอย่างไร)
JanC

คำตอบ:


7

ฉันดูที่แหล่ง ntfs3g จากความอยากรู้

ดูเหมือนจะมีฟังก์ชั่นที่ntfs_delete(...)กำหนดไว้dir.cซึ่งจะทำการลบ

แน่นอนจะลบเมตาดาต้าของไฟล์ / ไดเร็กทอรีที่ถูกลบทั้งหมดออกจากโครงสร้างระบบไฟล์

เนื่องจากมีซอร์สโค้ดสำหรับเวอร์ชันของ Microsoft ไม่พร้อมใช้งานฉันสามารถลองเดาได้อย่างมีประสิทธิภาพว่าจะทำการลบอย่างไร

ดูเหมือนว่า Microsoft จะทำเครื่องหมายเฉพาะรายการ MFT ว่าไม่ได้ใช้เนื่องจากยูทิลิตี้การยกเลิกการลบจะสามารถกู้คืนตำแหน่งและชื่อของไฟล์ที่ถูกลบได้


3

ฉันไม่ทราบคุณสมบัติเฉพาะของ Windows และ NTFS แต่วิธีทั่วไปในการทำเช่นนี้บนตัวจัดการไฟล์ Unix / Linux GUIs และ Mac OS X Finder คือการไม่ลบไฟล์ แต่ย้ายไปยังโฟลเดอร์ที่ซ่อนอยู่พิเศษที่ชื่อ Trash (หรือ ที่คล้ายกัน) คำสั่งยกเลิกการลบจะดึงไฟล์จากโฟลเดอร์ถังขยะนั้น

rm เพียงแค่ลบไฟล์โดยไม่ต้องรบกวนโฟลเดอร์ถังขยะตามที่ผู้ใช้ร้องขอ


ขอบคุณฉันกำลังมองหาคำอธิบายเกี่ยวกับพฤติกรรมนั้น!
jcora
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.