Hoàn tác một lệnh rm -rf ~


115

Tôi đã có một thư mục mà tôi không muốn đặt tên là '~', vì vậy từ dòng lệnh tôi đã nhập

rm -rf ~

và vô tình xóa thư mục nhà của tôi (vì ~ đã giải quyết / home / tên người dùng). Có cách nào quay lại hoặc về cơ bản tôi cần phải tạo lại tài khoản từ đầu không?


18
Hệ thống tập tin gì?
Tarnay Kálmán

6
Rõ ràng bạn mọi người không có khiếu hài hước.
Blomkvist

21
Mặc dù điều này không trả lời trực tiếp câu hỏi của bạn, nhưng rm -rf "~"các trích dẫn sẽ tìm tên đó theo nghĩa đen thay vì mở rộng nó. Nhưng dù sao tôi cũng sẽ sợ sử dụng nó - tôi sẽ sử dụng cái gì đó giống lshoặc cdtrước tiên để xác minh rằng tôi nhận được đúng thư mục hoặc xóa thư mục khỏi trình quản lý tệp GUI. Có lẽ đầu tiên đổi tên dir ( mv "~" tilde), xác minh và sau đó loại bỏ.
Henrik N

2
Trong tương lai, không sử dụng rm tương tác tại dòng lệnh. Sử dụng một tiện ích như thùng rác và bạn 1) không thể mắc lại sai lầm tương tự và 2) không thể làm quen với bí danh vỏ kém của rm sẽ gây rắc rối cho bạn.
Fred Nurk

9
@HenrikN: ./~ thay vì "~" cũng làm như vậy, nhưng cũng hoạt động với các tên tệp có vấn đề phổ biến khác, giống như các tên bắt đầu bằng dấu gạch ngang và trông giống như các tùy chọn.
Fred Nurk

Câu trả lời:


148

Nói chung không có cách dễ dàng trở lại.

Bạn có thể khôi phục từ bản sao lưu hàng ngày của bạn.


194
Nhận xét của bạn về sao lưu là tàn nhẫn và 100% đến mức.
Benjamin Bannier

3
OS X đặt thanh cho cách sao lưu nên hoạt động (đặc biệt là với Time Capsule). Xem maketecheasier.com/ trên để biết các gợi ý về cách sử dụng Ubuntu.
Thorbjørn Ravn Andersen

4
@ Thorbjørn Ravn Andersen - Nó, ngoại trừ khi Time Machine bị suy nhược thần kinh. Tôi đã có cỗ máy thời gian làm tôi bối rối hai lần trong sáu tháng.
Tên giả

Sao lưu ngoại vi là tuyệt vời và có thể khá phải chăng. Tôi sử dụng Backblaze (Mac / Windows) với giá $ 5 / máy tính / tháng. Nhiều người có vẻ thích Crashplan (Mac / Windows / Linux).
Henrik N

23
hàng ngày cái gì ????
Lục M

66

Những người khác (ví dụ như @RiMMER , @ Adam , và @ James T ) đã đề cập rằng, đối với hầu hết các hệ thống tập tin, nó có thể phục hồi hầu hết hoặc tất cả các dữ liệu của bạn (có lẽ không có tên tập tin), bởi vì dữ liệu không thực sự xóa trắng, chỉ lấy ra từ bảng tập tin. Điều này không chỉ đúng với Linux - điều tương tự cũng đúng với Windows và Mac.

Tuy nhiên, không ai đề cập đến điều quan trọng nhất - TẮT MÁY TÍNH CỦA BẠN. HIỆN NAY. .

Nhiều chương trình - bao gồm cả trình duyệt internet bạn đang sử dụng ngay bây giờ - sẽ lưu trữ dữ liệu vào ổ cứng và hầu như mọi thứ bạn làm đều có thể khiến máy tính của bạn thay đổi kích thước / ghi vào tệp hoán đổi. Cả hai điều này sẽ ghi vào các khu vực miễn phí trên ổ cứng, có khả năng ghi đè dữ liệu quý giá của bạn.

Do đó, hãy tắt máy tính của bạn, lấy ổ cứng ra và đặt nó vào một máy tính khác. Gắn ổ đĩa cứng ở chế độ chỉ đọc và khôi phục các tệp vào một ổ cứng riêng. Khi bạn đã khôi phục mọi thứ bạn có thể quan tâm - và chỉ sau đó - hãy ghi lại các tệp vào ổ đĩa gốc.


11
Ngay cả quá trình tắt có thể ghi vào ổ cứng. Tôi ngần ngại khuyên bạn nên rút máy tính ngay lập tức, bởi vì điều đó chắc chắn có thể khiến mọi thứ tồi tệ hơn nhiều , nhưng ... tốt, tùy thuộc vào mức độ quan trọng của dữ liệu, bạn có thể muốn xem xét nó.
BlueRaja - Daniel Pflughoeft

1
Tùy thuộc vào ổ đĩa / HĐH / điểm gắn kết, có thể ngay lập tức ngắt kết nối và / hoặc kết nối lại trực tiếp mà không cần tắt máy tính, sau đó tắt, v.v.
Matthew Scharley

1
killall rmthay vì tắt
Fred Nurk

1
Tùy thuộc vào thư mục nhà của bạn lớn như thế nào và ổ cứng của bạn lớn như thế nào, cơ hội ghi đè lên các lĩnh vực miễn phí có chứa dữ liệu của bạn là khá mong manh.
Mike Speed

Bạn có thể khôi phục các tệp văn bản bằng phương pháp này mà không gặp nhiều khó khăn (miễn là bạn có ý tưởng sơ bộ về những gì trong đó), nhưng về cơ bản các tệp nhị phân rất khó.
Satanicpuppy

13

Tôi tin rằng mỗi người dùng linux tại một thời điểm phải học bài học đau đớn này trước khi thực sự học được tầm quan trọng của các bản sao lưu, cũng như chú ý đến chi tiết và cẩn thận.

Ví dụ: nếu bạn đang xóa các tệp tìm kiếm wierd, trước tiên bạn có thể chạy các lệnh trên tệp wierd đó không có tác dụng phụ và điều đó không làm thay đổi dữ liệu của bạn. Chẳng hạn, bạn đã chạy chưa

cd ~

trước khi thử xóa thư mục, bạn sẽ thấy rằng thay vào đó sẽ thay đổi thư mục thành thư mục nhà của bạn chứ không phải ~thư mục. Khi bạn đi qua các bước xử lý sự cố, đủ để tìm hiểu những lệnh đúng bạn sẽ cần phải đúng cdvào ~thư mục, sau đó bạn có thể nhấn phím mũi tên lên để kéo lệnh cuối cùng từ lịch sử và sau đó thay đổi cdđể rmsau đó và chỉ sau đó cố gắng để xóa các thư mục .

Tôi đề nghị thực hiện các bước như thế này trước khi thực hiện bất kỳ hành động nào là vĩnh viễn. Nó không vĩnh viễn hoặc không thể đánh lừa, nhưng bạn có cơ hội tốt hơn nhiều để ngăn chặn những khoảnh khắc oái oăm đó nếu bạn thực hiện mức độ cẩn thận này khi thực hiện các hành động có tác dụng phụ.


4
Nhìn trước khi bạn nhảy, và lstrước khi bạn rm.
LawrenceC

7

Nếu bạn đang sử dụng hệ thống tập tin ext3, thì ext3grep là người bạn tốt nhất mới của bạn. Một hướng dẫn tốt (trong số nhiều người khác) về cách sử dụng ext3grep có thể được tìm thấy ở đây .


6

Bạn có thể thử sử dụng testdisk để phục hồi các tệp riêng lẻ . Ứng dụng này chỉ hoạt động trên ext2 và NTFS (nhưng vẫn đáng để thử).

Nếu bạn có ext3 hoặc ext4, bạn có thể khôi phục các tệp đã biết bằng cách sử dụng photorec , có thể cuối cùng sẽ phục hồi nhiều hơn bạn muốn. Photorec phục hồi các tệp mà không có thông tin tên tệp để có thể tẻ nhạt khi đi qua các tệp.


4

Nếu bạn có một ổ đĩa ngoài đủ lớn, bạn có một tùy chọn khác có thể an toàn nhất. Bạn sẽ cần đủ không gian để lưu trữ toàn bộ phân vùng nhà bao gồm cả không gian trống.

Khởi động từ đĩa CD và không gắn ổ đĩa nhà. Gắn ổ đĩa ngoài. dd phân vùng ổ đĩa nhà vào một tập tin trên ổ đĩa ngoài. gắn kết tệp như một thiết bị loopback thực hiện công việc không xóa của bạn trên hình ảnh này, an toàn với kiến ​​thức rằng bạn không thể làm hỏng bất kỳ hệ thống tệp gốc nào. Tùy thuộc vào hệ thống tập tin, có thể có nhiều thứ để thử, một số trong số chúng có khả năng phá hủy.

Điều này đã cứu tôi một lần với phiên bản beta của Reiser4 khi tôi không biết nó sẽ làm gì ngay cả khi tôi gắn nó chỉ đọc. Tôi đọc ở đâu đó vào thời điểm mà tạp chí viết vẫn có thể.

Đây cũng là một kỹ thuật tốt để lưu dữ liệu từ ổ đĩa sắp chết.


1
+1 để đề cập rằng trên hầu hết các FS được ghi nhật ký, ngay cả một giá trị chỉ đọc cũng có thể ghi dữ liệu như một phần của hoạt động tạp chí.
sleske

2

Có các kỹ thuật để phục hồi các tập tin bằng cách kiểm tra các nút không được tái chế. Càng nhiều dữ liệu bạn ghi vào hệ thống tệp sau khi xóa, bạn càng ít có khả năng khôi phục dữ liệu của mình. Chiến lược tốt nhất để phục hồi sau khi xóa dữ liệu ngẫu nhiên là khôi phục từ bản sao lưu.


2
alias rm="rm -i"

Giả sử bạn đang sử dụng shell Bash (đặt tệp này vào tệp .bashrc để nó tồn tại với các shell mới mà bạn mở).

Điều này sẽ dẫn đến rm yêu cầu bạn xác nhận những gì bạn muốn xóa, điều này rất tốt, đặc biệt là khi bạn đang thực hiện -rf, nhưng nó cũng sẽ mở rộng '~' đến đường dẫn đầy đủ đến thư mục chính của bạn trong dấu nhắc, sẽ cung cấp cho bạn một manh mối bạn không xóa một tập tin '~' mà thực sự là homedir của bạn.

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

Đây không phải là một câu trả lời về mặt kỹ thuật cho câu hỏi của bạn, nhưng có thể giúp bạn tránh được vấn đề như vậy trong tương lai.

EDIT: Một số người có thể không khuyến khích bạn sử dụng kỹ thuật này vì nó khiến bạn không cẩn thận hơn với lệnh "rm". Theo kinh nghiệm của tôi thì điều này là xa sự thật. Trong thực tế, tác dụng của bí danh là không khuyến khích bạn sử dụng "rm -rf" - vì bạn biết điều đó sẽ dẫn đến nhiều lời nhắc mà bạn không muốn trả lời - và để có được một "rm -rf không nhắc nhở" "Bạn cần cố tình tham khảo lệnh rm là / bin / rm (hoặc bất cứ điều gì). Điều này dẫn đến việc sử dụng lệnh "rm" có ý thức và có chủ ý hơn nói chung - vì bạn luôn cần ưu tiên sử dụng rm với lựa chọn tinh thần là "rm hoặc / bin / rm" - trên cả máy chủ của bạn và bất kỳ điều gì khác bạn xảy ra để được đăng nhập vào. Và một thế giới nơi mọi người nghĩ trước khi sử dụng rm sẽ thực sự an toàn hơn!


2
Phụ thuộc vào hệ thống bạn đang trên. Trên ít nhất là trên RHEL5 và OS X 10.6, -fghi đè -itùy chọn.
Daniel Beck

Tôi không biết điều đó. Tôi xin thêm lời khuyên của mình với YMMV và "đừng thử điều này ở nhà, hoặc có lẽ quan trọng hơn là tại nơi làm việc"!
aaa90210

9
Nếu bạn làm điều này, một ngày nào đó bạn sẽ không có bí danh này - có thể bạn đang ngồi ở một máy tính khác hoặc bạn đã vào một nơi nào đó - và bạn sẽ sử dụng rm được sử dụng vào mạng lưới an toàn. Bạn sẽ làm một cái gì đó bạn hối tiếc.
Fred Nurk

1
@FredNurk Chính xác. Đặt cược tốt nhất là chỉ cần tự thêm -i hoặc không sử dụng tùy chọn -f.
Arda Xi

Khi tôi có rất nhiều tập tin cần xóa, tôi bắt đầu với rm -i my_list_of_files. Sau đó, tôi sử dụng CTRL-C và gọi lại lệnh của mình để sửa đổi nó thànhrm -rvf my_list_of_files
Luc M

2

Tôi xin lỗi về dữ liệu của bạn. Mọi người khác đã theo đuổi cách xử lý vấn đề dữ liệu của bạn, nhưng đây là một số thông tin về cách bạn có thể giải quyết trong lần tiếp theo bạn thấy một thư mục được xử lý ~.

  1. Tìm bất cứ ai tạo ra nó và chắc chắn rằng họ không bao giờ làm điều đó một lần nữa.
  2. Không sử dụng -rfhoặc bất kỳ đối số mạnh mẽ điên rồ nào để thực hiện xóa. Thay vào đó hãy làm cho nó đẹp và chậm và đảm bảo bạn có thể thấy những gì đang xảy ra. Có thể nhập dấu ngã mà không cần mở rộng vào thư mục chính của bạn bằng cách thoát khỏi nó trong vỏ. Về lý thuyết bạn có thể rm -rI \~ , tuy nhiên bạn có thể tiến thêm một bước.
    1. Đầu tiên, cd \~để vào INTO thư mục đó, thậm chí có thể sử dụng pwdđể kiểm tra xem bạn đã đến đó chưa. Mười loại bỏ nội dung của nó trong khi bạn đang ở đó. Một lần nữa hãy cẩn thận nhưng dọn sạch thư mục với rf -rI *và nếu bạn cần lấy .*quá.
    2. Bây giờ di chuyển trở lại với cd ..và loại bỏ các thư mục với rmdir \~.

1

Tôi chỉ cd .snapshot và khôi phục các tập tin. Nhưng, tôi làm điều này tại nơi làm việc và tôi không biết thư mục .snapshot đến từ đâu. Tôi mặc dù có lẽ đó là một tính năng của Linux.


1

Công cụ khôi phục - Dòng lệnh:

Công cụ khôi phục - Gui:

Thông tin liên lạc

Theo kinh nghiệm cá nhân của tôi, tôi lấy lại dữ liệu của mình bằng cách sử dụng "UFS Explorer" và photorec

(1) = Không phải nguồn mở, không miễn phí

(2) = Không phải nguồn mở, miễn phí

(3) = Nguồn mở và miễn phí

(4) = Có hỗ trợ ntfs

(5) = Có tính năng cấu trúc thư mục


-3

rm là mãi mãi

Mặc dù điều này không giúp ích cho bạn bây giờ, nhưng trong tương lai bạn không thể sử dụng rm hoặc thực sự ép buộc bản thân, thêm một tập lệnh được tìm thấy trước đó trong đường dẫn có tên rm để di chuyển các tệp vào thư mục rác mà bạn dọn dẹp vào lúc khác (cho phép bạn mắc lỗi và không được SOL).


7
Vấn đề duy nhất là bạn có thể trở nên nhanh và lỏng lẻo với lệnh rm và quên rằng bạn không có chức năng phục hồi tiện dụng trên máy chủ Linux của công ty bạn ...
ôi

2
-1 Điều này có cùng một vấn đề với các câu trả lời bị bỏ phiếu (vì vậy tôi sẽ đánh cắp nhận xét của người khác): một ngày không có kịch bản này - có thể bạn đang ngồi ở một máy tính khác hoặc bạn đã vào một nơi nào đó - và bạn sẽ sử dụng rm đang được sử dụng vào mạng lưới an toàn và bạn sẽ làm điều gì đó mà bạn hối tiếc.
DMA57361

@Corey Mặc dù tôi đồng ý rằng điều này có thể gây ra một tiếng xấu, +1 vì câu trả lời này đã bị đánh giá quá thấp
John Militer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.