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=N
può 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
-xvf
in-xzvf
(aggiungendo-z
) e ovviamente dafoo.tar
afoo.tar.gz
o 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
v
in tutti gli esempi. Ad esempio,tar -tf foo.tar
etar -xf foo.tar ...
.
tar
concat /proc/$(pidof tar)/fdinfo/0
(adatta il comando se ne hai più di unotar
processo in esecuzione).folder/folder2/
non ha ' funzionato.