Điểm:3

Điều gì xảy ra nếu chúng ta thực hiện rm -rf ../**? Chúng tôi có thể khôi phục dữ liệu không?

lá cờ us
xxz

tôi đã làm một cái gì đó như:

$ cd /A/B/
$ rm -rf ./*
$ rm -rf ../**

Do sự cố mạng, hệ thống của tôi bị ngắt kết nối với Ubuntu. Khi tôi quay lại, không có tệp hoặc thư mục nào trong /MỘT thư mục.

user535733 avatar
lá cờ cn
Sử dụng `rm` để thử nghiệm với các vị trí `.` và `..` có vẻ như là một cách ngu ngốc để điều tra những vị trí đó là gì và cách sử dụng chúng. Có nhiều cách tốt hơn, không phá hủy để tìm hiểu về chúng.
lá cờ jp
`*` thứ hai trong `../**` là dư thừa. `*` có nghĩa là tất cả các tệp và thư mục khớp với bất kỳ mẫu nào. ví dụ. `a*b` sẽ là bất kỳ thứ gì bắt đầu bằng a và kết thúc bằng b. Khi bạn nói `**`, bạn đang nói "khớp 0 trở lên của bất kỳ ký tự nào và khớp 0 trở lên của bất kỳ ký tự nào". Mặc dù `**` khớp với tất cả các thư mục con, nhưng thư mục đó đã được xử lý bởi `rm -r` rồi.
code_dredd avatar
lá cờ cn
Không sử dụng phần mềm pháp y kỹ thuật số để khôi phục dữ liệu, không, bạn không thể làm gì để khôi phục dữ liệu bị ảnh hưởng. Điều này tương tự như nhấn Shift+Del trong Windows - không có thùng rác nào để đi tới. Nhìn chung, bạn nên kiểm tra tài liệu của lệnh trước khi thử các thử nghiệm mà dữ liệu của bạn đang bị đe dọa. **TL;DR:** Bạn làm hỏng việc rồi :(
marcelm avatar
lá cờ cn
Tiêu đề câu hỏi hỏi về `./*`, nhưng chính `../**` đã gây ra sự cố cho OP. Tiêu đề câu hỏi nên được chỉnh sửa để phản ánh tốt hơn điều đó. (Tôi sẽ chỉnh sửa, nhưng bài đăng đã bị kẹt ở trạng thái chờ chỉnh sửa trong một thời gian)
lá cờ ng
Tôi dường như nhớ lại những cảnh báo rõ ràng trong các cuốn sách Unix đầu tiên về việc không làm những việc như thế này, đặc biệt là không `sudo rm -rf /*` . "Mọi chuyện cũ sẽ mới trở lại thôi"
lá cờ us
@AdamOutler Phân tích của bạn về toàn cầu `**` không hợp lệ với hầu hết các trình bao hiện đại. Hãy xem [tại đây](https://stackoverflow.com/questions/28176590/what-do-double-asterisk-wildcards-mean).
lá cờ jp
@doneal24 nếu bạn `rm -rf ../*` hoặc `rm -rf ../**` nó sẽ xóa tất cả các tệp và thư mục trong thư mục phía trên thư mục hiện tại của bạn. Không chắc bạn đang nói về cái gì.
lá cờ us
@AdamOutler Các khối `./*` và './**` được mở rộng khác nhau. `**` không có nghĩa như bạn nghĩ. Hiệu quả thực tế trong ví dụ `rm -rf` là không nhưng giải thích của bạn không chính xác.
Điểm:22
lá cờ ng

rừm loại bỏ các tập tin. Nó không đưa chúng vào Thùng rác nên không thể khôi phục chúng bằng các phương pháp thông thường.

Ngoài ra -rf thẻ thực hiện hai việc:

Các -r thẻ là viết tắt của đệ quy có nghĩa là nó xóa đường dẫn hoặc tệp bạn chỉ định mọi thứ khác bên dưới nó.

Các -f thẻ là viết tắt của lực lượng, có nghĩa là thao tác sẽ hoàn tất mà không cần thêm bất kỳ lời nhắc nào.

Để trả lời câu hỏi của bạn về cú pháp, hãy nhớ rằng ./ là đường dẫn của thư mục hiện tại và ../ là đường dẫn của thư mục "cha" (đường dẫn phía trên thư mục hiện tại).

Vì vậy, nếu bạn chạy rm -rf ../* trong khi dưới /A/B/, thì bạn đang xóa mọi thứ bên dưới /MỘT/.

Nếu bạn định sử dụng rm -rf, lưu ý rằng đây là một lệnh rất mạnh sẽ xóa bừa bãi và vĩnh viễn mọi thứ trong đường dẫn bạn chỉ định.

Tùy chọn duy nhất của bạn để khôi phục tệp từ thao tác này là các công cụ khôi phục dữ liệu nâng cao như photorec/testdisk. Các ứng dụng này không phải lúc nào cũng thành công trong việc khôi phục dữ liệu và việc sử dụng thêm thiết bị của bạn sẽ làm giảm khả năng chúng sẽ khôi phục mọi thứ.

Con đường tốt nhất là khôi phục từ bản sao lưu.

xxz avatar
lá cờ us
xxz
cảm ơn, quan điểm của tôi là, tôi đã làm rm ở vị trí B. nhưng làm thế nào các tập tin đi trong một vị trí. tôi đã không nhận được nó. bạn thấy câu hỏi của tôi cho cùng
Nmath avatar
lá cờ ng
Đã chỉnh sửa để bao gồm thêm chi tiết về cú pháp đường dẫn. Xem: https://superuser.com/a/54030
lá cờ cn
Tôi đã từng định gõ `rm var -rf` nhưng vô tình gõ `rm /var -rf` nên tôi đã xóa một thư mục hệ thống lớn thay vì thư mục con của một trang web. Lệnh này có thể rất phá hoại với một lỗi nhỏ nhất. Ngoài ra nếu tôi chưa root thì lệnh sẽ bị lỗi nên có một bài học khác. May mắn thay, đó chỉ là một máy ảo.
lá cờ us
@xxz Bạn đã có `/A/B` làm thư mục làm việc của mình nhưng yêu cầu rm xóa `../**`, ví dụ: các tệp và thư mục tăng một cấp.
Akbarkhon Variskhanov avatar
lá cờ mx
@Rodney đó chính xác là điều nên chạy thứ gì đó như `ls -1` trên các đối số trước tiên.
Điểm:10
lá cờ vn

Khi bạn chạy rm -rf ../** trong thư mục /A/B, nó quay trở lại thư mục /MỘT và xóa mọi thứ trong đó, vì .. là thư mục mẹ.

Nếu bạn muốn có thể "khôi phục" dữ liệu, bạn nên xem xét việc chạy một hệ thống tệp có bật ảnh chụp nhanh đang hoạt động.

Cả hai ZFSBTRFS đã triển khai ảnh chụp nhanh và có thể định cấu hình ảnh chụp nhanh tự động.

Ví dụ: nếu bạn đã định cấu hình ảnh chụp nhanh hàng giờ trong 24 giờ qua và ảnh chụp nhanh hàng ngày trong 14 ngày qua, bạn có thể quay lại bất kỳ ảnh chụp nhanh nào trong số các ảnh chụp nhanh đó cho một hệ thống tệp nhất định bất kỳ lúc nào.

Cấu hình chính xác của ảnh chụp nhanh tự động sẽ thay đổi theo hệ thống tệp đã chọn.

Lý do điều này "chỉ hoạt động" là cả hai hệ thống tệp đều triển khai "sao chép khi ghi", trong đó mọi thay đổi đối với hệ thống tệp được ghi vào một vị trí mới - vì vậy không có dữ liệu nào bị xóa cho đến khi ảnh chụp nhanh và con trỏ tới dữ liệu cũ hết hạn.

Điểm:0
lá cờ in

Bạn đang xóa đệ quy các tệp và thư mục khỏi một thư mục. Trong một trường hợp, thư mục mẹ.

Sẽ hữu ích một chút nếu bạn cho chúng tôi biết bạn đang ở đâu nhưng nếu điều này nhạy cảm thì có khả năng bạn đang ở đâu đó dưới /home hoặc /opt hoặc /var vì những nơi khác có tên soạn sẵn mà bạn không nên ngại chia sẻ.

Bạn có thể khôi phục các tệp từ một nguồn bên ngoài, nhưng nếu bạn đã xóa các thư mục bin thì có thể có vấn đề với tính ổn định của hệ thống.

Bạn có thể gắn đĩa vào máy khác để khôi phục trong trường hợp này.

Tôi mong bạn có bản sao lưu của những cây chính. Trong đám mây (và thậm chí cục bộ), bạn có thể quay lại toàn bộ ảnh đĩa gần đây và chỉ cần khôi phục/home,/var và bất kỳ thứ gì bạn đã sao lưu là tương đối dễ bay hơi.

NB. - khôi phục cây bằng cp hoặc rsync có thể là một quá trình chống phân mảnh trên thực tế.

Điểm:0
lá cờ cn

Những gì bạn thực sự đã làm là (../**).

như bạn có thể thấy, bạn đặt dấu chấm kép vào lệnh đã cho để xóa mọi thứ xuất hiện trước TRỰC TIẾP đang hoạt động của bạn.

Bây giờ hãy xem nó hoạt động như thế nào. Chỉ cần tưởng tượng chúng ta có một thư mục vị trí với tên XYZ,

# pwd
/
# mkdir XYZ

# cd XYZ

# pwd
/XYZ

Theo lệnh trên, tôi đã tạo một thư mục. có thể được coi là -> /A/B

bây giờ khi bạn chạy lệnh được đề cập bên dưới, nó sẽ chỉ xóa mọi thứ trong thư mục làm việc là /XYZ

rm -rf ./**

Nhưng khi bạn chạy cùng một lệnh với biểu tượng dấu chấm kép, chính lệnh đó sẽ thay đổi vị trí của thư mục đang chạy và chỉ xóa mọi thứ xuất hiện trước /XYZ từ đó nhưng vì người dùng đang làm việc trong một thư mục tồn tại trong thư mục đó đang nhận xóa tại thời điểm đó chỉ có thư mục đó sẽ không bị xóa và mọi thứ sẽ bị xóa.

Khá khó để biết liệu bạn có thể khôi phục dữ liệu của mình hay không nhưng bạn có thể sử dụng photorec để giúp bạn khôi phục dữ liệu của mình nhưng nó sẽ thay đổi tên tệp khôi phục một cách ngẫu nhiên, vì vậy nếu bạn biết những gì ở đó thì bạn có thể làm khác. Tôi không nghĩ vậy bạn có thể phục hồi dữ liệu của bạn.

hy vọng điều này trả lời câu hỏi của bạn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.