Možný duplikát:
sudo tar cvpzf končí se selháním kvůli předchozí chybě
Když spustím příkaz
tar -cvfz backup.tar.gz somedirectory
Dostávám následující sterr
tar: Exiting with failure status due to previous errors
Když však vynechám předchozí pomlčku z -cvfz
vše vypadá, že funguje dobře. Existuje nějaký známý důvod, proč mi pomlčka brání v tarování mých souborů?
Přijatá odpověď:
Nejsem si jistý, proč tar cvfz
funguje, podle rychlého skenování man
stránce a mé zkušenosti je pomlčka standardní praxí. Možná je to věc kompatibility s BSD (jako ps
).
V každém případě je vaše syntaxe nesprávná. -f
vezme další argument jako název souboru, do kterého se má komprimovat. V tomto případě je tento název souboru z
, což není to, co jste očekávali. Zde je ukázka výstupu, abyste viděli, co tím myslím:
$ tar -cvfz test.tar.gz scott
tar: test.tar.gz: Cannot stat: No such file or directory
scott/
scott/netx/
scott/netx/locks/
scott/netx/locks/netx_running
tar: Exiting with failure status due to previous errors
ls
zobrazí soubor s názvem z
. file
příkaz odhalí, že se jedná o nekomprimovaný tar
archiv. Je nekomprimovaný, protože -z
argument neprošel. A chybová zpráva přišla při pokusu o přidání neexistujícího souboru test.tar.gz
do archivu.
Jednoduše změňte pořadí možností a budete v pořádku:
tar -czvf test.tar.gz some/directory
Pokud vždy použijete -f
poslední argument, budeš v pořádku. Mimochodem, pamatujte, že krátké možnosti (jednopísmenné možnosti), které obsahují argumenty, obvykle nevyžadují mezeru mezi možností a argumentem.
UPRAVIT: Mimochodem, pokud je formulář bez spojovníku kompatibilní s BSD nebo něco podobného, pak je pravděpodobné, že způsob, jakým tar
je v takovém prostředí vyvolán je odlišný a nevyžaduje f
flag k určení vstupního souboru, ale funguje spíše jako cp
nebo něco. Ale to je jen spekulace založená na srovnání s ps
(q.v.).