เลิกทำคำสั่ง“ rm -rf ~” หรือไม่


115

ฉันมีโฟลเดอร์ที่ฉันไม่ต้องการชื่อ '~' ดังนั้นจากบรรทัดคำสั่งที่ฉันพิมพ์

rm -rf ~

และลบโฟลเดอร์บ้านของฉันโดยไม่ตั้งใจ (ตั้งแต่ ~ แก้ไขเป็น / home / ชื่อผู้ใช้) มีวิธีใดบ้างที่ฉันจะต้องสร้างบัญชีขึ้นใหม่หรือไม่?


18
ระบบไฟล์อะไร
Tarnay Kálmán

6
เห็นได้ชัดว่าคุณคนไม่มีอารมณ์ขัน
Blomkvist

21
แม้ว่าสิ่งนี้จะไม่ตอบคำถามของคุณโดยตรง แต่การrm -rf "~"เสนอราคาจะค้นหาชื่อที่แท้จริงแทนการขยายออก แต่ฉันจะกลัวที่จะใช้สิ่งนั้นต่อไป - ฉันจะใช้บางอย่างเช่นlsหรือcdก่อนเพื่อตรวจสอบว่าฉันได้รับ dir ที่เหมาะสมหรือลบโฟลเดอร์จากตัวจัดการไฟล์ GUI อาจเปลี่ยนชื่อ dir ( mv "~" tilde) ก่อนจากนั้นตรวจสอบแล้วลบ
Henrik N

2
สำหรับอนาคตอย่าใช้ rm แบบโต้ตอบที่บรรทัดคำสั่ง ใช้ยูทิลิตีอย่างถังขยะและคุณ 1) ไม่สามารถทำผิดพลาดซ้ำอีกครั้งและ 2) ไม่สามารถทำความคุ้นเคยกับนามแฝงของ rm ที่ไม่ดีซึ่งจะทำให้คุณเดือดร้อน
Fred Nurk

9
@HenrikN: ./~ แทนที่จะเป็น "~" ทำสิ่งเดียวกัน แต่ยังสามารถใช้งานร่วมกับชื่อไฟล์ที่มีปัญหาอื่น ๆ ได้เช่นพวกที่เริ่มต้นด้วยเครื่องหมายขีดกลางและตัวเลือก
Fred Nurk

คำตอบ:


148

โดยทั่วไปแล้วไม่มีวิธีที่ง่ายกลับ

คุณสามารถกู้คืนจากการสำรองข้อมูลรายวันของคุณ


194
หมายเหตุของคุณเกี่ยวกับการสำรองข้อมูลนั้นโหดร้ายและตรงประเด็น 100%
Benjamin Bannier

3
OS X ชุดบาร์สำหรับวิธีการสำรองข้อมูลควรทำงาน (โดยเฉพาะอย่างยิ่งกับ Time Capsule) ดูmaketecheasier.com/สำหรับคำแนะนำวิธีการได้รับสิ่งเดียวกันกับ Ubuntu
Thorbjørn Ravn Andersen

4
@ Thorbjørn Ravn Andersen - ทำได้ยกเว้นเมื่อ Time Machine มีอาการทางประสาท ฉันมีเครื่องย้อนเวลาที่ประหลาดในตัวฉันสองครั้งในหกเดือน
ชื่อปลอม

การสำรองข้อมูลนอกสถานที่นั้นยอดเยี่ยมมาก ฉันใช้Backblaze (Mac / Windows) ในราคา $ 5 / คอมพิวเตอร์ / เดือน หลายคนดูเหมือนจะชอบCrashplan (Mac / Windows / Linux)
Henrik N

23
ทุกวันอะไร ???
Luc M

66

อื่น ๆ (เช่น@RiMMER , @Adamและ@James T ) ได้กล่าวว่าสำหรับระบบไฟล์ส่วนใหญ่ก็เป็นไปได้ที่จะกู้คืนส่วนใหญ่หรือทั้งหมดของข้อมูลของคุณ (อาจจะโดยไม่ต้องชื่อไฟล์) เพราะข้อมูลที่ไม่จริงออกพุ่งออกเท่านั้น จากไฟล์ตาราง นี่ไม่ได้เป็นเพียงเรื่องจริงของ Linux แต่อย่างเดียวกับ Windows และ Mac

อย่างไรก็ตามไม่มีใครพูดถึงสิ่งที่สำคัญที่สุด - ปิดคอมพิวเตอร์ของคุณ ตอนนี้ .

โปรแกรมหลายโปรแกรมรวมถึงอินเทอร์เน็ตเบราว์เซอร์ที่คุณใช้อยู่ในขณะนี้จะทำการแคชข้อมูลไปยังฮาร์ดไดรฟ์และสิ่งใดก็ตามที่คุณทำอาจทำให้คอมพิวเตอร์ของคุณปรับขนาด / เขียนลงในไฟล์ swap ทั้งสองสิ่งนี้จะเขียนถึงส่วนที่ไม่เสียค่าใช้จ่ายในฮาร์ดไดรฟ์ซึ่งอาจเขียนทับข้อมูลอันมีค่าของคุณ

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


11
แม้แต่กระบวนการปิดเครื่องก็ยังสามารถเขียนลงฮาร์ดไดรฟ์ได้ ผมลังเลที่จะขอแนะนำให้ทันทีถอดปลั๊กคอมพิวเตอร์ของคุณเพราะที่แน่นอนสามารถทำสิ่งที่มากแย่ลง แต่ ... ดีขึ้นอยู่กับวิธีการที่สำคัญข้อมูลที่คุณอาจต้องการที่จะต้องพิจารณามัน
BlueRaja - Danny Pflughoeft

1
ขึ้นอยู่กับจุดไดรฟ์ / OS / จุดเชื่อมต่ออาจเป็นไปได้ที่จะยกเลิกการต่อเชื่อมและ / หรือติดตั้งใหม่แบบสดๆโดยไม่ต้องปิดเครื่องพีซีจากนั้นปิดเครื่อง ฯลฯ
Matthew Scharley

1
killall rmแทนที่จะปิด
Fred Nurk

1
ขึ้นอยู่กับว่าโฮมไดเร็กตอรี่ของคุณใหญ่แค่ไหนและฮาร์ดไดรฟ์ของคุณใหญ่แค่ไหนโอกาสในการเขียนเซกเตอร์ฟรีที่มีข้อมูลของคุณค่อนข้างเบาบาง
Mike Speed

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

13

ฉันเชื่อว่าผู้ใช้ linux ทุกคนในเวลาหนึ่งต้องเรียนรู้บทเรียนที่เจ็บปวดนี้ก่อนที่จะเรียนรู้ถึงความสำคัญของการสำรองข้อมูลรวมถึงการใส่ใจในรายละเอียดและความระมัดระวัง

ตัวอย่างเช่นหากคุณลบไฟล์ที่มีการดูแปลก ๆ คุณสามารถเรียกใช้คำสั่งในไฟล์ที่แปลกกว่านั้นซึ่งไม่มีผลข้างเคียงและไม่ทำการเปลี่ยนแปลงข้อมูลของคุณ ตัวอย่างเช่นคุณเคยวิ่ง

cd ~

ก่อนที่จะพยายามลบโฟลเดอร์คุณจะเห็นว่ามันจะเปลี่ยนไดเรกทอรีไปยังโฟลเดอร์บ้านของคุณแทนที่จะเป็น~โฟลเดอร์ เมื่อคุณทำตามขั้นตอนการแก้ไขปัญหาเพียงพอที่จะเรียนรู้คำสั่งจริงคุณจะต้องถูกต้องcdลงใน~โฟลเดอร์จากนั้นคุณสามารถกดปุ่มลูกศรขึ้นเพื่อดึงคำสั่งสุดท้ายจากประวัติแล้วเปลี่ยนcdเป็นrmและจากนั้นลองลบโฟลเดอร์ .

ฉันขอแนะนำให้ทำตามขั้นตอนนี้ก่อนที่จะทำการกระทำใด ๆที่เป็นการถาวร มันไม่ได้ถาวรหรือเข้าใจผิดได้ แต่คุณมีโอกาสที่ดีกว่าในการป้องกันช่วงเวลาเหล่านั้นหากคุณได้รับการดูแลในระดับนี้เมื่อทำการกระทำที่มีผลข้างเคียง


4
มองก่อนที่คุณจะกระโดดและก่อนที่คุณจะls rm
LawrenceC

7

หากคุณกำลังใช้ระบบไฟล์ ext3 ดังนั้นext3grepเป็นเพื่อนที่ดีที่สุดของคุณ กวดวิชาที่ดี (คนอื่น) เกี่ยวกับการใช้ ext3grep สามารถพบได้ที่นี่


6

คุณสามารถลองใช้TestDiskเพื่อยกเลิกการลบไฟล์แต่ละไฟล์ ลักษณะนี้ใช้งานได้กับ ext2 และ NTFS เท่านั้น (แต่ก็คุ้มค่าที่จะลอง)

หากคุณมี ext3 หรือ ext4 คุณสามารถกู้คืนไฟล์ที่รู้จักโดยใช้photorecซึ่งอาจจะเป็นการกู้คืนมากกว่าที่คุณต้องการ Photorec กู้คืนไฟล์โดยไม่มีข้อมูลชื่อไฟล์ดังนั้นจึงน่าเบื่อที่ต้องผ่านไฟล์ต่างๆ


4

หากคุณมีไดรฟ์ภายนอกที่ใหญ่พอคุณอาจมีตัวเลือกอื่นที่ปลอดภัยที่สุด คุณจะต้องมีพื้นที่เพียงพอในการจัดเก็บพาร์ติชันทั้งหมดรวมถึงพื้นที่ว่าง

บูตจากซีดีและอย่าติดตั้งไดรฟ์ที่บ้านเลย เมาท์ไดรฟ์ภายนอก dd พาร์ติชันไดรฟ์โฮมเป็นไฟล์บนไดรฟ์ภายนอก เมานต์ไฟล์เป็นอุปกรณ์ย้อนกลับทำงานในการยกเลิกการลบภาพนี้ปลอดภัยในความรู้ที่คุณไม่สามารถทำความเสียหายให้กับระบบไฟล์ดั้งเดิมของคุณ ขึ้นอยู่กับระบบไฟล์อาจมีหลายสิ่งหลายอย่างที่จะลองบางคนอาจเป็นอันตราย

สิ่งนี้ช่วยฉันได้ครั้งหนึ่งด้วย Reiser4 รุ่นเบต้าเมื่อฉันไม่รู้ว่าจะทำอย่างไรแม้ว่าฉันจะเมานต์อ่านอย่างเดียว ฉันอ่านที่ไหนสักแห่งในเวลาที่บันทึกประจำวันยังคงเป็นไปได้

นอกจากนี้ยังเป็นเทคนิคที่ดีสำหรับการบันทึกข้อมูลจากไดรฟ์ที่กำลังจะตาย


1
+1 สำหรับการกล่าวถึงว่าใน FS ที่ถูกเจอร์นัลส่วนใหญ่แม้การเมาต์แบบอ่านอย่างเดียวอาจเขียนข้อมูลซึ่งเป็นส่วนหนึ่งของกิจกรรมในวารสาร
sleske

2

มีเทคนิคในการกู้คืนไฟล์โดยการตรวจสอบ inodes ที่ยังไม่ได้รีไซเคิล ข้อมูลเพิ่มเติมที่คุณเขียนไปยังระบบไฟล์หลังจากการลบมีโอกาสน้อยที่คุณจะกู้คืนข้อมูลของคุณ กลยุทธ์ที่ดีที่สุดในการกู้คืนจากการลบข้อมูลโดยไม่ตั้งใจคือการกู้คืนจากการสำรองข้อมูล


2
alias rm="rm -i"

สมมติว่าคุณกำลังใช้เปลือก Bash (ใส่ไว้ในไฟล์. bashrc ของคุณเพื่อให้ยังคงมีเชลล์ใหม่ที่คุณเปิด)

สิ่งนี้จะส่งผลให้ rm ขอให้คุณยืนยันสิ่งที่คุณต้องการลบซึ่งเป็นสิ่งที่ดีโดยเฉพาะอย่างยิ่งเมื่อคุณทำ -rf แต่มันจะขยาย '~' ไปยังพา ธ เต็มไปยังโฮมไดเร็กตอรี่ของคุณด้วยพรอมต์ เบาะแสที่คุณไม่ได้ลบไฟล์ '~' แต่ที่จริงแล้ว homedir ของคุณ

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

นี่ไม่ใช่เทคนิคคำตอบสำหรับคำถามของคุณ แต่อาจช่วยให้คุณหลีกเลี่ยงปัญหาดังกล่าวได้ในอนาคต

แก้ไข: บางคนอาจไม่แนะนำให้คุณใช้เทคนิคนี้เพราะจะทำให้คุณระมัดระวังคำสั่ง "rm" น้อยลง จากประสบการณ์ของฉันนี้อยู่ไกลจากความจริง ในความเป็นจริงเอฟเฟ็กต์ของนามแฝงคือห้ามไม่ให้คุณใช้ "rm -rf" - เพราะคุณรู้ว่ามันจะส่งผลให้มีข้อความแจ้งเตือนมากมายที่คุณไม่ต้องการคำตอบ - และเพื่อให้ได้รับข้อความแจ้งเตือน "rm -rf" "คุณต้องอ้างถึงคำสั่ง rm อย่างจงใจว่าเป็น / bin / rm (หรืออะไรก็ตาม) สิ่งนี้นำไปสู่การใช้คำสั่ง "rm" โดยทั่วไปอย่างมีสติและเจตนามากขึ้นเนื่องจากคุณจำเป็นต้องนำหน้า rm มาใช้เสมอพร้อมกับตัวเลือกทางจิตของ "rm หรือ / bin / rm" - ทั้งบนเซิร์ฟเวอร์ของคุณและสิ่งอื่น ๆ ที่คุณเกิดขึ้น ที่จะเข้าสู่ระบบ และโลกที่ทุกคนคิดก่อนใช้ rm จะปลอดภัยกว่าแน่นอน!


2
ขึ้นอยู่กับระบบที่คุณใช้ อย่างน้อย RHEL5 และ OS X 10.6 ให้-fแทนที่-iตัวเลือก
Daniel Beck

ผมไม่ทราบว่า. ฉันต่อท้ายคำแนะนำของฉันกับ YMMV และ "อย่าลองทำที่บ้านหรือที่สำคัญกว่านั้นในที่ทำงาน"!
aaa90210

9
หากคุณทำสิ่งนี้คุณจะไม่มีนามแฝงนี้ในสถานที่ - บางทีคุณอาจกำลังนั่งอยู่ที่คอมพิวเตอร์เครื่องอื่นหรือคุณได้เข้าไปอยู่ที่ไหนสักแห่ง - และคุณจะใช้ rm ที่คุ้นเคยกับเครือข่ายความปลอดภัย คุณจะทำสิ่งที่คุณเสียใจ
Fred Nurk

1
@FredNurk อย่างแน่นอน ทางออกที่ดีที่สุดคือเพียงเพิ่ม -i ด้วยตัวเองหรือไม่ใช้ตัวเลือก -f
Arda Xi

rm -i my_list_of_filesเมื่อฉันมีจำนวนมากของไฟล์ที่จะลบผมเริ่มต้นด้วย จากนั้นฉันใช้ CTRL-C และจำคำสั่งของฉันเพื่อแก้ไขให้เป็นrm -rvf my_list_of_files
Luc M

2

ฉันขอโทษเกี่ยวกับข้อมูลของคุณ ทุกคนต่างก็หลงทางกับวิธีจัดการกับปัญหาข้อมูลของคุณ แต่นี่คือข้อมูลบางส่วนเกี่ยวกับวิธีที่คุณสามารถจัดการกับครั้งต่อไปที่คุณเห็นโฟลเดอร์ที่~ถูกปิด

  1. ค้นหาใครก็ตามที่สร้างมันขึ้นมาและทำให้แน่ใจว่าพวกเขาจะไม่ทำมันอีกเลย
  2. อย่าใช้-rfหรือมีข้อโต้แย้งที่ทรงพลังอย่างบ้าคลั่งเพื่อทำการลบ แทนที่จะทำอย่างนั้นดีและช้าและให้แน่ใจว่าคุณสามารถเห็นสิ่งที่เกิดขึ้น เป็นไปได้ที่จะป้อนเครื่องหมายตัวหนอนโดยไม่ต้องขยายไปยังโฮมไดเร็กตอรี่ของคุณโดยการเปิดไว้ในเชลล์ ในทางทฤษฎีคุณทำได้ rm -rI \~แต่คุณสามารถก้าวไปอีกขั้นหนึ่งได้
    1. ก่อนอื่นcd \~ให้เข้าไปที่โฟลเดอร์นั้นอาจใช้pwdเพื่อตรวจสอบว่าคุณไปถึงที่นั่นหรือไม่ สิบลบเนื้อหามันในขณะที่คุณอยู่ที่นั่น ระวังอีกครั้ง แต่ให้ล้างโฟลเดอร์ด้วยrf -rI *และถ้าคุณต้องการ.*เช่นกัน
    2. ตอนนี้ย้ายกลับขึ้นไปด้วยและลบไดเรกทอรีที่มีcd ..rmdir \~

1

ฉันแค่ cd .snapshot และกู้คืนไฟล์ แต่ฉันทำสิ่งนี้ในที่ทำงานและฉันก็ไม่รู้เลยว่าไดเรกทอรี. snapshot นั้นมาจากไหน ฉันว่าบางทีมันอาจเป็นฟีเจอร์ของ Linux


1

เครื่องมือการกู้คืน - บรรทัดคำสั่ง:

เครื่องมือการกู้คืน - Gui:

ข่าวสาร:

จากประสบการณ์ส่วนตัวของฉันฉันได้รับข้อมูลกลับมาโดยใช้ "UFS Explorer" และ photorec

(1) = ไม่ใช่โอเพ่นซอร์สไม่ฟรี

(2) = ไม่ใช่โอเพ่นซอร์สฟรี

(3) = เปิดแหล่งที่มาและฟรี

(4) = มีการรองรับ ntfs

(5) = มีคุณสมบัติโครงสร้างไดเรกทอรี


-3

RM อยู่ตลอดไป

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


7
ปัญหาเดียวของเรื่องนี้ก็คือคุณอาจจะเร็วและหลวมไปกับคำสั่ง rm และลืมว่าคุณไม่มีฟังก์ชั่นการยกเลิกการลบที่มีประโยชน์บนเซิร์ฟเวอร์ Linux ใน บริษัท ของคุณ ... โอ๊ะโอ ...
jmort253

2
-1 สิ่งนี้มีปัญหาเช่นเดียวกับคำตอบที่ลงคะแนนเกิน (ดังนั้นฉันจะขโมยความคิดเห็นของคนอื่น): วันหนึ่งไม่มีสคริปต์นี้อยู่ - บางทีคุณอาจกำลังนั่งอยู่ที่คอมพิวเตอร์เครื่องอื่นหรือคุณเคยไปที่อื่น - และคุณจะใช้ rm ที่คุ้นเคยกับตาข่ายนิรภัยและคุณจะทำสิ่งที่คุณเสียใจ
DMA57361

@Corey ถึงแม้ว่าฉันยอมรับว่าสิ่งนี้อาจทำให้กระต่ายที่ไม่ดี แต่ +1 เพราะคำตอบนี้ถูกลดระดับลงมากเกินไป
John Militer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.