GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menghapus ruang disk kosong di Linux?

Peringatan: Perangkat keras disk/SSD modern dan sistem file modern dapat menyimpan data di tempat yang tidak dapat Anda hapus, jadi proses ini mungkin masih menyisakan data di disk. Satu-satunya cara yang aman untuk menghapus data adalah perintah ATA Secure Erase (jika diterapkan dengan benar), atau kehancuran fisik. Lihat juga Bagaimana cara menghapus semua informasi di hard drive dengan andal?

Anda dapat menggunakan seperangkat alat yang disebut secure-delete.

sudo apt-get install secure-delete

Ini memiliki empat alat:

srm - menghapus file yang ada dengan aman
smem - menghapus jejak file dari ram dengan aman
sfill - hapus semua ruang yang ditandai sebagai kosong di hard drive Anda
sswap - hapus semua data dari ruang swap Anda.

Dari halaman manual srm

srm dirancang untuk menghapus data pada media dengan cara aman yang tidak dapat dipulihkan oleh pencuri, penegak hukum, atau ancaman lainnya. Algoritme penghapusan didasarkan pada makalah "Secure Deletion of Data from Magnetic and Solid-State Memory" yang dipresentasikan pada Simposium Keamanan Usenix ke-6 oleh Peter Gutmann, salah satu kriptografer sipil terkemuka.

Proses penghapusan data aman srm berjalan seperti ini:

  • 1 lulus dengan 0xff
  • 5 umpan acak. /dev/urandom digunakan untuk RNG aman jika tersedia.
  • 27 operan dengan nilai khusus yang ditentukan oleh Peter Gutmann.
  • 5 umpan acak. /dev/urandom digunakan untuk RNG aman jika tersedia.
  • Ubah nama file menjadi nilai acak
  • Pangkas file

Sebagai ukuran keamanan tambahan, file dibuka dalam mode O_SYNC dan setelah masing-masing memberikan fsync() panggilan dilakukan. srm menulis 32k blok untuk tujuan kecepatan, mengisi buffer cache disk untuk memaksanya menghapus dan menimpa data lama yang menjadi milik file.


Cara tercepat, jika Anda hanya membutuhkan satu pass dan hanya ingin mengganti semuanya dengan nol, adalah:

cat /dev/zero > zero.file
sync
rm zero.file

(jalankan dari direktori pada sistem file yang ingin Anda hapus)
(sync perintah adalah tindakan paranoia yang memastikan semua data ditulis ke disk - pengelola cache yang cerdas mungkin berhasil sehingga dapat membatalkan penulisan untuk setiap blok yang tertunda saat tautan file dibatalkan)

Akan ada waktu selama operasi ini ketika tidak ada ruang kosong sama sekali di sistem file, yang bisa puluhan detik jika file yang dihasilkan besar dan terfragmentasi sehingga perlu waktu untuk menghapusnya. Untuk mengurangi waktu saat ruang kosong benar-benar kosong:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
cat /dev/zero > zero.file
sync
rm zero.small.file
rm zero.file

Ini seharusnya cukup untuk menghentikan seseorang membaca konten file lama tanpa operasi forensik yang mahal. Untuk varian yang sedikit lebih aman, tetapi lebih lambat, ganti /dev/zero dengan /dev/urandom . Untuk paranoia lainnya, jalankan beberapa langkah dengan /dev/urandom , meskipun jika Anda membutuhkan banyak usaha, shred utilitas dari paket coreutils adalah caranya:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
shred -z zero.small.file
cat /dev/zero > zero.file
sync
rm zero.small.file
shred -z zero.file
sync
rm zero.file

Perhatikan bahwa di atas file kecil diparut sebelum membuat yang lebih besar, sehingga dapat dihapus segera setelah yang lebih besar selesai daripada harus menunggu untuk diparut meninggalkan sistem file dengan ruang kosong nol untuk waktu yang dibutuhkan. Proses penghancuran memakan waktu panjang waktu lebih dari file besar dan kecuali Anda mencoba menyembunyikan sesuatu dari NSA tidak benar-benar diperlukan IMO.

Semua hal di atas harus bekerja pada sistem file apa pun.

Batas Ukuran File:

Seperti yang ditunjukkan DanMoulding dalam komentar di bawah, ini mungkin memiliki masalah dengan batasan ukuran file pada beberapa sistem file.

Untuk FAT32 akan pasti menjadi perhatian karena batas file 2GiB:sebagian besar volume lebih besar dari ini hari ini (8TiB adalah batas ukuran volume IIRC). Anda dapat menyiasatinya dengan menyalurkan cat /dev/zero yang besar keluaran keluaran melalui split untuk menghasilkan beberapa file yang lebih kecil dan sesuaikan tahapan penghancuran dan penghapusan yang sesuai.

Dengan ext2/3/4 itu kurang menjadi perhatian:dengan blok 4K default/umum, batas ukuran file adalah 2TiB sehingga Anda harus memiliki besar volume untuk ini menjadi masalah (ukuran volume maksimum dalam kondisi ini adalah 16TiB).

Dengan btrf (masih dalam percobaan), ukuran maksimum file dan volume adalah 16EiB.

Di bawah NTFS, panjang file maks lebih besar dari panjang volume maks dalam beberapa kasus bahkan.

Titik awal untuk info lebih lanjut:
http://en.wikipedia.org/wiki/Ext3#Size_limits
http://en.wikipedia.org/wiki/Btrfs
http://en.wikipedia.org/wiki/Ntfs#Skalabilitas

Perangkat Virtual

Seperti yang disebutkan dalam komentar baru-baru ini, ada pertimbangan ekstra untuk perangkat virtual:

  • Untuk disk virtual yang jarang dialokasikan, metode lain seperti yang digunakan oleh zerofree akan lebih cepat (meskipun tidak seperti cat dan dd ini bukan alat standar yang dapat Anda andalkan untuk tersedia di hampir semua OS yang mirip unix).

  • Ketahuilah bahwa memusatkan blok pada perangkat virtual jarang mungkin tidak menghapus blok pada fisik yang mendasarinya perangkat, sebenarnya saya akan mengatakan lebih jauh bahwa itu tidak mungkin - manajer disk virtual hanya akan membuat blok tidak lagi digunakan sehingga dapat dialokasikan ke hal lain nanti.

  • Bahkan untuk perangkat virtual ukuran tetap, Anda mungkin tidak memiliki kendali atas tempat tinggal perangkat secara fisik sehingga dapat dipindahkan di sekitar lokasinya saat ini atau ke kumpulan disk fisik baru kapan saja dan yang paling dapat Anda hapus adalah lokasi saat ini, bukan lokasi sebelumnya yang mungkin pernah ditempati blok tersebut.

  • Untuk masalah di atas pada perangkat virtual:kecuali jika Anda mengontrol host dan dapat melakukan penghapusan aman dari ruang yang tidak terisi setelahnya menghapus disk di VM atau memindahkan perangkat virtual, tidak ada yang dapat Anda lakukan mengenai hal ini setelah fakta. Satu-satunya jalan adalah menggunakan enkripsi disk lengkap sejak awal jadi tidak ada yang tidak terenkripsi yang ditulis ke media fisik sejak awal. Mungkin masih ada panggilan untuk menghapus ruang kosong di dalam VM tentunya. Perhatikan juga bahwa FDE dapat membuat perangkat virtual yang jarang menjadi kurang berguna karena lapisan virtualisasi tidak dapat benar-benar melihat blok mana yang tidak digunakan. Jika lapisan sistem file OS mengirimkan perintah trim ke perangkat virtual (seolah-olah itu adalah SSD), dan pengontrol virtual menafsirkannya, maka itu dapat menyelesaikan ini, tetapi saya tidak tahu keadaan apa pun di mana ini benar-benar terjadi dan yang lebih luas diskusi tentang itu adalah masalah di tempat lain (kami sudah hampir keluar dari topik untuk pertanyaan awal, jadi jika ini telah menarik minat Anda, beberapa percobaan dan/atau pertanyaan lanjutan mungkin dilakukan).


PERINGATAN

Saya terkejut dengan berapa banyak file yang dapat diambil oleh photorec dari disk saya, bahkan setelah dihapus.

Apakah lebih aman dalam mengisi "ruang kosong" hanya 1 kali dengan 0x00 atau 38 kali dengan standar kabalistik berbeda lebih merupakan diskusi akademis. Penulis makalah mani tahun 1996 tentang penghancuran menulis sendiri sebuah epilog yang mengatakan bahwa ini sudah usang dan tidak diperlukan untuk perangkat keras modern. Tidak ada kasus data yang terdokumentasi secara fisik diganti nol dan dipulihkan setelahnya.

Tautan rapuh yang sebenarnya dalam prosedur ini adalah sistem file . Beberapa sistem file mencadangkan ruang untuk penggunaan khusus, dan tidak tersedia sebagai "ruang kosong". Tetapi data Anda mungkin ada di sana . Itu termasuk foto, email teks biasa pribadi, apa pun. Saya baru saja mencari di Google reserved+space+ext4 dan mengetahui bahwa 5% dari home saya partisi dicadangkan. Saya kira di sinilah photorec menemukan begitu banyak barang saya. Kesimpulan:metode penghancuran bukan yang paling penting, bahkan metode multi-pass masih menyisakan data .

Anda dapat mencoba # tune2fs -m 0 /dev/sdn0 sebelum memasangnya. (Jika ini akan menjadi partisi root setelah reboot, pastikan jalankan -m 5 atau -m 1 setelah melepasnya).

Tapi tetap saja, dengan satu atau lain cara, mungkin masih ada ruang tersisa.

Satu-satunya cara yang benar-benar aman adalah menghapus seluruh partisi, membuat sistem file lagi, lalu memulihkan file Anda dari cadangan.

Cara cepat (disarankan)

Jalankan dari direktori pada sistem file yang ingin Anda hapus:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

Catatan:tujuan file kecil adalah untuk mengurangi waktu saat ruang kosong benar-benar nol; tujuan sinkronisasi adalah untuk memastikan data benar-benar ditulis.

Ini seharusnya cukup baik untuk kebanyakan orang.

Cara lambat (paranoid)

Tidak ada kasus data yang terdokumentasi dipulihkan setelah pembersihan di atas. Itu akan mahal dan menuntut sumber daya, jika memungkinkan sama sekali.

Namun, jika Anda memiliki alasan untuk berpikir bahwa agen rahasia akan menghabiskan banyak sumber daya untuk memulihkan file Anda, ini sudah cukup:

dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file

Butuh waktu lebih lama.

Peringatan. Jika Anda memilih cara paranoid, setelah ini Anda masih ingin melakukan penghapusan cepat, dan itu bukan paranoia. Kehadiran data acak murni mudah dan murah untuk dideteksi, dan menimbulkan kecurigaan bahwa itu sebenarnya adalah data terenkripsi. Anda mungkin mati di bawah siksaan karena tidak mengungkapkan kunci dekripsi.

Cara yang sangat lambat (paranoid gila)

Bahkan penulis makalah mani tahun 1996 tentang penghancuran menulis sebuah epilog yang mengatakan bahwa ini sudah usang dan tidak diperlukan untuk perangkat keras modern.

Namun jika Anda masih memiliki banyak waktu luang dan tidak keberatan membuang-buang disk dengan banyak penimpaan, ini dia:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file

Catatan:ini pada dasarnya sama dengan menggunakan alat hapus-aman.

Sebelum diedit, posting ini adalah penulisan ulang dari David Spillett. Perintah "cat" menghasilkan pesan kesalahan, tetapi saya tidak dapat menulis komentar pada kiriman orang lain.


Linux
  1. Cara mempartisi disk di Linux

  2. Cara Membuat Atau Menambah Ruang Swap Di Linux

  3. Cara Mengosongkan Ruang Disk pada Server Khusus

  1. Cara Mengosongkan ruang disk di server cPanel

  2. Cara:Ruang Disk Gratis Mengurangi Blok Cadangan

  3. Bagaimana cara saya secara terprogram mendapatkan ruang disk kosong untuk direktori di Linux

  1. Gunakan df untuk memeriksa ruang disk kosong di Linux

  2. Cara Menambah Nomor Disk Inode di Linux

  3. Cara mengisi hard drive di Linux