Pertama-tama, file jarang hanya ditangani secara transparan jika Anda mencari, bukan jika Anda menulis angka nol.
Untuk membuatnya lebih jelas, contoh dari Wikipedia
dd if=/dev/zero of=sparse-file bs=1k count=0 seek=5120
tidak tidak tulis angka nol apa pun, itu akan membuka file keluaran, mencari (melompati) 5 MB, lalu menulis nol nol (yaitu tidak ada sama sekali). Perintah ini (tidak dari Wikipedia)
dd if=/dev/zero of=sparse-file bs=1k count=5120
akan menulis 5MB nol dan tidak akan membuat file jarang!
Akibatnya, file yang sudah non-sparse tidak akan secara ajaib menjadi jarang nanti.
Kedua, untuk membuat file dengan banyak nol kosong, Anda harus cp itu
cp --sparse=always original sparsefile
atau Anda juga dapat menggunakan opsi --sparse dari tar atau rsync.
Mungkin cara termudah untuk memisahkan file adalah dengan menggunakan fallocate
utilitas sebagai berikut:
fallocate -v --dig-holes {file_name}
fallocate(1) disediakan oleh paket util-linux di Debian.
Mengedit jawaban saya untuk kelengkapan:
- Balon ruang FS kosong dengan nol (PERINGATAN:ini mengubah gambar disk Anda):
losetup --partscan --find --show disk.img
Asumsikan itu memberikan /dev/loop1 sebagai disk dan hanya ada satu partisi, jika tidak, kita perlu mengulang ini untuk setiap partisi dengan FS yang dapat dipasang di dalamnya (abaikan partisi swap, dll.).
mkdir -p /mnt/tmp
mount /dev/loop1p1 /mnt/tmp
dd if=/dev/zero of=/mnt/tmp/tempfile
Biarkan selesai sampai gagal dengan ENOSPC.
/bin/rm -f /mnt/tmp/tempfile
umount /mnt/tmp
losetup -d /dev/loop1
- Salin ke gambar renggang:
'dd' memiliki opsi untuk mengonversi file dengan nol menjadi file jarang:
dd if=disk.img of=disk-sparse.img conv=sparse