Saya tahu bahwa pertanyaan serupa telah diajukan tentang izin, tetapi bentuk kompresi atau pengarsipan mana yang menyimpan izin dan pemilik file dari setiap file dan direktori?
Saya sedang mempertimbangkan tar.gz
formatnya, tapi apakah ini benar?
Saya perlu memindahkan 37GB file dan direktori ke server lain dan membutuhkan semuanya agar sama persis saat tidak dikompresi.
Jawaban yang Diterima:
Baik alat pengarsipan tradisional tar dan cpio mempertahankan kepemilikan dan izin Unix (pengguna/grup/lainnya) serta cap waktu (dengan cpio, pastikan untuk meneruskan -m
saat mengekstrak). Jika Anda tidak menyukai sintaksis misteriusnya¹, Anda dapat menggunakan pax pengganti POSIX mereka (pax -w -pe
) Semua ini menghasilkan arsip yang tidak terkompresi; pipa arsip ke alat seperti gzip
atau xz
untuk mengompresnya (GNU tar memiliki opsi untuk melakukan kompresi). Pengguna dan grup diidentifikasi dengan nama mereka; GNU tar memiliki opsi .
Tidak satu pun dari alat ini yang mempertahankan fitur modern seperti ACL, kemampuan, konteks keamanan, atau atribut tambahan lainnya.
Beberapa versi tar dapat menyimpan ACL. Lihat Apa yang digunakan untuk mencadangkan file, melestarikan ACL? Dengan tar GNU, berikan --acls
baik saat membuat dan mengekstrak arsip.
Sistem file squashfs, seperti yang disarankan oleh mikeserv, menyimpan kemampuan dan atribut yang diperluas termasuk konteks SELinux, tetapi bukan ACL. (Anda memerlukan versi yang tidak terlalu antik.) Jika Anda memiliki konteks ACL dan keamanan, Anda dapat menggunakan sistem file squashfs, dan menyimpan ACL dengan menjalankan getfacl -R
di root sistem file asli dan pulihkan setelah mengekstrak file dengan setfacl --restore
.
Jika Anda benar-benar ingin menyimpan semuanya termasuk ACL, stempel waktu subdetik, atribut yang diperluas, dan atribut khusus sistem file, Anda dapat mengkloning sistem file. Kelemahan dari pendekatan ini adalah Anda tidak dapat dengan mudah menulis salinan terkompresi secara langsung. Cara utama untuk mengkloning sistem file adalah dengan menyalin perangkat blok; tentu saja ini boros karena menyalin ruang kosong. Atau, buat sistem file yang cukup besar untuk menyimpan semua file dan gunakan cp -a
dengan cp
perintah dari GNU coreutils untuk menyalin file; GNU cp cukup bagus dalam menyalin semuanya termasuk fitur non-tradisional seperti atribut yang diperluas dan ACL.
Meskipun yang satu ini benar-benar berlebihan.