Vraag Hoe bestanden uit te pakken naar een andere map met de opdracht 'tar'?


ik dacht tar archive.tar /users/mylocation zou werken, maar dat doet het niet. Hoe kan ik dat doen?


581
2018-05-26 16:01


oorsprong


Ook, -C, --directory DIR\n change to directory DIR moet eerder worden beschreven als change output directory to DIR (will fail if DIR doesn't exist). Bedankt @Mich. Zie ook het antwoord van @ Bryan_Larsen. - valid
@Ujjwal Sing: Inderdaad, de tar man pagina is niet zo behulpzaam. Het beschrijft "-C DIR" als "verander in directory DIR". Erger nog: "tar-mydir xf archive.tar" werkt niet, terwijl "tar xf archive.tar-mydir" dat wel doet. - Pat Morin


antwoorden:


Als u een archief wilt extraheren naar een andere directory dan de huidige, gebruikt u de -Cof --directory, tar-optie, zoals in

tar -xf archive.tar -C /target/directory

Merk op dat de doelmap moet bestaan ​​voordat die opdracht wordt uitgevoerd (deze kan worden gemaakt door mkdir /target/directory).

Lees de handmatige pagina (opdracht: man tar) voor andere opties.


841
2018-05-26 16:16



Je moet de map echter wel handmatig aanmaken. - Jürgen Paul
Kan het pad worden gestript: het bestand wordt alleen opgehaald - zzapper
Als het een groter bestand is, is het enige dat u krijgt tijdens het uitvoeren van het commando gedurende enkele seconden of zelfs minuten geen uitvoer terwijl het werkt. U kunt dit oplossen door de -v vlag (uitgebreide modus) die de naam van elk bestand vermeldt terwijl het wordt uitgepakt. - IQAndreas
@consultstan xkcd.com/1168 - Duncan X Simpson
Is het niet verbazingwekkend dat, na al die jaren, met alle opties tar heeft verzameld, er is nog steeds geen optie om maak de output-map als deze niet bestaat? - EM0


Merk op dat als uw tarball al een mapnaam bevat die u wilt wijzigen, voeg de --strip-components=1 keuze:

tar xf archive.tar -C /target/directory --strip-components=1

215
2018-05-21 18:32



Dank je. Downloads via wget / etc hebben altijd een 'ouder' directory. Dit is het volledige antwoord imo - of zou hierboven in het antwoord moeten worden genoteerd. - bshea


Combinatie van de eerdere antwoorden en opmerkingen:

Om eenvoudig de inhoud te extraheren en een doelmap te maken als deze ontbreekt:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

Uitpakken en ook de hoofdmap (eerste niveau) in de zip verwijderen

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1

20
2018-06-27 19:29





Een andere optie is om op -one-topniveau te gebruiken. Hierdoor wordt automatisch een map gemaakt op basis van de bestandsnaam van het origineel.

tar zxvf filename.tgz --one-top-level

Als je dat wilt, kun je ook je eigen specificeren en tar zal deze automatisch aanmaken.

tar zxvf filename.tgz --one-top-level=new_directory

6
2018-03-22 21:49





Met teer 1.29 kunnen we gewoon de mapnaam toevoegen na de tar bestandsnaam. Bijvoorbeeld,

tar zxvf tar-file directory-name/

1
2018-06-29 23:00





Wat ik interessant vond met betrekking tot extractie, is dat het afhangt van hoe je het archief hebt gemaakt, zie dit voorbeeld

cd /tmp
mkdir folder
touch folder/file.txt

wanneer je dat doet tar -zcvf folder.tar.gz folder alles is zoals verwacht = wanneer je het nu uitpakt wordt het leeggemaakt (map wordt gemaakt, als je het verwijdert) als /tmp/folder/.

Maar als je teer wilt maken als tar -zcvf tmp-folder.tar.gz /tmp/folder en je untar het in / tmp map, het resultaat zal zijn /tmp/tmp/folder map! In dat geval moet je het untarren naar / - tar -xf tmp-folder.tar.gz -C /


0
2017-09-01 22:25