สามารถกู้คืนไฟล์ / ไดเร็กทอรีด้วย rm ได้หรือไม่


69

เป็นไปได้ไหมที่จะกู้คืนไฟล์ / ไดเรกทอรีที่ถูกลบออกจากเทอร์มินัลโดยใช้rmและrm -r? หากไฟล์ถูกลบออกจากอินเตอร์เฟสแบบกราฟิกไฟล์นั้นอาจถูกกู้คืนจากถังขยะ แต่คุณจะกู้คืนไฟล์ได้อย่างไรหากถูกลบโดยใช้ยูทิลิตี rm?


สำหรับเครื่องมือในการกู้คืนไฟล์ที่ถูกลบ (ในรูปแบบใด ๆ ) คุณสามารถดูคำถามนี้askubuntu.com/q/3883
Decio Lira

อย่าใช้ "rm" หากคุณต้องการกู้คืนไฟล์ในอนาคตคุณสามารถใช้ยูทิลิตี "rm-trash": github.com/nateshmbhat/rm-trash
Natesh bhat

คำตอบ:


63

ด้วยเหตุนี้ฉันจึงใช้trash-cliแพ็คเกจและนามแฝงต่อไปนี้ใน~/.bashrc

alias rm=trash

และtrash-cliแพคเกจที่สามารถติดตั้งโดยคำสั่ง followoing sudo apt-get install trash-cliนี้:

ไฟล์ที่คุณลบจะถูกย้ายไปที่ถังขยะและคุณสามารถดูได้ในถังขยะหอยโข่ง

คุณสามารถเข้าถึงของจริงได้ตลอดเวลาrmโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:

command rm something
'rm' something
\rm something

นอกจากนี้ยังมีคำสั่งในการเข้าถึงถังขยะจากขั้วtrash-list, restore-trash(หรือtrash-restore) trash-emptyติดตั้งแพคเกจจากถังขยะ CLI (แล้วดูหน้าคนของพวกเขา)

บันทึกล่าสุดไม่แนะนำให้ใช้นามแฝงดังกล่าวสำหรับผู้ใช้ระดับสูงเนื่องจากอาจรบกวนการทำงานของระบบ


19
มันเป็นการแก้ปัญหา แต่ไม่ได้ตอบคำถามจริงๆ
evgeny

ฉันคิดว่าผู้ใช้จะรู้ด้วยหากมีวิธีการบางอย่างเพื่อให้ได้พฤติกรรมเดียวกันจากบรรทัดคำสั่ง ถ้าไม่ฉันพร้อมที่จะลบคำตอบของฉัน
enzotib

3
ดี. ฉันได้รับความรู้
user3215

27

การลบจากเทอร์มินัลจะลบอย่างถาวร - การกู้คืนยากมากและบางครั้งเป็นไปไม่ได้

ถ้าชนิดพาร์ทิชันของคุณext3(ตรวจสอบโดยใช้System->Administration->Disk Utility) จากนั้นจะดูที่ext3undel

ถ้าไม่ใช่ (ถ้าคุณติดตั้ง Ubuntu ด้วยการตั้งค่าเริ่มต้น ) ให้ลองใช้extundeleteโปรแกรม

ไม่มีการรับประกันว่าคุณจะกู้คืนอะไรได้


มันจะมีประโยชน์มากสำหรับรุ่นเดสก์ท็อป
user3215

ฉันสงสัยว่าสิ่งนี้ทำงานได้อย่างมีประสิทธิภาพสำหรับไดรฟ์ SSD แต่ยินดีที่จะได้ยินเป็นอย่างอื่น
แมตต์

13

คุณกำลังมองหา: extundelete - ยูทิลิตี้เพื่อกู้คืนไฟล์ที่ถูกลบจากพาร์ติชัน ext3 / ext4

หากต้องการค้นหาแพ็คเกจดังกล่าวคุณสามารถลอง: apt-cache search undelete

วิธีใช้งานยูทิลิตี้ติดตั้งด้วย: sudo apt-get install extundelete

หลังจากการติดตั้งเรียกใช้man extundeleteและศึกษาอย่างรอบคอบ


6

เช่นเดียวกับทางเลือกอื่นหากคุณทราบว่าเป็นไฟล์ประเภทใด ...

sudo apt-get install foremost

ตอนนี้เปิดขึ้น/etc/foremost.confแล้วคุณจะเห็นรายการความคิดเห็นยาว ๆ หากประเภทไฟล์ของคุณมีอยู่ให้ยกเลิกการใส่เครื่องหมายในบรรทัด (คุณอาจต้องการลบบรรทัดที่ไม่เกี่ยวข้องออก)

หากประเภทไฟล์ของคุณไม่มีอยู่ให้เพิ่มบรรทัดของคุณเอง บอกว่าฉันต้องการกู้คืนไฟล์. css และฉันรู้ว่ามันมีขนาดประมาณ 40K ฉันสามารถเพิ่มสิ่งนี้ได้:

css     n       40000   Theme\sName:     Plugin\sFixes

คอลัมน์ที่สองอ้างอิงถึงตัวพิมพ์ใหญ่และตัวเล็กคอลัมน์ที่สามอ้างถึงขีด จำกัด สูงสุดของขนาดคอลัมน์ที่ 4 คือวิธีที่ไฟล์เริ่มต้น (อย่าลืมใช้อักขระที่ใช้ Escape) และคอลัมน์สุดท้ายเป็นวิธีที่ไฟล์จะสิ้นสุด

ใช้คำสั่งต่อไปนี้ (แก้ไขดิสก์ตามนั้นสามารถตรวจสอบด้วยdfคำสั่ง)

foremost -v -T -c /etc/foremost.conf -i /dev/sda -o output

สิ่งที่จะเกิดขึ้นต่อไปคือสิ่งที่สำคัญที่สุดจะสร้างโฟลเดอร์ที่เรียกว่าเอาต์พุตและดัมพ์ข้อมูลที่กู้คืนทั้งหมด (ในกรณีนี้) ลงในโฟลเดอร์ จากตรงนั้นคุณสามารถใช้diffหรือmeldเพื่อเปรียบเทียบ 'ไฟล์' ที่กู้คืนแล้วดูว่าเป็นรุ่นล่าสุด


ขอบคุณมาก. มันทำงานได้อย่างสมบูรณ์ ฉันลบphpไฟล์ต้นฉบับโดยไม่ได้ตั้งใจrm -fr php/ด้วยphpไฟล์2 ไฟล์ น้อยกว่า 2 นาทีพวกเขาก็หายดี ใน.confไฟล์ที่ฉันเพิ่ม:php n 40000 <?php ?> ASCII
Shakiba Moshiri

5

พูดในแง่นามธรรมมากที่สุดเมื่อใดก็ตามที่คุณลบไฟล์บนอินเตอร์เฟซแบบกราฟิก, ไฟล์จะ "ย้าย" เพื่อพิเศษ "กันชน" trashไดเรกทอรีที่เรียกว่า คุณสามารถค้นหานั้นไว้ในไดเรกทอรีhome ~/.local/share/Trash/ไฟล์ "ลบ" จากไดเรกทอรีนี้จะถูกลบจริงๆ การลบที่แท้จริงนี้คือสิ่งที่เกิดขึ้นเมื่อคุณใช้rmกับไฟล์

มันยากมากที่จะกู้คืนไฟล์ที่ถูกลบ ไฟล์ในระบบไฟล์จะแสดงเป็นโหนดบน B-tree หรือไฟล์ที่คล้ายกัน เมื่อไฟล์ถูกลบโดยใช้rmทรีจะได้รับการอัปเดตจำนวนฮาร์ดลิงก์จะลดลงรายการที่เกี่ยวข้องในรายการไดเรกทอรีจะถูกลบออก หากไฟล์ของคุณมีการเชื่อมโยงอย่างหนักไฟล์ของคุณจะปลอดภัยอย่างแน่นอน file / -samefile filenameคุณสามารถทำ คุณสามารถค้นหาไฟล์ได้หากคุณจำหมายเลข inode ของมันได้เช่นกัน

อีกกรณีหนึ่งคือเมื่อไม่มีความเป็นไปได้ข้างต้นเป็นจริง เมื่อใดก็ตามที่คุณrmไฟล์รายการไฟล์ในไดเรกทอรีจะถูกลบออกลดจำนวนของการเชื่อมโยงโดยหนึ่ง และถ้าจำนวนของฮาร์ดลิงก์ลดลงเป็นศูนย์ตัวชี้ไปยังไฟล์บนไอโหนดจะถูกดร็อปหรือถูกทำเครื่องหมายว่าถูกลบ ไม่ว่าจะด้วยวิธีใดไฟล์ของคุณ "นิ่ง" จะอยู่ในฮาร์ดดิสก์ ไฟล์จะถูกลบออกจากฮาร์ดไดรฟ์ในครั้งต่อ ๆ ไปเท่านั้น การกู้คืนไฟล์ในเวลานั้นยากมากเกี่ยวข้องกับการผ่านแผนผังระบบไฟล์และ inodes ที่เป็นตัวแทนของตำแหน่งบล็อกดิสก์ มีเครื่องมือที่นิยมผมเคยได้ยิน extundeleteแต่ไม่เคยใช้มันเรียกว่าเป็น แม้ว่าจะไม่มีการรับประกัน แต่ก็คุ้มค่าที่จะลอง

เมื่อคุณกู้คืนไฟล์สำเร็จหรือไม่ให้รีบทำการสำรองข้อมูลตามปกติ มันง่ายมากบน Ubuntu


2

ขออภัยไฟล์ที่ถูกลบออกจากบรรทัดคำสั่งด้วย "rm" และ "rm -f" จะข้าม "Trashcan" ที่คุณมีบนเดสก์ท็อป Gnome

คุณอาจต้องการถามว่ามีเครื่องมือ "ยกเลิกการลบ" ส่วนขยายหรือไม่เช่นเดียวกับ FAT และ NTFS (ฉันไม่รู้อะไรเลย แต่ฉันจะแปลกใจถ้าไม่มี)


โอ้ ... ไม่เป็นไร! ฉันคิดว่ามันสามารถกู้คืนได้จากบางสถานที่
user3215

1

ใช้ยูทิลิตี" rm-trash " ซึ่งจัดการทำให้พวกมันเป็นถังขยะสำหรับการดึงในภายหลังและรองรับตัวเลือกทั้งหมดของคำสั่ง "rm"

sudo add-apt-repository ppa:nateshmbhat/rm-trash
sudo apt-get update
sudo apt-get install rm-trash

"rm-trash" คือ

  • ตั้งใจจะใช้แทน rm
  • จัดการกับตัวเลือกทั้งหมดที่ rm สามารถใช้
  • จัดการการชนชื่อไฟล์ด้วยไฟล์ที่อยู่ในถังขยะ
  • จัดการปัญหาสิทธิ์บางอย่างโดยอัตโนมัติ
  • หาก rm ถูกเรียกใช้จากสคริปต์อื่นหรือโดยอ้อมคำสั่ง 'rm' ของระบบจะถูกใช้โดยอัตโนมัติ
  • แสดงข้อความแสดงข้อผิดพลาดที่เหมาะสมเช่นที่เกิดขึ้น rm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.