Folosesc această comandă pe un 5GB arhivă
tar -zxvf archive.tar.gz /folder/in/archive
acesta este modul corect de a face acest lucru? Se pare că durează pentru totdeauna fără ieșire din linia de comandă …
Comentarii
Răspuns
tar
stochează căile relative în mod implicit . GNU tar spune chiar așa dacă încercați să stocați o cale absolută:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Dacă trebuie să extrageți un anumit folder, aruncați o privire la ce se află în fișierul tar:
tar -tvf foo.tar
Și notați exact numele fișierului. În cazul fișierului meu foo.tar
, aș putea extrageți /home/foo/bar
spunând:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Deci nu, modul în care ați postat nu este (neapărat) corect modalitate de a o face. Trebuie să omiți slash-ul principal. Dacă doriți să simulați căi absolute, faceți cd /
mai întâi și asigurați-vă că sunteți superutilizatorul. De asemenea, acest lucru face același lucru:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Există motive foarte evidente, bune pentru care tar
convertește căile în cele relative. Una este capacitatea de a restabili o arhivă în alte locuri decât sursa sa originală. altul este securitatea. Puteți extrage o arhivă, vă puteți aștepta ca fișierele sale să apară în directorul curent de lucru și, în schimb, să suprascrieți din greșeală fișierele de sistem (sau propria lucrare) în altă parte. opțiunea div id = „bf636723f6″>
, tar
va arhivați căile absolute. Prin urmare, merită întotdeauna să verificați conținutul arhivelor mari înainte de a extrage.
Comentarii
-
--strip-components=N
poate fi util pentru unii aici. - în cazul meu a fost necesar să scrieți
./foldername/
în loc de , cred că a fost pentru că atunci când am creat tarul l-am creat cutar -cvf santi.tar ./*
și când am " listat " tar asta este ceea ce a spusdrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- Și despre
.gz
? - @PeterKrauss schimba
-xvf
în-xzvf
(adăugând-z
opțiune) și evidentfoo.tar
lafoo.tar.gz
sau oricare arhiva dvs. este denumită. Același lucru este valabil pentru-j
(bz2) și pentru unele versiuni recente,-J
(xz). În caz contrar, funcționează și o conductă precumzcat foo.tar.gz | tar -xvf - …
. - Și amintiți-vă, dacă v-ați săturat de toate rezultatele detaliate în timpul extracției, săriți
v
în toate exemplele. De exemplu,tar -tf foo.tar
șitar -xf foo.tar ...
.
tar
cucat /proc/$(pidof tar)/fdinfo/0
(adaptați comanda dacă aveți mai multetar
rulează procesul).folder/folder2/
nu a câștigat funcția '.