Ik gebruik deze opdracht op een 5GB archive
tar -zxvf archive.tar.gz /folder/in/archive
is dit de juiste manier om dit te doen? Het lijkt eeuwig te duren zonder opdrachtregeluitvoer …
Opmerkingen
Antwoord
tar
slaat relatieve paden standaard op. GNU tar zegt het zelfs als je een absoluut pad probeert op te slaan:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Als je een bepaalde map moet uitpakken, kijk dan wat er in het tar-bestand:
tar -tvf foo.tar
En noteer de exacte bestandsnaam. In het geval van mijn foo.tar
-bestand, zou ik extraheer /home/foo/bar
door te zeggen:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Dus nee, de manier waarop je iets postte is niet (noodzakelijkerwijs) correct manier om het te doen. Je moet de eerste schuine streep weglaten. Als je absolute paden wilt simuleren, doe dan eerst cd /
en zorg ervoor dat je “de supergebruiker bent. Dit doet ook hetzelfde:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Er zijn zeer voor de hand liggende, goede redenen waarom tar
paden converteert naar relatieve. Een daarvan is de mogelijkheid om een archief te herstellen op andere plaatsen dan de oorspronkelijke bron. De een ander is beveiliging. Je zou een archief kunnen uitpakken, verwachten dat de bestanden in je huidige werkdirectory verschijnen, en in plaats daarvan per ongeluk systeembestanden (of je eigen werk) ergens anders overschrijven.
Opmerking: als je de -P
optie, tar
zal archiveer absolute paden. Het loont dus altijd om de inhoud van grote archieven te controleren voordat u ze uitpakt.
Opmerkingen
-
--strip-components=N
kan hier voor sommigen nuttig zijn. - in mijn geval was het nodig om
./foldername/
te schrijven in plaats van , ik denk dat het kwam doordat ik de tar creëerde mettar -cvf santi.tar ./*
en toen ik " vermeld " de tar dit is wat het zeidrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- En over
.gz
? - @PeterKrauss verander
-xvf
in-xzvf
(door de-z
optie) en uiteraardfoo.tar
totfoo.tar.gz
of hoe je archief ook heet. Hetzelfde geldt voor-j
(bz2) en voor sommige recente versies-J
(xz). Anders werkt een pijplijn zoalszcat foo.tar.gz | tar -xvf - …
ook. - En onthoud, als je moe bent van alle uitgebreide uitvoer tijdens het extraheren, sla dan de in alle voorbeelden. Bijv.
tar -tf foo.tar
entar -xf foo.tar ...
.
tar
zit metcat /proc/$(pidof tar)/fdinfo/0
(pas het commando aan als je er meer dan één hebttar
proces wordt uitgevoerd).folder/folder2/
heeft ' geen werk opgeleverd.