Câu trả lời:
Sử dụng find
lệnh để thực hiện shred
đệ quy:
find <dir> -type f -exec shred {} \;
man shred
.
srm
từ câu trả lời của @ Cookie ít nhất sẽ cố gắng khắc phục vấn đề này).
-exec shred {} +
để làm cho nó nhanh hơn vì shred chấp nhận nhiều đối số.
Coi chừng vụn!
Từ trang shred-manpage:
THẬN TRỌNG: Lưu ý rằng shred phụ thuộc vào một giả định rất quan trọng: hệ thống tệp ghi đè dữ liệu tại chỗ. Đây là cách truyền thống để làm mọi thứ, nhưng nhiều thiết kế hệ thống tệp hiện đại không đáp ứng giả định này. Sau đây là các ví dụ về hệ thống tệp mà shred không hiệu quả hoặc không được đảm bảo có hiệu lực trong tất cả các chế độ hệ thống tệp:
các hệ thống tệp được cấu trúc hoặc ghi nhật ký, chẳng hạn như các hệ thống được cung cấp với AIX và Solaris (và JFS, ReiserFS, XFS, Ext3, v.v.)
hệ thống tệp ghi dữ liệu dư thừa và tiếp tục ngay cả khi một số lần ghi bị lỗi, chẳng hạn như hệ thống tệp dựa trên RAID
hệ thống tệp tạo ảnh chụp nhanh, chẳng hạn như máy chủ NFS của Thiết bị Mạng
hệ thống tệp lưu trữ trong các vị trí tạm thời, chẳng hạn như máy khách NFS phiên bản 3
hệ thống tập tin nén
Trong trường hợp hệ thống tệp ext3, từ chối trách nhiệm ở trên áp dụng (và shred vì thế có hiệu lực hạn chế) chỉ trong chế độ data = tạp chí, trong đó ghi lại dữ liệu tệp ngoài siêu dữ liệu. Trong cả hai chế độ data = order (mặc định) và data = writBack, shred hoạt động như bình thường. Có thể thay đổi chế độ ghi nhật ký Ext3 bằng cách thêm tùy chọn data = Something vào tùy chọn gắn kết cho một hệ thống tệp cụ thể trong tệp / etc / fstab, như được ghi lại trong trang man mount (man mount).
Ngoài ra, sao lưu hệ thống tệp và máy nhân bản từ xa có thể chứa các bản sao của tệp không thể xóa và điều đó sẽ cho phép khôi phục tệp được băm nhỏ sau đó.
Giải pháp: Sử dụng hệ thống tệp được mã hóa và chỉ cần xóa các tệp của bạn.
shred
và mã hóa dữ liệu ngăn chặn đọc dữ liệu ra khỏi thiết bị lưu trữ ẩn (nghĩ trộm cắp hoặc cảnh sát) với mã hóa dữ liệu có thêm lợi ích của việc bảo vệ tất cả các file, không chỉ những người (đúng) xóa. Khi hệ thống tệp được gắn kết, chúng tôi sẽ trở lại các quyền unix tốt trong cả hai trường hợp và bảo vệ dữ liệu trở thành nhiệm vụ bảo mật hệ điều hành và quản trị hệ thống phù hợp một lần nữa. Mã hóa hệ thống tập tin trả trước chắc chắn không tệ hơn trong việc bảo vệ dữ liệu khi nghỉ ngơi so với việc sử dụng chiến lược shred
!
Sử dụng xóa an toàn thay thế.
sudo apt-get install secure-delete
srm -r pathname
Làm xong. Xóa an toàn là hoang tưởng hơn nhiều so với shred, sử dụng 38 đường chuyền thay vì 3. Để thực hiện một lượt nhanh, sử dụng
srm -rfll pathname
fll giúp bạn có một trình tạo dữ liệu ít ngẫu nhiên hơn và chỉ một lần duy nhất.
find
phương pháp dựa trên đề xuất sẽ cố gắng xóa tên tệp được lưu trữ bằng cách đổi tên tệp trước khi cắt và hủy liên kết chúng.
Kết hợp câu trả lời này với các tùy chọn được biết đến tốt nhất để cắt nhỏ bằng liên kết tràn ngăn xếp này ' Xóa tệp vĩnh viễn và an toàn trên CentOS ':
find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;
Chỉnh sửa: Lưu ý rằng câu trả lời tốt nhất cho việc băm nhỏ một tệp sẽ buộc đồng bộ hóa ghi thay đổi vào phương tiện trước khi xóa tệp vì một số hoặc tất cả các hệ thống tệp được ghi có bộ đệm.
Nếu có thể, lệnh find sẽ gọi một tập lệnh shell trên tệp chạy:
shred -v -n 1 /path/to/your/file #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u /path/to/your/file #overwriting with zeroes and remove the file
trên mỗi tập tin.
rm -rvf $1
tập lệnh shell (trong đó $ 1 là tập tin / path / to / your / được chuyển từ bản {}
mở rộng trong find... -exec
)
depth
ở đây? Cũng không chắc chắn về dấu gạch chéo ngược
find /your/directory -exec shred {} \;
find [dirname] -depth -type f -exec shred -n1 {} \;
Điều này thực hiện tìm kiếm theo chiều sâu cho các tệp trong thư mục [dirname], sau đó chạy shred -n1
lệnh trên mỗi tệp. Khi xóa tệp và / hoặc thư mục, thêm vào -depth
như mặc định là một thói quen tốt, mặc dù nó không thực sự cần thiết cho trường hợp này. Khi chạy loại lệnh này rm -rf
thay vì shred
, -depth
cần thiết để đảm bảo rằng các thư mục không bị xóa trước khi nội dung của các thư mục được cố gắng xóa (do đó gây ra lỗi).
shred -N 1
, vì mặc định, băm nhỏ 3 lần, là dầu rắn. Một lần là đủ, hoặc 30 lần sẽ không hoạt động.
shred
Phương pháp kỹ lưỡng nhất mà tôi đã tìm thấy, bao gồm cả loại bỏ thư mục, là find
gọi một tập lệnh để có shred
:
Phương pháp này cũng xử lý đúng tên tệp có khoảng trắng trong đó.
Đầu tiên - shred
tập lệnh (Tôi đã đặt tên cho tôi dirShredder.sh
và lưu nó trong /root
thư mục:
shred -v -n 1 "$1" #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u "$1" #overwriting with zeroes and remove the file
rm -rvf "$1" # call rm to remove the directories
Sau đó, gọi kịch bản như thế này:
find /volume1/pathToShred/ -mindepth 1 -depth -exec /root/dirShredder.sh "{}" \;
Hãy chắc chắn để đánh dấu killit.sh
tệp thực thi ( chmod +x
) và tất nhiên cập nhật đường dẫn cho thư mục bạn muốn cắt nhỏ và dirShredder.sh
nếu bạn lưu trữ nó ở một nơi khác.
NOTA BENE - shred
có vấn đề về hệ thống tệp Copy-on-Write (ZFS, BTRFS, et al) và thậm chí trên các hệ thống tệp Nhật ký. Không có cách "tốt nhất" nào được chấp nhận thực sự để giải quyết vấn đề này mà tôi đã tìm thấy ngoài "hệ thống tập tin được mã hóa" nhưng tôi không chắc chắn về hiệu quả của việc này sau thực tế.
Gần nhất có vẻ như bạn có thể nhận được là ghi đè lên tất cả không gian trống trên ổ đĩa với dữ liệu ngẫu nhiên sau khi ops của bạn (không phải số không, có vẻ như điều này không phải lúc nào cũng đáng tin cậy.) Ngoài ra, SSD cũng có thể có những cân nhắc khác (như TRIM.)
Tôi không đi sâu vào những vấn đề ở đây, chẳng hạn có câu trả lời Stack khác (ví dụ câu trả lời của @user trong câu hỏi này) và rất nhiều cuộc thảo luận trên mạng 'bao gồm các chủ đề này để tìm kiếm chúng nếu bạn cần mức độ bảo mật đó.