Jeg bruger denne kommando på en 5GB arkiv
tar -zxvf archive.tar.gz /folder/in/archive
er dette den rigtige måde at gøre dette på? Det ser ud til at tage for evigt uden kommandolinjeproduktion …
Kommentarer
Svar
tar
gemmer relative stier som standard . GNU-tjære siger endda det, hvis du prøver at gemme en absolut sti:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Hvis du har brug for at udpakke en bestemt mappe, skal du se på, hvad der er i tar-filen:
tar -tvf foo.tar
Og bemærk det nøjagtige filnavn. I tilfælde af min foo.tar
-fil kunne jeg udtræk /home/foo/bar
ved at sige:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Så nej, den måde, du sendte, er ikke (nødvendigvis) den korrekte måde at gøre det på. Du er nødt til at udelade det førende skråstreg. Hvis du vil simulere absolutte stier, skal du først cd /
og sørge for at du er superbruger. Dette gør det samme:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Der er meget åbenlyse gode grunde til, at tar
konverterer stier til relative. Den ene er evnen til at gendanne et arkiv andre steder end dets oprindelige kilde. andet er sikkerhed. Du kan udpakke et arkiv, forvente, at dets filer vises i din nuværende arbejdsmappe og i stedet overskrive systemfiler (eller dit eget arbejde) andre steder ved en fejltagelse.
Bemærk: hvis du bruger -P
option, tar
vil arkivere absolutte stier. Så det lønner sig altid at kontrollere indholdet af store arkiver, før du udpakker det.
Kommentarer
-
--strip-components=N
kan være nyttigt for nogle her. - i mit tilfælde var det nødvendigt at skrive
./foldername/
i stedet for , jeg gætter på, at det var fordi da jeg oprettede tjæren, oprettede jeg den medtar -cvf santi.tar ./*
og da jeg " angivet " tjæren dette er hvad den sagdedrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- Og om
.gz
? - @PeterKrauss skift
-xvf
til-xzvf
(tilføjelse af-z
option) og åbenbartfoo.tar
tilfoo.tar.gz
eller hvad dit arkiv hedder. Det samme gælder for-j
(bz2) og i nogle nyere versioner-J
(xz). Ellers fungerer en rørledning somzcat foo.tar.gz | tar -xvf - …
også. - Og husk, hvis du er træt af al den detaljerede output under ekstraktion, skal du bare springe i alle eksemplerne. F.eks.
tar -tf foo.tar
ogtar -xf foo.tar ...
.
tar
er medcat /proc/$(pidof tar)/fdinfo/0
(tilpas kommandoen, hvis du har mere end entar
proces kører).folder/folder2/
vandt ' t arbejde.