Làm thế nào để xé một thư mục?


18

Tôi muốn một lệnh để hủy hoàn toàn nội dung của một thư mục / thư mục (có thể nằm trong các thư mục / thư mục). Ngoài ra xin vui lòng giải thích lệnh.


Xác định "cắt nhỏ". Nếu bạn chỉ có nghĩa là những gì shredlệnh làm, thì có câu trả lời của bạn.
psusi

Liên quan rất chặt chẽ: Askubfox.com/questions/57572/ Lời
Takkat

@ psusi- bởi shred tôi có nghĩa là xóa tập tin ngoài phục hồi. Tôi đã sử dụng lệnh shred nhưng vì nó chỉ áp dụng cho các tệp nên tôi muốn một lệnh tương tự để xóa các thư mục và tệp trong đó.
Ashu

Cái nào làm công việc hoàn hảo shredhay secure-delete?
Ashu

1
Đối với những người dùng khác vấp ngã ở đây, hãy cẩn thận vì shred nó không hiệu quả như bạn nghĩ bởi vì các hệ thống tệp và phần cứng hiện đại không ghi đè lên dữ liệu tại chỗ, mà thay vào đó ghi lại các thay đổi hoặc di chuyển xung quanh để cân bằng độ mòn. Liên quan: unix.stackexchange.com/questions/27027/ từ
Mike Ounsworth

Câu trả lời:


27
  1. Cài đặt gói secure-delete.
  2. Sử dụng lệnh srm -r pathnameđể loại bỏ thư mục và tập tin của bạn.

Các cài đặt mặc định dành cho 38 (!!!) số lần ghi đè quá mức imho quá mức (xem thêm thông tin về điều này tại đây ).

Đối với việc sử dụng của tôi, tôi chỉ muốn một lần truyền dữ liệu ngẫu nhiên nên tôi sử dụng srm -rfll pathname .

Nếu bạn muốn tạo tùy chọn nhấp chuột phải trong GUI cho các tệp và thư mục, hãy sử dụng gnome-hành động để gọi một tập lệnh như thế này:

#!/bin/bash
if dialog=`zenity --window-icon=warning --question --title="Secure Delete" --no-wrap --text="Are you sure you want to securely delete:\n\n     $1\n\nand any other files and folders selected? File data will be overwritten and cannot be recovered."` 
then /usr/bin/srm -fllrv "$@"| zenity --progress --pulsate --text="File deletion in progress..." --title="Secure Delete" --auto-close
fi 

Nếu bạn muốn có nhiều cài đặt hoang tưởng hơn, hãy chắc chắn sửa đổi tập lệnh trên.


1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). bạn có thể vui lòng giải thích hai điều này 38 ghi đè mặc định làm thế nào để những điều này ảnh hưởng đến giá trị '38'. và tại sao lhai lần trong-rfll
Ashu

2
OK, toàn bộ quy trình mặc định là: 1 lượt với 0xff (số lần xóa bằng 0), 5 lần chuyển ngẫu nhiên với / dev / urandom được sử dụng cho RNG an toàn nếu có, 27 lượt với các giá trị đặc biệt được xác định bởi Peter Gutmann, 5 lần vượt qua khác từ / dev / ngẫu nhiên. Sau đó đổi tên tệp thành giá trị ngẫu nhiên & cắt bớt tệp. IIRC, / dev / Random được coi là hệ thống tạo số ngẫu nhiên tốt hơn. Sử dụng -fll, chúng tôi bỏ qua các lượt 1 + 5 + 27 + 5 và thay thế bằng một lần truyền dữ liệu ngẫu nhiên, có thể từ một trình tạo ít "thực sự ngẫu nhiên".
Veazer

@Ashu rút ngắn từ trang man (Debian Jessie) cho srm; (frist) -l: only two passes, (second) -l: only one pass. Đối với những người khác, -f: fast (Non-secure random bits)-r: recursive. Tôi cũng rất đề nghị -v: verbose. Tôi cũng sẽ đề nghị chạy cái này trong một screenví dụ, nó có thể mất khá nhiều thời gian trên nhiều dữ liệu.
ThorSummoner

1
Tôi đã thay thế /usr/bin/srm -fllrvbằngbleachbit -s

8

Đối với các tệp không phải là thư mục, đây là một cách đơn giản hơn thay vì -exec shred -u {} \;loại cách:

cd to your directory.

sau đó

find . -type f -print0 | xargs -0 shred -fuzv -n 48

điều này thực hiện 48 lần đệ quy cho thư mục hiện tại mà bạn cdđã nhập.

Hy vọng điều này sẽ giúp một số.


Thêm '-print0' để tìm và '-0' cho xargs? Thư mục có thể có khoảng trắng trong tên của họ.
yếu

Câu trả lời tốt nhưng tại sao bạn sử dụng xargs ?? Tôi không hiểu xargs.
Chinmaya B

1

Shred chỉ hoạt động trên các tập tin. Bạn cần hủy các tệp trong thư mục / thư mục con trước rồi xóa các thư mục. thử

find [PATH_TO_DIR] 

và đảm bảo bạn chỉ nhìn thấy các tập tin bạn muốn xóa

find [PATH_TO_DIR] -exec shred -u {} \;

sau đó loại bỏ các thư mục với

rm -rf [PATH_TO_DIR]

u có thể xin giải thích {} \;. cũng ở đâu đó elsi tôi đã thấy lệnh tương tự như của bạn nhưng đó '{}' \;là sự khác biệt giữa hai?
Ashu

Vì shred không hoạt động trên các thư mục, làm thế nào về việc thêm tùy chọn -type f vào các lệnh find?
andol

@ andol: yeah tôi đã nghĩ về điều đó ..
Ashu

1
Không thể giải thích điều đó tốt hơn trang tìm kiếm .... the {} và \; là một phần của tùy chọn -exec của find.
Ruediger

1

Bạn có thể muốn sử dụng một cái gì đó tương tự như thế này:

find dir -type f -exec shred -fuz {} +
rm -rf dir

Lệnh đầu tiên chỉ tìm thấy các tệp và chuyển chúng thành shred (càng nhiều càng tốt - không cần phải bắt đầu quá trình cắt nhỏ mới cho mọi tệp như \; does). Cuối cùng, loại bỏ các thư mục quá.


1

sudo apt install wipe

$ wipe -rfi dir/*

nơi các cờ được sử dụng: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process


0

Tôi đã chèn tập lệnh bash sau cho mục đích này trong .bashrc của tôi

function rm2 {

  for var in $@
  do
  if [ -d $var ]
  then
     nohup $( /usr/bin/find "$var" -type f -exec  shred -n 2 -u -z -x {} \;;/bin/rm -rf "$var" ) & 
  else
    nohup /usr/bin/shred -x -n 2 -u -z "$var" & 
  fi
done
exit
}

-1

Khi tôi cần xé nhiều tệp hoặc toàn bộ thư mục, tôi chỉ cần sử dụng shred -vzn 20 ./shredme/*.*, ghi đè tất cả các tệp bằng bất kỳ phần mở rộng tệp nào trong thư mục "shredme". Sau đó, bạn có thể sử dụng lệnh rm -rf ./shredme tiêu chuẩn để xóa chính thư mục (hoặc chỉ cần nhấp chuột phải và xóa thư mục) vì tất cả dữ liệu đã được ghi đè 20 lần cho ví dụ này.

Tôi đã làm một ví dụ nhanh về điều này với một loạt các hình ảnh trùng lặp làm ví dụ.

Ảnh chụp màn hình thiết bị đầu cuối

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.