Sichern Sie Daten unter Beibehaltung von POSIX-ACLs und -Berechtigungen

Sichern Sie Daten unter Beibehaltung von POSIX-ACLs und -Berechtigungen

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 -aclOption 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 somedirin 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 --xattrsOptionen und natürlich die entsprechenden Berechtigungen zum Lesen/Schreiben dieserUnd.

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 zstdkomprimiertes tarArchiv unter Verwendung der Komprimierungsstufe erstellt 19, wobei die ACLs und erweiterten Attribute erhalten bleiben.

  • Die .tzstErweiterung bedeutet "einArchivieren mitKompression", genau wie tgzfür eine'ed-Version usw.
  • Die vom impliziten Kompressor verwendete Komprimierungsstufe wird durch die bereitgestellte Umgebungsvariable am Anfang in derselben Zeile zstdfestgelegt .ZSTD_CLEVEL
  • Siehe Manpages: tar(1)und zstd(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, systemdda es sich dabei um das gemeinsame Stammverzeichnis im Archiv handelt.

  • Alle Einstellungen, die Sie mit//in 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 letzte cd -Befehl „als separater Befehl“ nur Ihr aktuelles Verzeichnis wiederherstellt.)
  • Sie sollten auch von der Diff-Zeile keine Ausgabe sehen, da kein Unterschied besteht.

verwandte Informationen