สิ่งที่ต้องใช้ในการสำรองไฟล์รักษา ACLs


24

เมื่อใช้ยูทิลิตี tar เพื่อเก็บไฟล์ในการสำรองข้อมูลหนึ่งจะสูญเสีย ACL ที่ขยายเพิ่ม

มีบางส่วนที่ใช้กันทั่วไปและไม่ใช่โซลูชันแฮ็ค (เช่น: สร้างสคริปต์ที่จะคำนวณ ACLs ใหม่ตั้งแต่เริ่มต้น) เพื่อรักษา ACLs หรือไม่


คำตอบ:


4

ใช้น้ำมันดิน

เพื่อสร้าง:

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

วิธี untar:

tar --acls -xpf backup.tar

3
tar: unrecognized option '--acls'ไม่สำเร็จ.
maniat1k

1
Fedora มีแพทช์ GNU Tar ที่ไม่ได้มาตรฐานซึ่งประกอบด้วย--acls
user55149

3
ในเดเบียนtarไม่สนับสนุน--aclsจนกระทั่งเจสซี่ (ดูข้อผิดพลาด # 732071 .) wheezy-backportsคุณลักษณะที่ยังมีอยู่ในแพคเกจจาก
Alastair Irvine

โปรดทราบว่าwheezy-backportsรุ่นที่กล่าวtarมีข้อผิดพลาด--aclsตัวเลือก การสกัด Tarball โดยใช้ตัวเลือกดังกล่าวจะกำหนด acl แม้ว่าไฟล์เก็บถาวรจะไม่มี (!) ดูที่นี่
ผู้ขุด

14

ที่จริงฉันเชื่อว่าคำถามไม่ได้เกี่ยวกับบิตสิทธิ์ของไฟล์ (มาตรฐาน) แต่ข้อมูล ACL ที่ขยายเพิ่ม (ดู setfacl (1) หรือ acl (5))

สำหรับความรู้ของฉัน tar GNU ที่ไม่ได้แก้ไขจะไม่สนใจข้อมูล ACL (หน้า man สำหรับ GNU tar 1.15.1 ตามที่จัดส่งมาพร้อมกับ RHEL 5.2 กล่าวถึงสวิตช์ - acls และ - no-acls แต่ฉันไม่ได้ทำให้ใช้งานได้)

อย่างไรก็ตามโปรแกรมดาวสามารถสำรองและกู้คืน ACL ได้หากคุณเลือกรูปแบบexustar :

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

ติดดาวหน้าแรก: http://cdrecord.berlios.de/new/private/star.html Star มีให้บริการใน Ubuntu อย่างน้อย


ดูเหมือนว่าสิ่งที่ฉันแสวงหาฉันจะต้องดูว่า ตอนนี้ฉันต้องการซื้ออีกหลายชั่วโมงต่อวัน;)
ผ้าไหม

3
starไม่พร้อมใช้งานบน Debian และดูเหมือนจะไม่ได้รับการดูแลรักษาโดย "ทีม" โครงการยังคงมีชีวิตอยู่และได้รับการบำรุงรักษาหลังจาก 30 ปีขึ้นไป ลองbsdtarถ้าคุณต้องการอย่างอื่น
Totor

1
หลังจากปิด belios คุณสามารถค้นหาได้ที่นี่: sourceforge.net/projects/s-tar/files
Jonas Stein

9

ฉันกำลังมองหาวิธีการแก้ปัญหาเช่นกันจนถึงตอนนี้ฉันพบสิ่งนี้:

ทำ getfactl จากโฟลเดอร์ของฉันก่อน

getfacl -R /a_folder > folder.acl

จากนั้นทำ tar ปกติ

tar -czvf folder.tar.gz /a_folder

เมื่อฉันดึงมันออกมา

tar -xvf folder.tar.gz

ทำ setfacl สำหรับการอนุญาต

setfacl --restore=folder.acl

มันใช้งานได้สำหรับฉัน


1
ขอบคุณ ไม่มีอะไรที่เหมาะกับฉันในหน้านี้ [ฉันหมายถึงมันจริงๆฉันยังรวบรวมดาวจากแหล่งที่มา แต่มันก็ล้มเหลวในการทำงาน] แต่นี่ใช้ได้ผลจริง แม้ว่าจะไม่ได้สง่างาม แต่ก็ใช้งานได้อย่างสมบูรณ์แบบ
Ashishsony


2

rdiff-backupหากคุณกำลังมองหาวิธีการแก้ปัญหาที่มีประสิทธิภาพยังง่ายต่อการใช้งานผมอยากแนะนำให้

โดยพื้นฐานแล้วมันจะทำสำเนาของไดเรกทอรีต้นทางไปยังไดเรกทอรีปลายทาง แต่ก็ยังบันทึกข้อมูลเพิ่มเติมเพื่อให้คุณสามารถย้อนเวลากลับไปได้ทุกเมื่อที่คุณต้องการ

และแน่นอนว่ามันจะรักษา symlink, ไฟล์พิเศษ, hardlinks, การอนุญาต, ความเป็นเจ้าของ uid / gid และเวลาการแก้ไข


2

bsdtarผมขอแนะนำให้คุณใช้

bsdtar การสำรองข้อมูลขยาย ACL โดยค่าเริ่มต้นจะใช้ไวยากรณ์เดียวกันเป็นGNU tar, GNU tarและเก็บมันผลิตสามารถอ่านได้จาก

แพคเกจและชื่อคำสั่ง (ภายใต้การกระจาย Debian based) bsdtarคือ

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

คำสั่งที่ 2 (แยก) กู้คืน ACLs


ฉันไม่สามารถใช้งานได้แม้ว่าฉันจะแน่ใจว่ามันใช้งานได้เมื่อนานมาแล้ว ยื่นข้อผิดพลาดcode.google.com/p/libarchive/issues/detail?id=329
Ambroz Bizjak

กันที่นี่จริง ๆ ... ฉันลองใช้ Debian 8 Jessie แล้วก็ใช้ไม่ได้ :(
Totor

ฉันใช้มันกับ Debian (x64, PC) มาหลายปีแล้วโดยไม่มีปัญหา (เสียงดังเจสซี่เจสซี่และปัจจุบันใช้กับเครื่องหลายเครื่อง)
Binarus

1

จากหน้า Man tar

-p, --same-permission, --preserve-permission
             ละเว้น umask เมื่อทำการแตกไฟล์ (ค่าเริ่มต้นสำหรับ root)

มันไม่ได้เป็นการกระทำของการเก็บถาวรที่เปลี่ยนแปลงสิทธิ์การเข้าถึง (ACLs) แต่เป็นการกระทำของการคลายออก กลาสีเรือมักถูกใช้เพื่อแจกจ่ายไฟล์จากผู้ใช้รายหนึ่งไปยังอีกคนหนึ่งและดังนั้นจึงเป็นเรื่องที่สะดวกที่จะใช้ผู้ใช้ขอumaskเมื่อแกะ

เพื่อรักษาสิทธิ์ก่อนหน้าไฟล์เพียง ad ap สำหรับตัวเลือกของคุณ ตัวอย่างเช่น

น้ำมันดินตรง:

tar xvp some-file

bz.tar:

tar xvjp some-file

gz.tar:

tar xvzp some-file

สิ่งนี้ใช้ไม่ได้
maniat1k

1
นอกจากนี้ tar โดยอัตโนมัติจะระบุสิ่งที่จะแยกออก ไม่จำเป็นต้องผ่าน 'j' หรือ 'z'
คนดี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.