Tento příkaz používám na 5 GB archive
tar -zxvf archive.tar.gz /folder/in/archive
je to správný způsob? Zdá se, že to trvá věčně bez výstupu z příkazového řádku …
Komentáře
Odpovědět
tar
ukládá relativní cesty ve výchozím nastavení . GNU tar dokonce říká, že pokud se pokusíte uložit absolutní cestu:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Pokud potřebujete extrahovat konkrétní složku, podívejte se, co obsahuje soubor tar:
tar -tvf foo.tar
A všimněte si přesného názvu souboru. V případě mého foo.tar
souboru bych mohl extrahujte /home/foo/bar
slovy:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Takže ne, způsob, jakým jste zveřejnili, není (nutně) správný způsob, jak to udělat. Musíte vynechat úvodní lomítko. Pokud chcete simulovat absolutní cesty, proveďte nejprve cd /
a ujistěte se, že jste superuživatelem. Stejné je to také:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Existují velmi zjevné a dobré důvody, proč tar
převádí cesty na relativní. Jedním z nich je schopnost obnovit archiv na jiných místech, než je jeho původní zdroj. jiné je zabezpečení. Můžete extrahovat archiv, očekávat, že se jeho soubory objeví ve vašem aktuálním pracovním adresáři, a místo toho omylem přepsat systémové soubory (nebo vlastní práci) jinde.
Poznámka: pokud použijete -P
možnost, tar
bude archivovat absolutní cesty. Před extrahováním se tedy vždy vyplatí zkontrolovat obsah velkých archivů.
Komentáře
-
--strip-components=N
zde může být pro některé užitečné. - v mém případě bylo nutné namísto iv id = „23 napsat
./foldername/
16b5075f „>
, myslím, že to bylo proto, že když jsem vytvořil tar, vytvořil jsem ho pomocí tar -cvf santi.tar ./*
a když jsem " uvedené " tar to je to, co řekl drwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
.gz
? -xvf
na -xzvf
(přidání -z
) a samozřejmě foo.tar
až foo.tar.gz
nebo jakkoli jiný název vašeho archivu. Totéž platí pro -j
(bz2) a pro některé novější verze -J
(xz). Jinak funguje také potrubí jako zcat foo.tar.gz | tar -xvf - …
. v
ve všech příkladech. Např. tar -tf foo.tar
a tar -xf foo.tar ...
.
tar
jecat /proc/$(pidof tar)/fdinfo/0
(pokud máte více než jeden, upravte příkaztar
proces běží).folder/folder2/
nebude fungovat '.