Was ist zum Sichern von Dateien unter Beibehaltung von ACLs zu verwenden?

24

Bei Verwendung des Dienstprogramms tar zum Speichern von Dateien in Sicherungen gehen die erweiterten ACLs verloren.

Gibt es eine häufig verwendete und nicht hackige Lösung (wie: Erstellen Sie ein Skript, das die ACLs von Grund auf neu erstellt), um die ACLs zu erhalten?

die Seide
quelle
1
Siehe auch diese doppelte Frage .
Totor

Antworten:

4

Mit tar

Erschaffen:

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

Zu enttarieren:

tar --acls -xpf backup.tar
Scott Grayban
quelle
3
tar: unrecognized option '--acls'funktioniert nicht.
Maniat1k
1
Fedora hat nicht-standardmäßige GNU Tar-Patches, die --acls
Folgendes
3
In Debian tarnicht unterstützt , --aclsbis jessie. (Siehe Fehler # 732071. ) Die Funktion ist auch im Paket von verfügbar wheezy-backports.
Alastair Irvine
Beachten Sie, dass diese wheezy-backportsVersion tareinen Fehler bezüglich der --aclsOption hat. Die Tarball-Extraktion mit dieser Option weist ACLs zu, auch wenn das Archiv keine (!) Hatte. Sehen Sie hier .
Digger
14

Eigentlich ging es meiner Meinung nach nicht um die (Standard-) Dateiberechtigungsbits, sondern um erweiterte ACL-Informationen (siehe setfacl (1) oder acl (5)).

Meines Wissens ignoriert der unveränderte GNU-Teer ACL-Informationen. (Die mit RHEL 5.2 gelieferte Manpage für GNU tar 1.15.1 erwähnt die Schalter --acls und --no-acls, aber ich habe sie nicht zum Laufen gebracht.)

Das Star- Programm kann jedoch ACLs sichern und wiederherstellen, wenn Sie das exustar- Format auswählen :

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

Star-Homepage: http://cdrecord.berlios.de/new/private/star.html Star ist mindestens in Ubuntu verfügbar.

bhm
quelle
Das sieht so aus, wie ich es suche, das muss ich mir ansehen. Jetzt muss ich noch ein paar Stunden pro Tag kaufen;)
Seide
3
starist nicht auf Debian verfügbar und scheint nicht von einem "Team" gewartet zu werden. Das Projekt ist jedoch noch am Leben und wird nach über 30 Jahren beibehalten. Versuchen Sie es, bsdtarwenn Sie etwas anderes wollen.
Totor
1
nach dem herunterfahren von belios finden sie es hier: sourceforge.net/projects/s-tar/files
Jonas Stein
9

Ich suche auch nach einer Lösung, bis jetzt habe ich folgendes gefunden:

mach zuerst ein getfactl aus meinem ordner

getfacl -R /a_folder > folder.acl

dann machen Sie einen normalen Teer

tar -czvf folder.tar.gz /a_folder

wenn ich es extrahiere

tar -xvf folder.tar.gz

setfacl für die Berechtigungen.

setfacl --restore=folder.acl

das funktioniert bei mir

maniat1k
quelle
1
Vielen Dank. Auf dieser Seite hat nichts für mich geklappt [ich meine es wirklich so, ich habe sogar Sterne aus dem Quellcode kompiliert, aber es hat nicht funktioniert]. Aber das hat tatsächlich funktioniert. Obwohl nicht elegant, funktioniert aber perfekt.
Ashishsony
5
rsync with the -A and/or -X options.
Skaperen
quelle
2

Wenn Sie nach einer einfach zu verwendenden und dennoch leistungsstarken Lösung suchen, würde ich empfehlen rdiff-backup.

Grundsätzlich wird eine Kopie eines Quellverzeichnisses in ein Zielverzeichnis erstellt, es werden jedoch auch zusätzliche Informationen gespeichert, sodass Sie jederzeit in die Vergangenheit zurückkehren können.

Und natürlich werden Symlinks, spezielle Dateien, Hardlinks, Berechtigungen, UID / GID-Eigentumsrechte und Änderungszeiten beibehalten.

Pablo Antonio
quelle
2

Ich schlage vor, Sie zu verwenden bsdtar.

bsdtar Backups Extended ACL verwendet standardmäßig die gleiche Syntax wie GNU tarund die von ihm erstellten Archive können von gelesen werden GNU tar.

Der Paket- und Befehlsname (unter Debian-basierten Distributionen) lautet bsdtar.

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

Mit dem zweiten Befehl (Extrahieren) werden ACLs wiederhergestellt.

Totor
quelle
Ich kann es nicht zum Laufen bringen, obwohl ich mir sicher bin, dass es vor einiger Zeit funktioniert hat. Code.google.com/p/libarchive/issues/detail?id=329 hat einen Fehler gemeldet .
Ambroz Bizjak
Das Gleiche hier tatsächlich ... Ich habe es auf Debian 8 Jessie versucht und es hat nicht funktioniert. :(
Totor
Ich benutze es seit einigen Jahren problemlos auf Debian (x64, PC) (Wheezy, Jessie und derzeit auf mehreren Rechnern).
Binarus
1

Aus der Man Page tar.

-p, --same-permissions, --preserve-permissions
             ignorieren umask beim Extrahieren von Dateien (der Standard für root)

Es ist nicht der Vorgang des Archivierens, der die Zugriffsberechtigungen (ACLs) ändert, sondern der Vorgang des Entpackens. Tar wird sehr oft verwendet, um Dateien von einem Benutzer auf einen anderen zu verteilen, und daher wird es für zweckmäßig gehalten, beim Entpacken eines Benutzers eine umask anzuwenden .

Um die vorherigen Berechtigungen für die Dateien beizubehalten, müssen Sie lediglich Ihre Optionen angeben. Beispielsweise

Straight Teer:

tar xvp some-file

bz.tar:

tar xvjp some-file

gz.tar:

tar xvzp some-file
Eli Frey
quelle
Das funktioniert nicht.
Maniat1k
1
Außerdem findet tar automatisch heraus, was zu extrahieren ist. Es ist nicht erforderlich, 'j' oder 'z' zu übergeben.
Gute Person