ฉันใช้rm
ไฟล์ที่ฉันไม่ต้องการลบโดยบังเอิญ มีวิธีใดบ้างที่ฉันจะนำมันกลับมาใช้ภายใต้ Linux
ฉันใช้rm
ไฟล์ที่ฉันไม่ต้องการลบโดยบังเอิญ มีวิธีใดบ้างที่ฉันจะนำมันกลับมาใช้ภายใต้ Linux
คำตอบ:
ต่อไปนี้เป็นขั้นตอนทั่วไปในการกู้คืนไฟล์ข้อความ
ขั้นแรกให้ใช้คำสั่ง wall เพื่อบอกผู้ใช้ว่าระบบกำลังหยุดทำงานในโหมดผู้ใช้คนเดียว:
# wall
System is going down to .... please save your work.
กด CTRL + D เพื่อส่งข้อความ
ใช้คำสั่ง init 1 เพื่อนำระบบไปใช้ในโหมดผู้ใช้คนเดียว:
# init 1
การใช้ grep (วิธี UNIX แบบดั้งเดิม) เพื่อกู้คืนไฟล์
ใช้ไวยากรณ์ grep ต่อไปนี้:
grep -b 'search-text' /dev/partition > file.txt
หรือ
grep -a -B[size before] -A[size after] 'text' /dev/[your_partition] > file.txt
ที่ไหน
-i : Ignore case distinctions in both the PATTERN and the input files i.e. match both uppercase and lowercase character.
-a : Process a binary file as if it were text
-B Print number lines/size of leading context before matching lines.
-A: Print number lines/size of trailing context after matching lines.
ในการกู้คืนไฟล์ข้อความที่ขึ้นต้นด้วยคำว่า "nixCraft" บน / dev / sda1 คุณสามารถลองใช้คำสั่งต่อไปนี้:
# grep -i -a -B10 -A100 'nixCraft' /dev/sda1 > file.txt
ใช้ vi เพื่อดูไฟล์ต่อไป
วิธีนี้มีประโยชน์เฉพาะถ้าไฟล์ที่ถูกลบเป็นไฟล์ข้อความ หากคุณใช้ระบบไฟล์ ext2 ลองใช้คำสั่งกู้คืน
พบได้ที่http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
init 1
sshd
ฉันยังคิดว่า ณ จุดนี้คุณควรจะประกอบระบบไฟล์ RO ทั้งหมดและบันทึกเป็น tmpfs (สมมติว่าไฟล์ temp ของคุณจะพอดีกับ ram) เพื่อหลีกเลี่ยงการเขียนทับไฟล์ด้วยข้อมูล temp แน่นอนคุณจะต้องคัดลอกที่อื่นในภายหลังไม่ว่าจะเป็นเซิร์ฟเวอร์ระยะไกลหรือกลับไปที่ระบบไฟล์ในท้องถิ่นหลังจากที่พวกเขาเล่าให้ใหม่ RW
dd
และลองค้นหาไฟล์ที่อยู่ภายใน (โดยใช้grep
หรือตัวแก้ไข)แก้ไข: บางครั้งทำงานได้ดีกว่าddrescue
dd
หากระบบแฟ้มของคุณเป็นext3ใช้ext3grep
คำตอบเดียวที่ถูกต้องคือกู้คืนไฟล์ของคุณจากการสำรองข้อมูล ทุกคนต้องมีข้อมูลสำรอง สำหรับไฟล์ที่สำคัญมากคุณควรมีข้อมูลสำรองสองชุด คุณทำไม่ได้ แย่มากด้วยนี่คือบทเรียนที่ได้เรียนรู้ (ขออภัยที่ฟังดูแย่ แต่ฉันอยู่ในที่จัดเก็บข้อมูลและผู้คนไม่ได้สำรองข้อมูลจนกว่าพวกเขาจะสูญเสียข้อมูลสำคัญบางอย่างนั่นเป็นข้อเท็จจริงที่ให้มาใช่คุณดูโง่ แต่ ก็เกือบทุกคนแล้ว)
ตกลงคุณไม่มีข้อมูลสำรอง คุณต้องหยุดการใช้ระบบไฟล์ที่มีไฟล์RIGHTทันที กิจกรรมใด ๆ ที่เขียนแน่นอนอาจท่อแฟ้มข้อมูลที่อาจ (เฉพาะอาจ ) ยังคงอยู่บนดิสก์
หากคุณทำข้อผิดพลาดที่น่าเศร้าให้ใช้เพียงพาร์ติชันเดียวเป็นทั้งระบบไฟล์รูทและ / home นั่นหมายความว่าคุณต้องบูตจากอุปกรณ์อื่น ตอนนี้
หากไฟล์ของคุณเป็นรูปแบบบางอย่างที่พบบ่อย (ไฟล์ Word, JPG, ฯลฯ ) ใช้PhotoRec Photorec สามารถดึงไฟล์ได้หลายรูปแบบ
คุณสามารถลองใช้วิธีการ "ext3 ยกเลิกการลบ" ที่เสนอก่อนหน้านี้ แต่คุณจะต้องคุ้นเคยกับบรรทัดคำสั่งเข้าใจการทำงานพื้นฐานของ linux ภายในเป็นต้น
หากไฟล์ของคุณอยู่ในรูปแบบพิเศษขอให้โชคดี ฉันเคยเขียนโปรแกรม Perl เพื่อสแกนไดรฟ์สำหรับไฟล์พิเศษบางไฟล์และมันก็ใช้งานได้ดี แต่คุณจะต้องรู้จักการเขียนโปรแกรมเพื่อทำเช่นนั้นและใช้งานได้อย่างสบายใจกับ linux
ฉันทำสิ่งนี้เมื่อสองสามปีก่อน วิธีการของฉันคือโดยตรงไม่ต้องเสียเวลายกเลิกการต่อเชื่อมพาร์ติชันแล้ว
dd if=/dev/hda1 of=backup_image.ext3
เพื่อมีไฟล์สำรองข้อมูลของสถานะที่แน่นอนของพาร์ติชัน จากนั้นคุณสามารถติดตั้งพาร์ติชันอีกครั้งและดำเนินธุรกิจต่อไปตามปกติเมื่อคุณค้นหาไฟล์ที่ถูกลบในภาพที่สร้างขึ้น รูปภาพอาจมีขนาดใหญ่มากเนื่องจากคุณต้องการพื้นที่ "ว่าง" ทั้งหมดดังนั้นจึงอาจเป็นปัญหาในทางปฏิบัติในการจัดเก็บ
จากนั้นเป็นเพียงการค้นหาที่น่าเบื่อหลังจากตัวอย่างข้อความที่ฉันคาดว่าจะอยู่ที่ไหนสักแห่งในเนื้อหาของพาร์ติชัน เช่นในการค้นหา. ไฟล์เท็กซ์ฉันวิ่ง
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
ซึ่งพิมพ์บริบทขนาดใหญ่รอบวลี "ส่วนย่อย" และบันทึกผลลัพธ์ไปยังไฟล์ที่จะค้นหาด้วยตนเอง ฉันพิมพ์บริบทขนาดใหญ่เช่นนี้เนื่องจากใช้เวลานานมากในการค้นหาภาพที่ฉันไม่ต้องการทำมากกว่าเวลาที่ฉันต้องทำ
นอกจากนี้คำสั่งstrings
ยังมีประโยชน์ในการลบขยะไบนารีออกจากผลลัพธ์ แต่ถ้าฉันจำได้อย่างถูกต้องมันก็จะทำการขึ้นบรรทัดใหม่ทั้งหมดซึ่งอาจเป็นปัญหาได้
ในการค้นหาไฟล์ไบนารีด้วยวิธีเดียวกันอาจประสบความสำเร็จในการค้นหาส่วนหัวของลักษณะหรือบางสิ่งบางอย่างของไฟล์บางอย่าง แต่ฉันคิดว่ามันจะเป็นการผจญภัยที่ยิ่งใหญ่
หมายเหตุทางเทคนิคโดยย่อ: มีปัญหาทางเทคนิคกับการกู้คืนดิสก์และ Ext3 / 4 มันเป็นเรื่องยาวที่จะอธิบาย แต่สั้น ๆ (และไม่เพียงพอ): Ext3 / 4 จะลบ "เครื่องหมาย" ที่บอกระบบปฏิบัติการว่าไฟล์อยู่ที่ไหนในดิสก์เมื่อคุณลบ ไฟล์ไม่ได้ถูกขัด แต่ไม่มีใครรู้ว่าอยู่ที่ไหนบนดิสก์ที่พวกเขาเริ่มต้นและสิ้นสุดอีกต่อไปและบางครั้งพวกเขาก็มีการแยกส่วนที่หลายแห่ง ระบบไฟล์อื่นบางระบบเพียงตั้งสถานะของไฟล์เป็น "ลบ" แต่เก็บข้อมูลตำแหน่งไว้ จากนั้นการยกเลิกการลบจะไม่ยากกว่าการดูตัวชี้ไฟล์ด้วยธงนี้ (ควรจะยังคงพร้อมใช้งานหากไม่เกิดกิจกรรมมากเกินไป) และหวังว่าเนื้อหาของพวกเขาจะไม่ถูกเขียนทับ
อะไรดีที่สุด? วาทศิลป์ในมุมมองของฉัน การสำรองข้อมูลเป็นประจำคือคำตอบสำหรับปัญหาเหล่านี้ทั้งหมด ข้อมูลสำคัญที่ไม่มีระบบสำรองข้อมูลอัตโนมัติคืออุบัติเหตุที่เกิดขึ้น IMHO
บังคับเรื่องเล็ก ๆ น้อยส่วนบุคคล: ฉันกำลังจะไปเอาจากfoo\ foo*
~
ฉันเขียน
rm -r foo<Tab>*
ซึ่งน่าเศร้าเนื่องจากfoo
เห็นได้ชัดว่าเป็น symlink และเป็นไฟล์เดียวที่จับคู่สิ่งนี้เชลล์จึงสร้างขึ้น
rm -r foo\ foo *
ฉันกด Enter แล้วนั่งดูที่คำสั่งซึ่งควรใช้เวลาไม่เกินวินาที หลังจากที่เวลาอีกนิดrm
ถามฉันว่าฉันต้องการ "เพื่อลบไฟล์ป้องกันการเขียน 'บางสิ่งบางอย่าง". Ctrl+c
ได้อย่างรวดเร็วมากฉันรู้สึกหนาวสั่นและเบาและมีการควบคุมมากผมกด ~ ครึ่งหนึ่งของฉัน~
ถูกลบ แต่ฉันจัดการเพื่อให้ได้คุณค่าทุกอย่างผ่านการอธิบายข้างต้น grepping อธิบายและสำรองข้อมูลปัจจุบันมากขึ้นหรือน้อยลง ฉันมีค่าส่วนบุคคลมาก (อ่าน: ใช้เวลานาน) และข้อมูลการวัดล่าสุดบนดิสก์ที่หายไป แต่ฉันได้สำรองข้อมูลสี่เท่า คนหนึ่งหายไปจากที่นี่อีกคนหนึ่งเนื่องจากระบบดับที่โรงเรียนอีกรายการหนึ่งเสียหายและในตอนแรกฉันไม่สามารถหาที่สี่ได้เพราะฉันใส่ผิดในโฟลเดอร์ผิด :-D ไม่ได้rm -r
ได้ติดอยู่ในไฟล์ป้องกันการเขียนที่สี่จะได้รับการกินตั้งแต่โฟลเดอร์ที่ติดตั้งผ่านทาง sshfs ~
ในของฉัน ฉันระมัดระวังมากขึ้นเกี่ยวกับสิ่งนั้นตั้งแต่
หากเป็นrmมาตรฐานฉันหวังว่าคุณจะมีข้อมูลสำรอง ขั้นตอนการกู้คืนไฟล์ที่ถูกลบจะแตกต่างกันไปในแต่ละระบบไฟล์หากสามารถทำได้เลย Linux ไม่มี "ถังรีไซเคิล" ในตัว; เมื่อคุณลบไฟล์ทุกอย่างจะหายไป
ไม่ว่าคุณจะทำสิ่งใดคุณจะต้องถอดปลั๊กคอมพิวเตอร์ออกโดยเร็วที่สุดเท่าที่จะทำได้เพื่อให้คอมพิวเตอร์ทำงานต่อไป (แม้จะปิดเครื่อง) ทำให้เกิดการเขียนลงดิสก์และเพิ่มโอกาสที่บล็อกบางส่วนจะถูกครอบครองโดย ไฟล์จะถูกเขียนทับ เมื่อคุณดำเนินการเสร็จแล้วให้นำไปไว้ในคอมพิวเตอร์เครื่องอื่นรีบูทสดซีดี (อย่าลืมติดตั้งไดรฟ์เว้นแต่คุณจะเมานต์แบบอ่านอย่างเดียว) หรือถอดฮาร์ดไดรฟ์แล้วนำไปยังผู้เชี่ยวชาญด้านการกู้คืนข้อมูล
ตั้งความคาดหวังของคุณต่ำ หากมีสิ่งใดถูกเขียนทับข้อมูล 'ถูกลบ' คุณจะสูญเสียมันไป
ฉันได้ทำการกู้คืนจำนวนเล็กน้อยและเครื่องมือที่ดีที่สุดที่ฉันพบมักได้รับการออกแบบสำหรับรูปแบบบางอย่าง เช่น 'photorec' นั้นยอดเยี่ยมเมื่อฉันต้องการกู้ jpegs นับหมื่น
Recuvaยังช่วยฉันก่อนหน้านี้และอาจเป็นทางเลือกที่ดีที่สุดของคุณ (มันฟรีไม่โดนหลอกให้จ่ายโดยโฆษณาของพวกเขา)
ในตอนท้ายของวันหากสิ่งที่คุณทำหายไปเป็นสิ่งสำคัญให้ขับรถออฟไลน์และหยุดเขียน ใช้ซอฟต์แวร์กู้คืนทุกชิ้นที่คุณสามารถหาได้จนกว่าคุณจะได้รับข้อมูลคืนหรือไม่คุ้มค่า ถ้ามันสำคัญจริงๆส่งให้มืออาชีพในราคาสูง
หากคุณเคยโชคกับเครื่องมือมาลองใช้มันดูอีกครั้งตามที่คุณคุ้นเคย ในตอนท้ายของวันพวกเขาไม่ควรเขียนลงดิสก์และคุณสามารถใช้ซอฟต์แวร์ได้จนกว่าคุณจะพบซอฟต์แวร์ที่ใช้งานได้
นี่คือเอกสารที่ดีสำหรับคุณ คุณจะพบกับเคล็ดลับการปฏิบัติมากมาย
BTW มีคนสองกลุ่ม:
ขอแสดงความยินดีคุณเพิ่งเลื่อนระดับเป็นกลุ่ม 2 ;-)
หากคุณมีแอปพลิเคชั่นที่เปิดอยู่ซึ่งกำลังอ่านไฟล์อยู่เช่น VLC หรือ LibreOffice คำตอบ L & U.SO ที่ยอดเยี่ยมนี้ช่วยฉันออกจากความยุ่งเหยิงนี้ นี่คือวิธีการทางเลือกสำหรับการทำเช่นเดียวกัน
แนวคิดทั่วไปคือการค้นหาลิงค์/proc/PID/fd/DESCRIPTOR_NUMBER
และคัดลอกกลับไปที่ตำแหน่งเดิม ใช้ps aux | grep APP_NAME
เพื่อค้นหา PID จากนั้นls -la /proc/PID/fd/
ค้นหา DESCRIPTOR_NUMBER ที่เหมาะสม
คำตอบ "ถูกต้อง" คือสมมติว่าไม่มีวิธีการกู้คืนที่เชื่อถือได้และกู้คืนจากการสำรองข้อมูลหรือระบบโคลนหรือติดตั้งแทน
TestDisk เป็นเครื่องมือที่ยอดเยี่ยมและมีวิธีอื่น ๆ ในการกู้ข้อมูลบางอย่างจากไดรฟ์ทางกายภาพขึ้นอยู่กับระบบไฟล์และความใหม่ของการลบ แต่เวลาและความเจ็บปวดที่เกี่ยวข้องอาจจะมากเกินไปดังนั้นKEEP BACKUPS (และทดสอบด้วย) พวกมันใช้ได้จริงและ restorable)!
หากผู้ใช้รายอื่นไม่ได้เขียนทับแสดงว่าคุณโชคดี ฉันลบไฟล์ต้นฉบับ cpp โดยไม่ได้ตั้งใจและใช้เครื่องมือที่เรียกว่าสำคัญที่สุดซึ่งช่วยให้ฉันเรียกคืนเศษซาก cpp 60G จากดิสก์ ในที่สุดฉันก็กู้คืนไฟล์ของฉันโดยการประกอบชิ้นส่วนเหล่านั้นทีละชิ้น ฉันคิดว่ามันสแกนรูปแบบบางอย่างสำหรับประเภทไฟล์ที่เฉพาะเจาะจงและสำรวจ inodes ทั้งหมดบนดิสก์เพื่อกู้คืนไฟล์! ลองดูสิ!
หากคุณลบไฟล์ออกจาก Linux โดยไม่ตั้งใจคุณสามารถใช้คำสั่งนี้:
find /root -name "search text" -type f -exec mv {} "/home" \;
ในสถานที่ของคุณสามารถใส่ชื่อไฟล์และไดเรกทอรีสามารถระบุตำแหน่งที่คุณต้องการที่จะเรียกคืนในสถานที่ของsearch text
/home
คุณสามารถลองใช้สคริปต์นี้ ใช้งานได้ดีและตั้งใจจะใช้แทน rm และ im ที่ใช้กันอย่างแพร่หลายในตอนนี้
https://github.com/nateshmbhat/safe-rm
rm
ฉันมีปัญหาเดียวกันเมื่อสัปดาห์ที่แล้วและฉันลองใช้โปรแกรมมากมายเช่น debugfs, photorec, ext3grep และ extundelete ext3grep เป็นโปรแกรมที่ดีที่สุดในการกู้คืนไฟล์ sintax นั้นง่ายมาก:
ext3grep image.img --restore-all
หรือ:
ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’
วิดีโอนี้แสดงให้เห็นเป็นแบบย่อส่วนที่สามารถช่วยคุณได้
rm
เป็นคำสั่ง "อันตราย" UNIX / Linux (อ่าน$ man rm
) ใช้ด้วยความระมัดระวังอย่างยิ่ง ด้วยวิธีที่กล่าวมามันเป็นวิธีที่รวดเร็วในการลบไฟล์ที่คุณมั่นใจ สภาพแวดล้อม Linux และ Unix บนเดสก์ท็อปสมัยใหม่มีวิธีการแก้ปัญหา"ถังขยะ"เพื่อให้ผู้ใช้สามารถกู้คืนไฟล์ที่ถูกลบโดยไม่ตั้งใจได้อย่างง่ายดาย