2013-06-24 8 views
16

Attualmente sto scrivendo uno script di backup automatico per i nostri server. sto usando il comando tar UNIX nello script per archiviare i repository di codice.come mantenere la proprietà dei file durante l'utilizzo di tar

nel mio script PERL Sto usando il comando tar nel modo seguente:

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

voglio mantenere ownership di file quando si estrae l'archivio tar. ho provato a elencare il contenuto dell'archivio tar con

tar -jtvf 

e l'elenco contenuto le proprietà di file corretto per ogni file, ma quando si estrae l'archivio, i cambiamenti di proprietà di file per l'utente corrente.

c'è un modo per estrarre un archivio tar e mantenere le proprietà del file originale per ogni file?

+2

Aggiungo rapidamente: non eseguire un comando 'system' quando è possibile farlo in puro Perl. Guarda [Archive :: Tar] (http://perldoc.perl.org/Archive/Tar.html). Fa parte del pacchetto Perl standard per un po 'di tempo. Funzionerà in vari sistemi operativi e ti darà un controllo migliore sul tuo tarball. –

risposta

12

Fornire l'opzione --same-owner a tar mentre estraendo.

tar --help dice:

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

Ho cercato di estrarre l'archivio tar: tar --same-proprietario -jxvf naveExample2.tbz2 durante l'estrazione del catrame e ha ottenuto i seguenti errori: tar: backup/superlinksnpTest.txt: non può cambiare proprietà al uid 50537 , gid 50538: Operazione non consentita tar: uscita con stato di errore a causa di errori precedenti sto sbagliando? – DontCareBear

+1

Devi essere 'root' per abilitare' tar' per modificare l'UID/GID dei contenuti dell'archivio. – JRFerguson

+1

Non tutte le implementazioni di 'tar' includono il parametro' --same-owner', o hanno anche il flag '--help'. Usa sempre 'man tar' per vedere quali parametri opzionali ha la tua versione di' tar'. –

5

si vuole "preservare" attributi di file mentre si fa tar -x con l'interruttore -p. Ovviamente è necessario essere root per questo per ottenere il risultato desiderato.

  -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, 

Molti sistemi POSIX nave anche pax, cpio che può funzionare come alternative alla tar.