![Sichern Sie Daten unter Beibehaltung von POSIX-ACLs und -Berechtigungen](https://rvso.com/image/488051/Sichern%20Sie%20Daten%20unter%20Beibehaltung%20von%20POSIX-ACLs%20und%20-Berechtigungen.png)
Ich suche nach einer praktischen Möglichkeit, Daten von einem Server zu sichern und dabei alle ACLs und Berechtigungen beizubehalten. Ich habe mir tar angesehen, aber laut Google speichert tar keine ACLs. Ich weiß, dass rsync ACLs und Berechtigungen behalten kann, aber nur, wenn das Zielsystem POSIX-ACLs unterstützt und dieselben Benutzer hat. In meinem Fall mache ich die Sicherung in einem Verzeichnis, das sich auf AFS befindet, daher werden POSIX-ACLs nicht unterstützt.
Im Moment habe ich das Problem gelöst, indem ich ein Skript geschrieben habe, das find verwendet, um rekursiv durch das System zu gehen (ich verwende find, weil ich einige Verzeichnisse ausschließen möchte) und die Berechtigungen und ACLs in einer Textdatei speichert. Diese Lösung funktioniert, ist aber quälend langsam. Gibt es eine bessere Lösung?
Antwort1
apt-get install star
man star
star -acl -whatever -other -options -you -need
Star ist ein Tar mit Unterstützung für erweiterte POSIX-Header, d. h. die Möglichkeit, einige zusätzliche Daten über eine Datei in der Tar-Datei zu speichern. Die -acl
Option ruft die ACLs ab; Sie benötigen sie sowohl für die Archiverstellung als auch für die Extraktion.
Antwort2
Wenn Sie kein weiteres Programm installieren möchten, können Sie die ACLs separat sichern:
getfacl -R somedir > acls.txt
Dadurch werden alle ACLs somedir
in die Datei geschrieben acls.txt
.
Zum Wiederherstellen verwenden Sie:
setfacl -R --set-file=acls.txt somedir
Antwort3
neben Stern können Sie verwendenbsdtar
Antwort4
Ich poste meine Antwort hier:https://unix.stackexchange.com/a/725745/550161
Beim Erstellen/Entpacken des Archivs müssen Sie sowohl die--acls
Und --xattrs
Optionen und natürlich die entsprechenden Berechtigungen zum Lesen/Schreiben dieseraclUndxattr.
Beispiele:
1. Erstellen des Archivs:
ZSTD_CLEVEL=19 tar --acls --xattrs -caPf systemd-network-conf.tzst --directory=/etc systemd/network systemd/networkd.conf.d
Mit dem oben genannten Befehl wird ein zstd
komprimiertes tar
Archiv unter Verwendung der Komprimierungsstufe erstellt 19
, wobei die ACLs und erweiterten Attribute erhalten bleiben.
- Die
.tzst
Erweiterung bedeutet "einTeerArchivieren mitzstdKompression", genau wietgz
für einegzip'ed-Version usw. - Die vom impliziten Kompressor verwendete Komprimierungsstufe wird durch die bereitgestellte Umgebungsvariable am Anfang in derselben Zeile
zstd
festgelegt .ZSTD_CLEVEL
- Siehe Manpages:
tar(1)
undzstd(1)
.
2. Extrahieren des Archivs:
sudo tar --acls --xattrs -xvf systemd-network-conf.tzst
Durch das Obige wird in Ihrem aktuellen Verzeichnis ein Unterverzeichnis mit dem Namen erstellt, systemd
da es sich dabei um das gemeinsame Stammverzeichnis im Archiv handelt.
- Alle Einstellungen, die Sie mitchown/chmod/setfaclin den Originalen bleiben in der extrahierten Version erhalten.
3. Vergleichen der ursprünglichen und extrahierten Dateiattribute.
{cd /etc; getfacl -R systemd/network systemd/networkd.conf.d} >original.acl; cd -
getfacl -R systemd/network systemd/networkd.conf.d >extracted.acl
diff -u original.acl extracted.acl
- Von den ersten beiden Zeilen sollte keine Ausgabe angezeigt werden, da eine Umleitung in eine Datei erfolgt.
(Ausnahme für die erste Zeile, in der Ihr aktuelles Verzeichnis ausgegeben wird, da der letztecd -
Befehl „als separater Befehl“ nur Ihr aktuelles Verzeichnis wiederherstellt.) - Sie sollten auch von der Diff-Zeile keine Ausgabe sehen, da kein Unterschied besteht.