Portál AbcLinuxu, 10. května 2025 08:09

Dotaz: Tar a přepínač -C

Martin Stiborský avatar 27.8.2008 23:19 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Tar a přepínač -C
Přečteno: 423×
Odpovědět | Admin
Zdravím.
Prosím jak funguje přepínač -C u příkazu tar ?
Myslel jsem, že přepíná do adresáře ve kterém se bude tarovat, ale asi to celé chápu špatně, tedy:
tar -czf ~/Desktop/mujarchiv.tar -C /cesta/ke/slozce/s/daty *.xml
Myslel jsem, že tohle vytvoří archiv na ploše, ve kterém budou všechny xml soubory z adresáře z -C. Ale takto to nefunguje :( Může mi to prosím někdo vysvětlit ? Já jsem z toho taru nějak mimo.
Kvík ..
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

David Watzke avatar 27.8.2008 23:57 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Tar a přepínač -C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ono to funguje, jenže to děláš špatně. Hned první řádek v helpu říká:
Usage: tar [OPTION...] [FILE]...
Hint: nejdřív přepínače, pak soubory. Takže zkus spíš něco jako:
tar -C /cesta/ke/slozce/s/daty -czf ~/Desktop/mujarchiv.tar soubory
Problém bude s tím *.xml, to totiž nebude takhle jednoduchý. Jde o to, že shell provede substituci ještě než se ten příkaz spustí...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 28.8.2008 00:02 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Tar a přepínač -C
Původně jsem to nechtěl napsat, ale na rovinu, kdybych tohle potřeboval vyřešit na rychlo a ta hvězdička tam byla nutná, lze udělat tohle:
tar -C ~/ -zcvf test.tar $(cd && ls *.png)
ale je to naprostá hrůza, která nefunguje když označí velkou spoustu souborů.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.8.2008 10:49 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Tar a přepínač -C
a nebo pro vyhledání souborů použit find:
cd /cesta/ke/slozce/s/daty/ && tar -czf ~/Desktop/mujarchiv.tar `find -name '*.xml' -type f -print`
David Watzke avatar 28.8.2008 11:24 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Tar a přepínač -C
Jo, jenže tím se nic nevyřeší. Navíc mě později napadlo, že to nebude fungovat jakmile bude v názvech souborů mezera, ale zas kdo by něco takovýho dělal, že...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.8.2008 12:10 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Tar a přepínač -C
Navíc mě později napadlo, že to nebude fungovat jakmile bude v názvech souborů mezera, ale zas kdo by něco takovýho dělal, že...

Už jsem pár takových viděl…

28.8.2008 12:51 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Tar a přepínač -C
Navíc mě později napadlo, že to nebude fungovat jakmile bude v názvech souborů mezera, ale zas kdo by něco takovýho dělal, že...
No právě :-) a navíc u xml souborů ...
Řešením by mohlo být:
cd /cesta/ke/slozce/s/daty/ && find -name '*.xml' -type f -print0 | xargs -0 tar -czf ~/Desktop/mujarchiv.tar
Bohužel je zde omezení maximální délky příkazového řádku, viz. xargs --show-limits
David Watzke avatar 28.8.2008 13:52 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Tar a přepínač -C
Bohužel je zde omezení maximální délky příkazového řádku, viz. xargs --show-limits
No, právě že tohle taky není zrovna ideální rešení, protože tohle není tak docela pravda. On totiž xargs v případě potřeby (překročení tý max. délky) spustí ten příkaz na víckrát...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.8.2008 14:05 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Tar a přepínač -C
No, právě že tohle taky není zrovna ideální rešení, protože tohle není tak docela pravda. On totiž xargs v případě potřeby (překročení tý max. délky) spustí ten příkaz na víckrát...
Jenže to také není tak úplně pravda, viz man xargs:
-x     Exit if the size (see the -s option) is exceeded.
David Watzke avatar 28.8.2008 14:08 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Tar a přepínač -C
:-) OK, o tomhle jsem nevěděl.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.8.2008 13:39 jbohac | skóre: 19 | Praha 5
Rozbalit Rozbalit vše Re: Tar a přepínač -C
Ono to funguje, jenže to děláš špatně. Hned první řádek v helpu říká:

Usage: tar [OPTION...] [FILE]...

Hint: nejdřív přepínače, pak soubory. Takže zkus spíš něco jako:

tar -C /cesta/ke/slozce/s/daty -czf ~/Desktop/mujarchiv.tar soubory
... ale houby, -C je samozrejme taky jenom dalsi option (prepinac), takze ho ma uplne spravne pred seznamem souboru (*.xml)

Problem je v tom, ze to *.xml vyhodnoti uz shell a tar dostane uz prikazovou radku, kde misto *.xml je soubor1.xml, soubor2.xml, soubor3.xml...

Jenze ten shell to samozrejme dela v aktualnim adresari, a ten parametr -C zpracuje az tar. Shell o nem nevi kdyz expanduje *.xml.

Mozna by bylo nejjednodussi do toho adresare predtim vlezt normalne pomoci cd.

David Watzke avatar 28.8.2008 13:56 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Tar a přepínač -C
ale houby, -C je samozrejme taky jenom dalsi option (prepinac)
Jo, já vím...
takze ho ma uplne spravne pred seznamem souboru (*.xml)
Hmm, máš pravdu. To jsem nezkoušel, tak jsem automaticky předpokládal, že je problém v tomhle... Tak se omlouvám.

Jinak ta expanze, to je mi jasný, o tom jsem psal taky.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.