Apa yang harus digunakan untuk membuat cadangan file, menjaga ACL?

24

Saat menggunakan utilitas tar untuk menyimpan file dalam cadangan, seseorang kehilangan ACL yang diperluas.

Apakah ada beberapa solusi yang umum digunakan dan tidak diretas (seperti: membuat skrip yang akan membaca ACL dari awal) untuk melestarikan ACL?

sutra
sumber
1
Lihat juga pertanyaan duplikat ini .
Totor

Jawaban:

4

Menggunakan tar

Untuk membuat:

tar --acls -cpf backup.tar some-dir-or-file

Untuk untar:

tar --acls -xpf backup.tar
Scott Grayban
sumber
3
tar: unrecognized option '--acls'tidak bekerja.
maniat1k
1
Fedora memiliki tambalan GNU Tar non-standar yang mencakup--acls
user55149
3
Di Debian, tartidak mendukung --aclssampai jessie. (Lihat bug # 732071. ) Fitur ini juga tersedia dalam paket dari wheezy-backports.
Alastair Irvine
Perhatikan bahwa wheezy-backportsversi mengatakan tarmemiliki --aclsopsi opsi bug . Ekstraksi tarball menggunakan opsi tersebut akan menetapkan ACL, bahkan jika arsip tidak memilikinya (!). Lihat di sini .
Penggali
14

Sebenarnya, saya percaya pertanyaannya bukan tentang bit izin file (standar), tetapi informasi ACL diperpanjang (lihat setfacl (1) atau acl (5)).

Sepengetahuan saya, tar GNU yang tidak dimodifikasi mengabaikan informasi ACL. (Halaman manual untuk GNU tar 1.15.1 sebagaimana dikirimkan dengan RHEL 5.2 menyebutkan sakelar --acl dan --no-acl, tapi saya belum membuatnya berfungsi.)

Namun, program bintang dapat membuat cadangan dan memulihkan ACL, jika Anda memilih format exustar :

star -c -p -acl artype=exustar -f archive.tar  files...
star -x -acl -f archive.tar

Halaman rumah bintang: http://cdrecord.berlios.de/new/private/star.html Star tersedia di ubuntu, setidaknya.

bhm
sumber
Ini seperti yang saya cari, saya harus memeriksanya. Sekarang saya perlu membeli beberapa jam lagi per hari;)
sutra
3
startidak tersedia di Debian dan tampaknya tidak dikelola oleh "tim". Proyek ini masih hidup dan dipertahankan setelah lebih dari 30 tahun. Coba bsdtarjika Anda menginginkan sesuatu yang lain.
Totor
1
setelah penutupan belios Anda dapat menemukannya di sini: sourceforge.net/projects/s-tar/files
Jonas Stein
9

Saya mencari solusi sejauh ini saya menemukan ini:

pertama lakukan getfactl dari folder saya

getfacl -R /a_folder > folder.acl

kemudian lakukan tar reguler

tar -czvf folder.tar.gz /a_folder

ketika saya mengekstraknya

tar -xvf folder.tar.gz

lakukan setfacl untuk izin.

setfacl --restore=folder.acl

ini bekerja untuk saya.

maniat1k
sumber
1
Terima kasih. Tidak ada yang berhasil untuk saya di halaman ini [saya benar-benar bersungguh-sungguh, saya bahkan mengkompilasi bintang dari sumber, tetapi gagal melakukan pekerjaan]. Tapi ini memang berhasil. Meski tidak elegan, tetapi bekerja dengan sempurna.
ashishsony
5
rsync with the -A and/or -X options.
Skaperen
sumber
2

Jika Anda mencari solusi yang mudah digunakan namun kuat, saya sarankan rdiff-backup.

Pada dasarnya, ini membuat salinan direktori sumber ke direktori tujuan tetapi juga menyimpan informasi tambahan sehingga Anda dapat kembali ke waktu kapan pun Anda mau.

Dan, tentu saja, mempertahankan symlink, file khusus, hardlink, izin, kepemilikan uid / gid dan waktu modifikasi.

Pablo Antonio
sumber
2

Saya sarankan Anda untuk menggunakan bsdtar.

bsdtar cadangan diperpanjang ACL secara default , menggunakan sintaks yang sama seperti GNU tar, dan arsip yang dihasilkannya dapat dibaca oleh GNU tar.

Paket dan nama perintah (di bawah distribusi berbasis Debian) adalah bsdtar.

bsdtar cf archive.tar /my/folder/using/extd_acl 
bsdtar xf archive.tar 

Perintah ke-2 (ekstrak) mengembalikan ACL.

Totor
sumber
Saya tidak bisa membuatnya bekerja, meskipun saya yakin itu berhasil beberapa waktu yang lalu. Mengarsipkan bug, code.google.com/p/libarchive/issues/detail?id=329 .
Ambroz Bizjak
Sama di sini sebenarnya ... Saya mencobanya di Debian 8 Jessie dan tidak berhasil. :(
Totor
Saya menggunakannya di Debian (x64, PC) sejak beberapa tahun tanpa masalah (wheezy, jessie, dan saat ini membentang di beberapa mesin).
Binarus
1

Dari tar Man Page.

-p, --sama-izin, --preserve-izin
             abaikan umask saat mengekstraksi file (default untuk root)

Sebenarnya bukan tindakan pengarsipan yang mengubah izin akses (ACL), tetapi tindakan membongkar mereka. Tar sangat sering digunakan untuk mendistribusikan file dari satu pengguna ke pengguna lain, dan karenanya dianggap nyaman untuk menerapkan umask pengguna saat mereka membongkar.

Untuk mempertahankan file izin sebelumnya, cukup iklankan ap untuk opsi Anda. Sebagai contoh

Tar lurus:

tar xvp some-file

bz.tar:

tar xvjp some-file

gz.tar:

tar xvzp some-file
Eli Frey
sumber
ini tidak bekerja.
maniat1k
1
Selanjutnya tar secara otomatis mencari tahu apa yang harus diekstrak. Tidak perlu melewati 'j' atau 'z'.
Orang Baik