Solusi 1:
Lihat juga rm di direktori dengan jutaan file; terkait secara tangensial, tetapi kami membahasnya di sana.
Sejauh yang saya ketahui, setidaknya pada ext2/3, tidak, tidak ada cara (online) untuk mengecilkannya dengan menghapus + membuat ulang. Dilepas, beberapa sumber menyarankan e2fsck -D
mungkin berhasil, meskipun saya tidak dapat mengklaim pengalaman pribadi dengan opsi itu.
Beberapa referensi untuk bacaan lebih lanjut:
- http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-05/threads.html#06569
- http://fedoraforum.org/forum/showthread.php?t=120654
Solusi 2:
Saya baru-baru ini harus menghapus dan membuat ulang direktori NFS untuk mengecilkan ukurannya setelah sebelumnya membengkak. Dalam prosesnya, saya menemukan cara yang cukup efisien untuk melakukannya menggunakan rsync dan tautan keras. Metode ini menghindari penyalinan file sebenarnya, sambil tetap mencapai tujuan membuat ulang direktori dengan konten yang sama.
Karena kami perlu mengambil waktu henti untuk melakukan operasi ini selama masa pemeliharaan kami, membuat direktori yang dibangun kembali tersedia sesegera mungkin adalah penting bagi kami. Jika kesederhanaan lebih penting bagi Anda, ubah perintah langkah pertama menjadi 'rm -rf' pada direktori sumber, dan lewati perintah 'rm -rf' lainnya.
Saya mengekstrak perintah ini dari proses yang lebih besar, dan mengabstraksi nama direktori, jadi mohon maaf jika saya membuat kesalahan dalam terjemahan itu.
mkdir /tmp/holding_dir/
rsync -ai --delete --link-dest=/path/to/source_dir/ /path/to/source_dir/ /tmp/holding_dir/
mv /path/to/source_dir/ /tmp/deleteme/
mv /tmp/holding_dir/ /path/to/source_dir/
Kemudian nanti, kami menghapus direktori. Bergantung pada ukurannya, Anda mungkin perlu menggunakan teknik yang lebih canggih untuk melakukannya. Misalnya, menggunakan rsync dengan flag --delete untuk menyinkronkan direktori kosong ke direktori ini mungkin lebih efisien.
rm -rf /tmp/deleteme/
Solusi 3:
Saya akan melakukannya seperti ini.
cp -al
lama direktori baru
&&
mv
direktori lama nama sementara
&&
mv
direktori baru direktori lama
&&
rm -r
nama sementara
di mana olddir adalah direktori yang ingin Anda susutkannewdir dan namatemp adalah nama file sementara
cp -al
membuat tautan ke konten olddir di direktori baru dan tiga perintah berikutnya menukarnya dengan direktori baru dan bersihkan.