GNU/Linux >> Znalost Linux >  >> Linux

Jak gzipovat všechny soubory ve všech podadresářích do jednoho komprimovaného souboru v bash

existuje mnoho kompresních metod, které fungují rekurzivně z příkazového řádku a je dobré vědět, kdo je koncovým publikem.

tj. pokud to má být odesláno někomu, kdo používá Windows, pak by byl pravděpodobně nejlepší zip:

zip -r file.zip folder_to_zip

unzip filenname.zip

pro ostatní uživatele linuxu nebo váš vlastní tar je skvělý

tar -cvzf filename.tar.gz folder

tar -cvjf filename.tar.bz2 folder  # even more compression

#change the -c to -x to above to extract

Člověk musí být opatrný s dehtem a tím, jak se věci dehtují/vytěžují, například když běžím

cd ~
tar -cvzf passwd.tar.gz /etc/passwd
tar: Removing leading `/' from member names
/etc/passwd


pwd

/home/myusername

tar -xvzf passwd.tar.gz

tím se vytvoří /home/myusername/etc/passwd

nejste si jisti, zda to dělají všechny verze tar:

 Removing leading `/' from member names

Příspěvek @amitchhajer funguje pro GNU tar. Pokud někdo najde tento příspěvek a potřebuje jej k práci na NON GNU systému, mohou to udělat:

tar cvf - folderToCompress | gzip > compressFileName

Rozbalení archivu:

zcat compressFileName | tar xvf -

tar -zcvf compressFileName.tar.gz folderToCompress

vše ve složce folderToCompress přejde do složky compressFileName

Edit:Po kontrole a komentářích jsem si uvědomil, že lidé mohou být zmateni s compactFileName bez přípony. Pokud chcete, můžete použít rozšíření .tar.gz (jak je navrženo) s kompresním názvem souboru


Linux
  1. Jak zkontrolovat podřetězec v Shell Script Bash?

  2. Jak gzipovat všechny soubory ve všech podadresářích v bash

  3. Jak připojit obsah více souborů do jednoho souboru

  1. Jak zobrazit obsah komprimovaných souborů v Linuxu

  2. Jak vyřešit:stdin:není ve formátu gzip

  3. Jak odebrat všechny soubory ve složce kromě jednoho konkrétního souboru v systému Linux

  1. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  2. Zřetězit konkrétní soubory do jednoho jediného souboru?

  3. Jak gzipovat všechny nebo konkrétní soubory v Linuxu