Jeg bruker denne kommandoen på en 5GB arkiv
tar -zxvf archive.tar.gz /folder/in/archive
er dette den riktige måten å gjøre dette på? Det ser ut til å ta evig tid uten kommandolinjeproduksjon …
Kommentarer
Svar
tar
lagrer relative stier som standard . GNU tar sier det til og med hvis du prøver å lagre en absolutt bane:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Hvis du trenger å trekke ut en bestemt mappe, kan du se på hva som er i tar-filen:
tar -tvf foo.tar
Og legg merke til det eksakte filnavnet. I tilfelle av foo.tar
-filen min, kunne jeg trekk ut /home/foo/bar
ved å si:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Så nei, måten du postet på, er ikke (nødvendigvis) riktig måte å gjøre det på. Du må utelate den ledende skråstrek. Hvis du vil simulere absolutte baner, gjør du først cd /
og sørg for at du er superbruker. Dette gjør også det samme:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Det er veldig åpenbare, gode grunner til at tar
konverterer stier til relative. Den ene er muligheten til å gjenopprette et arkiv andre steder enn den opprinnelige kilden. annet er sikkerhet. Du kan trekke ut et arkiv, forvente at filene vises i din nåværende arbeidskatalog, og i stedet overskrive systemfiler (eller ditt eget arbeid) andre steder ved en feiltakelse.
Merk: hvis du bruker -P
alternativ, tar
vil arkivere absolutte stier. Så det lønner seg alltid å sjekke innholdet i store arkiver før du trekker ut dem.
Kommentarer
-
--strip-components=N
kan være nyttig for noen her. - i mitt tilfelle var det nødvendig å skrive
./foldername/
i stedet for , antar jeg at det var fordi da jeg opprettet tjæren, opprettet jeg den medtar -cvf santi.tar ./*
og da jeg " oppført " tjæren dette er hva den sadrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- Og om
.gz
? - @PeterKrauss endre
-xvf
til-xzvf
(legge til-z
alternativ) og åpenbartfoo.tar
tilfoo.tar.gz
eller hva arkivet ditt heter. Det samme gjelder-j
(bz2) og i noen nyere versjoner-J
(xz). Ellers fungerer også en rørledning somzcat foo.tar.gz | tar -xvf - …
. - Og husk at hvis du er lei av all den detaljerte produksjonen under utvinning, er det bare å hoppe over
v
i alle eksemplene. F.eks.tar -tf foo.tar
ogtar -xf foo.tar ...
.
tar
er medcat /proc/$(pidof tar)/fdinfo/0
(tilpasse kommandoen hvis du har mer enn entar
prosess som kjører).folder/folder2/
vant ' t arbeid.