GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Komprimierung / Archivierung, die Berechtigungen und Dateibesitzer behält?

Ich weiß, dass ähnliche Fragen zu Berechtigungen gestellt wurden, aber welche Form der Komprimierung oder Archivierung bewahrt die Berechtigungen und Dateibesitzer jeder Datei und jedes Verzeichnisses?

Ich habe an tar.gz gedacht Format, aber wäre das richtig?

Ich muss 37 GB an Dateien und Verzeichnissen auf einen anderen Server verschieben und alles muss unkomprimiert genau gleich sein.

Akzeptierte Antwort:

Beide traditionellen Archivierungstools tar und cpio bewahren Eigentum und Unix-Berechtigungen (Benutzer/Gruppe/Andere) sowie Zeitstempel (bei cpio müssen Sie unbedingt -m übergeben beim Ausziehen). Wenn Ihnen ihre obskure Syntax¹ nicht gefällt, können Sie ihren POSIX-Ersatz pax (pax -w -pe ) Alle geben ein unkomprimiertes Archiv aus; Pipe das Archiv in ein Tool wie gzip oder xz um es zu komprimieren (GNU tar hat Optionen, um die Komprimierung durchzuführen). Benutzer und Gruppen werden anhand ihres Namens identifiziert; GNU tar hat eine Option .

Keines dieser Tools bewahrt moderne Funktionen wie ACL, Fähigkeiten, Sicherheitskontexte oder andere erweiterte Attribute.

Einige Versionen von tar können ACL speichern. Siehe Was zum Sichern von Dateien verwenden, ACLs beibehalten? Übergeben Sie mit GNU tar --acls sowohl beim Erstellen als auch beim Extrahieren des Archivs.

Ein squashfs-Dateisystem, wie von Mikeserv vorgeschlagen, speichert Fähigkeiten und erweiterte Attribute, einschließlich SELinux-Kontext, aber nicht ACL. (Sie brauchen Versionen, die nicht zu alt sind.) Wenn Sie sowohl ACL- als auch Sicherheitskontexte haben, können Sie ein squashfs-Dateisystem verwenden und die ACL speichern, indem Sie getfacl -R ausführen im Stammverzeichnis des ursprünglichen Dateisystems und stellen Sie sie nach dem Extrahieren der Dateien mit setfacl --restore wieder her .

Wenn Sie absolut alles speichern möchten, einschließlich ACL, Subsekunden-Zeitstempel, erweiterte Attribute und dateisystemspezifische Attribute, können Sie das Dateisystem klonen. Der Nachteil dieses Ansatzes ist, dass Sie nicht bequem direkt eine komprimierte Kopie schreiben können. Die ultimative Möglichkeit, das Dateisystem zu klonen, besteht darin, das Blockgerät zu kopieren. Dies ist natürlich verschwenderisch, da es den leeren Raum kopiert. Erstellen Sie alternativ ein Dateisystem, das groß genug ist, um alle Dateien zu speichern, und verwenden Sie cp -a mit dem cp Befehl von GNU Coreutils zum Kopieren der Dateien; GNU cp ist ziemlich gut darin, alles zu kopieren, einschließlich nicht-traditioneller Features wie erweiterte Attribute und ACLs.

Siehe auch:TextEdit hat die HTML-Datei im geöffneten Zustand in RTF umgewandelt – wie rückgängig machen?

¹ Obwohl dieser wirklich übertrieben ist.


Linux
  1. So kopieren Sie Dateiberechtigungen und Eigentumsrechte in eine andere Datei in Linux

  2. So ändern Sie Berechtigungen und Eigentümer über die Befehlszeile

  3. So extrahieren Sie .gz- und .tar.gz-Dateien unter Linux

  4. Wie dekomprimiere ich das .xz-Dateiformat unter Linux mit den Dienstprogrammen tar und xz?

  5. Linux – Unix-Berechtigungen und Dateitypen verstehen?

Linux-Dateiberechtigungen und Eigentumsrechte mit Beispielen erklärt

Linux-tar-Befehl zum Komprimieren und Extrahieren von Dateien

Verwalten Sie Verzeichnis- und Dateiberechtigungen mit chmod Recursive

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen

Was ist effizienter - tar- oder zip-Komprimierung? Was ist der Unterschied zwischen tar und zip?

Mounten Sie mit sshfs und schreiben Sie Dateiberechtigungen