Jawaban:
Gunakan find
perintah untuk mengeksekusi shred
secara rekursif:
find <dir> -type f -exec shred {} \;
man shred
.
srm
dari jawaban @ Cookie setidaknya akan mencoba untuk memperbaiki masalah ini).
-exec shred {} +
untuk membuatnya lebih cepat karena shred menerima beberapa argumen.
Waspadalah terhadap kerusakan!
Dari halaman rusak:
PERHATIAN: Perhatikan bahwa shred bergantung pada asumsi yang sangat penting: bahwa sistem file menimpa data yang ada. Ini adalah cara tradisional untuk melakukan sesuatu, tetapi banyak desain sistem file modern tidak memenuhi asumsi ini. Berikut ini adalah contoh sistem file yang rusak tidak efektif, atau tidak dijamin efektif dalam semua mode sistem file:
sistem file log-terstruktur atau dijurnal, seperti yang disediakan dengan AIX dan Solaris (dan JFS, ReiserFS, XFS, Ext3, dll.)
sistem file yang menulis data yang berlebihan dan melanjutkan bahkan jika beberapa penulisan gagal, seperti sistem file berbasis RAID
sistem file yang membuat snapshot, seperti server NFS Network Appliance
sistem file yang melakukan cache di lokasi sementara, seperti klien NFS versi 3
sistem file terkompresi
Dalam kasus sistem file ext3, penafian di atas berlaku (dan karena itu efektivitasnya terbatas) hanya dalam mode data = jurnal, yang membuat jurnal file data selain hanya metadata. Baik dalam data = teratur (default) dan data = mode kembali, rusak bekerja seperti biasa. Mode penjurnalan ext3 dapat diubah dengan menambahkan data = opsi sesuatu ke opsi mount untuk sistem file tertentu dalam file / etc / fstab, seperti yang didokumentasikan dalam halaman manual mount (man mount).
Selain itu, cadangan sistem file dan mirror jarak jauh dapat berisi salinan file yang tidak dapat dihapus, dan itu akan memungkinkan file robek dipulihkan nanti.
Solusi: Gunakan sistem file terenkripsi, dan hapus saja file Anda.
shred
maupun enkripsi data mencegah pembacaan data dari perangkat penyimpanan offline (pikirkan pencurian atau polisi) dengan enkripsi data yang memiliki manfaat tambahan melindungi semua file, bukan hanya yang (dengan benar) dihapus. Setelah sistem file dipasang, kita kembali ke izin unix yang baik dalam hal apapun dan perlindungan data menjadi tugas keamanan OS dan administrasi sistem yang tepat lagi. Enkripsi sistem file dimuka jelas tidak lebih buruk dalam melindungi data saat istirahat daripada penggunaan strategis shred
!
Gunakan hapus aman sebagai gantinya.
sudo apt-get install secure-delete
srm -r pathname
Selesai. Hapus aman jauh lebih paranoid daripada rusak, menggunakan 38 lintasan alih-alih 3. Untuk melakukan lintasan cepat tunggal, gunakan
srm -rfll pathname
fll memberi Anda generator data yang kurang acak, dan hanya satu lintasan.
find
metode yang diusulkan yang akan mencoba juga menghapus nama file yang disimpan dengan mengubah nama file sebelum memotong dan memutuskan tautannya.
Menggabungkan jawaban ini dengan opsi yang paling dikenal untuk rusak menggunakan tautan stack overflow ini ' Menghapus File Secara Permanen dan Aman di CentOS ':
find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;
Sunting: Perlu diketahui bahwa jawaban terbaik untuk merobek-robek file tunggal memaksa sinkronisasi yang menulis perubahan pada media sebelum menghapus file karena beberapa atau semua sistem file yang dijurnal memiliki buffer.
Jika memungkinkan, perintah find harus memanggil skrip shell pada file yang berjalan:
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
pada setiap file.
rm -rvf $1
ke skrip shell (di mana $ 1 adalah / path / ke / file Anda lewat dari {}
ekspansi di find... -exec
)
depth
dilakukan di sini? Juga tidak yakin tentang garis miring terbalik
find /your/directory -exec shred {} \;
find [dirname] -depth -type f -exec shred -n1 {} \;
Ini melakukan pencarian mendalam-pertama untuk file dalam direktori [dirname], kemudian jalankan shred -n1
perintah pada setiap file. Saat menghapus file dan / atau direktori, menambahkan -depth
sebagai default adalah kebiasaan yang baik, meskipun itu tidak sepenuhnya diperlukan untuk kasus ini. Ketika menjalankan perintah semacam ini dengan rm -rf
alih - alih shred
, -depth
diperlukan untuk memastikan bahwa direktori tidak dihapus sebelum isi direktori dicoba untuk dihapus (sehingga menyebabkan kesalahan).
shred -N 1
, karena default, mencabik-cabik 3 kali, adalah minyak ular. Satu kali saja sudah cukup, atau 30 kali tidak akan berhasil.
Metode paling menyeluruh shred
yang saya temukan, termasuk penghapusan direktori, adalah dengan find
memanggil skrip untuk shred
:
Metode ini juga menangani nama file dengan spasi di dalamnya.
Pertama - shred
skrip (Saya menamai milik saya dirShredder.sh
dan menyimpannya di /root
direktori:
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
Kemudian, panggil script seperti ini:
find /volume1/pathToShred/ -mindepth 1 -depth -exec /root/dirShredder.sh "{}" \;
Pastikan untuk menandai killit.sh
file executable ( chmod +x
) dan tentu saja perbarui path untuk dir yang ingin Anda hancurkan dan dirShredder.sh
jika Anda menyimpannya di tempat lain.
NOTA BENE - shred
memiliki masalah pada sistem file Copy-on-Write (ZFS, BTRFS, et al) dan bahkan pada sistem file Journal. Tidak ada cara "terbaik" yang benar-benar diterima untuk menangani hal ini yang saya temukan selain "sistem file terenkripsi" tetapi saya tidak yakin seberapa efektif ini setelah fakta.
Yang paling dekat tampaknya bisa Anda dapatkan adalah menimpa semua ruang kosong pada drive dengan data acak setelah operasi merobek-robek Anda (bukan nol, tampaknya ini tidak selalu dapat diandalkan.) Selain itu, SSD mungkin memiliki pertimbangan lain juga (seperti TRIM.)
Saya tidak akan membahasnya di sini, ada jawaban Stack lainnya (@user jawaban yang tidak diketahui dalam pertanyaan ini misalnya) dan banyak diskusi di seluruh 'jaring yang membahas topik ini jadi cari mereka jika Anda membutuhkan tingkat keamanan itu.