Saya ingin membuat file tar di mana semua direktori dan file diproses dalam urutan abjad. Ini untuk seluruh hierarki direktori yang sedang ditutup, jadi itu akan mulai dengan memproses direktori pertama secara alfabet, dan kemudian sub-direktori di sana secara alfabet, dll. Saya melihat-lihat halaman manual dan tidak dapat menemukan saklar untuk ini.
Saya akui, ini setengah baru, setengah sedikit optimasi. Saya hanya tidak percaya bahwa tidak ada cara mudah untuk melakukan ini. Saya pasti melewatkan sesuatu.
Jawaban:
Slartibartfast berada di jalur yang benar, tetapi perilaku default tar adalah turun ke direktori, jadi Anda bisa mendapatkan lebih dari satu salinan file yang sama yang termasuk dalam file tar yang dihasilkan. Anda dapat memeriksa dengan melakukan
tar tf file.tar | sort
solusinya adalah dengan menyertakan opsi --no-recursion ke tar. Selain itu, Anda harus dapat mengirim nama file aneh dengan menggunakan-print0
opsi untuk menemukan, kemudian menggunakan--null
opsi untuk tar. Hasil akhirnya terlihat seperti ini:find paths -print0 | sort -z | tar cf tarfile.tar --no-recursion --null -T -
Anda dapat memeriksa pesanan dalam file tar dengan menggunakan
tar tsf tarfile.tar
. Meskipun Anda mungkin tidak akan memerlukan opsi -print0, -z, dan --null kecuali Anda tahu Anda akan menemukan nama file dengan baris baru yang tertanam di dalamnya, saya belum pernah mencobanya.sumber
Urutan file dalam file tar tidak terlalu penting, karena ketika file diekstraksi, sistem file tidak akan mempertahankan urutannya.
Tidak ada saklar untuk ini, tetapi jika Anda benar-benar menginginkannya, Anda bisa menyediakan tar dengan daftar nama file dalam urutan, dan itu akan membuat file tar dengan urutan yang Anda berikan.
sumber
tar tf tarfile | sort
Dengan asumsi Anda tidak memiliki file dengan baris baru di namanya:
Jika itu tidak berhasil (tidak pernah mencobanya, jadi saya tidak tahu - berarti stdin untuk argumen -T):
Lalu ada pertanyaan mengapa. Namun terkadang lebih mudah untuk tidak bertanya.
sumber
Pax adalah semacam penerus POSIX untuk cpio dan tar dan jenis sekering aspek terbaik dari keduanya. Ini menulis arsip tar (ustar) secara default. Ini juga melakukan spanning otomatis dan meminta media dan mencetak ringkasan ketika sudah selesai.
sumber
Sebagai alternatif dari jawaban @ CharlieHerron, jika Anda hanya tertarik untuk mempertahankan konten (file, symlink) dan folder meta-data (misalnya, izin folder, mtime, dll.), Anda mungkin ingin menyaring folder dari
find
output.sumber