2013-06-24 10 views
16

Ich schreibe gerade ein automatisches Backup-Skript für unsere Server. Ich verwende den UNIX-tar-Befehl im Skript, um die Code-Repositories zu archivieren.wie Dateibesitz während der Verwendung von tar zu halten

in meinem PERL-Skript i den Befehl tar bin mit wie folgt:

system("tar -jcpf $destPath/$string.tar.bz2 -X $exclusionFile $targetPath"); 

i behalten möchten Eigentümern Datei, wenn das Archiv tar zu extrahieren. Ich habe versucht, die tar-Archiv Inhalte mit

tar -jtvf 

zur Liste und die Liste enthielt den richtigen Dateieigentümer für jede Datei, aber wenn das Archiv zu extrahieren, die Dateibesitz Änderungen an den aktuellen Benutzer.

Gibt es eine Möglichkeit, ein tar-Archiv zu extrahieren und die ursprünglichen Dateieigentümer für jede Datei zu behalten?

+2

Ich werde schnell hinzufügen: Machen Sie nicht einen 'System' Befehl, wenn Sie es in reinem Perl tun können. Sehen Sie [Archiv :: Tar] (http://perldoc.perl.org/Archive/Tar.html). Es ist seit einiger Zeit Teil des Standard-Perl-Pakets. Es funktioniert in verschiedenen Betriebssystemen und gibt Ihnen eine bessere Kontrolle über Ihren Tarball. –

Antwort

12

Geben Sie die Option --same-owner Teer, während extrahieren.

tar --help sagt:

--same-owner 
      create extracted files with the same ownership 
+0

Ich habe versucht, das tar-Archiv zu extrahieren: tar --same-Besitzer -jxvf naveExample2.tbz2 während den Teer zu extrahieren und bekam folgende Fehler: tar: backup/superlinksnpTest.txt: Kann nicht den Besitzer wechseln 50537 uid , gid 50538: Operation nicht erlaubt tar: Beenden mit Fehlerstatus wegen vorheriger Fehler mache ich es falsch? – DontCareBear

+1

Sie müssen 'root' sein, um' tar' zu ermöglichen, die UID/GID des Archivinhalts zu ändern. – JRFerguson

+1

Nicht alle Implementierungen von 'tar' enthalten den Parameter' --same-owner' oder sogar das Flag '--help'. Führe immer 'man tar' durch, um zu sehen, welche optionalen Parameter deine Version von' tar' hat. –

5

Sie wollen Attribute Datei zu "bewahren", während tar -x mit dem -p Schalter zu tun. Natürlich müssen Sie root sein, um das gewünschte Ergebnis zu haben.

  -p, --insecure, --preserve-permissions 
     (x mode only) Preserve file permissions. Attempt to restore the 
     full permissions, including owner, file modes, file flags and 
     ACLs, if available, 

Viele POSIX-Systemen versenden auch pax, cpio, die als Alternativen zu tar arbeiten können.

Verwandte Themen