Sto utilizzando questo comando su un 5 GB archivio
tar -zxvf archive.tar.gz /folder/in/archive
è questo il modo corretto per farlo? Sembra che stia impiegando uneternità senza loutput della riga di comando …
Commenti
Risposta
tar memorizza i percorsi relativi per impostazione predefinita . GNU tar lo dice anche se provi a memorizzare un percorso assoluto:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Se hai bisogno di estrarre una cartella particolare, dai unocchiata a cosa cè dentro il file tar:
tar -tvf foo.tar
e prendi nota del nome esatto del file. Nel caso del mio file foo.tar, potrei estrai /home/foo/bar dicendo:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Quindi no, il modo in cui hai postato non è (necessariamente) corretto modo per farlo. Devi lasciare fuori il taglio iniziale. Se desideri simulare percorsi assoluti, esegui prima cd / e assicurati di “essere il superutente. Inoltre, questo fa lo stesso:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Ci sono ragioni molto ovvie e valide per cui tar converte i percorsi in percorsi relativi. Uno è la possibilità di ripristinare un archivio in posti diversi dalla sua fonte originale. altro è la sicurezza. Potresti estrarre un archivio, aspettarti che i suoi file appaiano nella directory di lavoro corrente e invece sovrascrivere i file di sistema (o il tuo lavoro) altrove per errore.
Nota: se usi il -P opzione, tar archivia percorsi assoluti. Quindi è sempre utile controllare il contenuto di grandi archivi prima di estrarli.
Commenti
-
--strip-components=Npuò essere utile ad alcuni qui. - nel mio caso era necessario scrivere
./foldername/invece di , immagino che fosse perché quando ho creato il tar lho creato contar -cvf santi.tar ./*e quando ho " elencato " il tar questo è quello che dicevadrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/ - E su
.gz? - @PeterKrauss cambia
-xvfin-xzvf(aggiungendo-z) e ovviamente dafoo.tarafoo.tar.gzo qualunque sia il nome del tuo archivio. Lo stesso vale per-j(bz2) e su alcune versioni recenti-J(xz). Altrimenti, funziona anche una pipeline comezcat foo.tar.gz | tar -xvf - …. - E ricorda, se sei stanco di tutto loutput dettagliato durante lestrazione, salta il
vin tutti gli esempi. Ad esempio,tar -tf foo.taretar -xf foo.tar ....
tarconcat /proc/$(pidof tar)/fdinfo/0(adatta il comando se ne hai più di unotarprocesso in esecuzione).folder/folder2/non ha ' funzionato.