Igyekszem egy unix mappát tömöríteni. Megtehető ez a gzip paranccsal?

Megjegyzések

  • használhatja a gzip -r myfolder fájlt, amely rekurzív módon fogja tömöríteni a fájlokat. Ugyanúgy, mint a gunzip -r myfolder amely rekurzív módon kibontja a fájlokat. További információ: man gzip
  • Használja a tar parancsot; támogatja a tömörítés beállításait A gzip a tar kiegészítéseként, nem pedig helyettesítőként van kialakítva.
  • Ne feledje, hogy a @ val0x00ff ‘ javaslatok szinte biztosan nem azok, amelyeket meg akarsz valósítani.
  • @Shadur ezért ‘ ezért küldtem el comment mivel ez nem volt a válasz a kérdésére.
  • Demostrate mit jelent a @Shadur. Adott fájlok 1 és 2 a playground mappa alatt. . A gzip -r ./playground ad 1.gz és 2.gz (és nem több 1 és 2 fájlok) playground mappa alatt, NEM egy tömörített fájl, amelyben minden benne van.

Válasz

Nem.

A zip ellentétben a gzip tömörítési algoritmusként funkcionál csak .

Különböző okok miatt, amelyek némelyike visszatekint a szalagos meghajtók korára, a Unix egy tar nevű programot használ az adatok archiválásához, amelyeket aztán tömörítő programmal tömöríthet mint gzip, bzip2, 7zip stb.

egy könyvtár “zipeléséhez” a helyes parancs a következő:

tar -zcvf archive.tar.gz directory/ 

Ez a tar parancsot

  • tömörítse a z (gzip) algoritmus használatával

  • c (archívum létrehozása) a (tar alapértelmezés szerint rekurzív)

  • v (részletesen) lista (on / dev / stderr tehát nem befolyásolja a csatolt parancsokat) az összes fájlt, amelyet hozzáad az archívumhoz.

  • és a kimenetet tárolja f (fájl) archive.tar.gz

A tar parancs kizárólag az Ön kényelme érdekében kínál gzip támogatást (a -z zászlón keresztül). . A gzip parancs / lib teljesen különálló. A fenti parancs gyakorlatilag megegyezik a

tar -cv directory | gzip > archive.tar.gz 

Az archívum kicsomagolásával és kicsomagolásával az aktuális könyvtárba, amelyet használna

tar -zxvf archive.tar.gz 

Ez a parancs gyakorlatilag megegyezik a

gunzip < archive.tar.gz | tar -xv 

tar parancsokkal, sok-sok más lehetőség és felhasználás is; Szívből ajánlom, hogy valamikor olvassa végig a manpettet.

Megjegyzések

  • Csak azért, hogy még egyértelműbbé tegyem a dolgokat, ez pontosan megfelel a tar -cv directory | gzip > archive.tar.gz. A létrejövő archívum azután kivonható tar -zxvf vagy akár zcat file.tar.gz | tar -xv segítségével. Mivel a tar teljesen független a gzip-től, a tar parancs a kényelem érdekében csak a gzip támogatást tartalmazza.
  • tar cvzf egy ideig. egy dolgot érdemes megjegyezni: ha a Windows-ot (7-zip megadásához) használja egy *.tar.gz fájl kibontásához, két körre van szükség. Az egyik kibontja a *.tar.gz fájlt egy *.tar fájlba, a következő pedig kibontja a tar fájlt az eredeti tartalomba. növeli a teljes kibontási időt, különösen nagy fájlok (pl. naplók) esetén
  • Hatással van-e az archívum elnevezése gépi szempontból? Tudom, hogy jó lenne értesíteni az embereket az algoritmusról, amelyet eredetileg a zipelésére használtak (ezért .gz), de ettől eltekintve valóban mindegy, hogy hogyan nevezed el az archívumot?
  • @hello_there_andy különbség a legtöbb unixhoz képest, de a Windows (és az intelligens lapok befejezése a linuxban) feltételezéseket tesz a fájlnévkiterjesztés alapján.
  • @vadimkotov Ez lehet az, amit ‘ re keres: superuser.com/questions/168749/…

Válasz

A gzip parancs nem tömöríti a könyvtárat egyetlen zip fájlba, amikor a div id = “a440eb1124”>

kapcsoló. Inkább végig fogja járni a könyvtárstruktúrát, és minden megtalált fájlt külön fájlba tömörít.

Példa

előtte

$ tree dir1/ dir1/ |-- dir11 | |-- file11 | |-- file12 | `-- file13 |-- file1 |-- file2 `-- file3 

most futtassa a gzip parancs

$ gzip -r dir1 

a

$ tree dir1/ dir1/ |-- dir11 | |-- file11.gz | |-- file12.gz | `-- file13.gz |-- file1.gz |-- file2.gz `-- file3.gz 

Ha inkább a könyvtárstruktúrát szeretné tömöríteni, akkor valószínűleg a tar parancsot szeretné használni, majd tömöríteni .tar fájl.

$ tar zcvf dir1.tar.gz dir1/ 

példa

$ tar zcvf dir1.tar.gz dir1/ dir1/ dir1/file1 dir1/file2 dir1/dir11/ dir1/dir11/file11.gz dir1/dir11/file12.gz dir1/dir11/file13.gz dir1/file3 

A következő egyetlen fájlt eredményezi:

$ ls -l | grep tar -rw-rw-r-- 1 saml saml 271 Oct 1 08:07 dir1.tar.gz 

Megerősítheti annak tartalmát:

$ tar ztvf dir1.tar.gz drwxrwxr-x saml/saml 0 2013-10-01 08:05 dir1/ -rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file1 -rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file2 drwxrwxr-x saml/saml 0 2013-10-01 08:04 dir1/dir11/ -rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file11.gz -rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file12.gz -rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file13.gz -rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file3 

Válasz

A válasz a kérdésre: “Zip-e egy teljes mappát a gzip [on linux-on]?” az, hogy a zip programot használhatja a gzip helyett, a szintaxissal:

zip -r <zip file name> <folder to zip> 

Megjegyzések

  • @JeffSchaller: Ez egy válasz. Nagyon rossz (hiszem), de egyértelműen válasz.
  • @ize: Én ‘ biztos vagyok abban, hogy az általad közzétett parancs nem, valójában használja a gzip-t.
  • A zip használatához hasonló pontok, mint a feltett kérdés, valószínűleg a szerző szerette volna tudni, hogy ‘ lehetséges-e a PONTOS UGYANAZ, mint régen az ablakokon. Szomorú, hogy a legtöbben nem ‘ nem akarnak messzire gondolni.
  • Bonyolult, amikor a kérdés meghatározza … „a gzip használatát”.
  • Én ‘ támogatom ezt a választ, mivel úgy gondolom, hogy a termék (egy zip fájl) valószínűleg fontosabb, mint a módszer (a gzip használatával).

Válasz

Ezt a 2 parancsot írtam le:

gzipdir:

#!/bin/bash if [[ -d $1 ]]; then cd "$1" cd .. base=$(basename "$1") tar -zcvf "$base.tgz" "$base" if [[ $? == 0 && -f "$base.tgz" ]]; then rm -rf "$base" fi else echo "Usage: $0 DIRECTORY"; fi 

ungzipdir:

#!/bin/bash if [[ -f $1 ]]; then base=${1%%.*} file=$(basename "$1"); dir=$(basename "$base"); if [[ ! -d $base ]]; then mkdir "$base" cd "$base" cd .. tar -xvf "$file" if [[ $? == 0 && -d "$dir" ]]; then rm -f "$file" fi else echo "Directory $base already exists. Nothing done." fi else echo "Usage: $0 file.tgz"; fi 

(!!!) Kérjük, tesztelje használat előtt (mivel van egy “rm -f”, amely potenciálisan eltávolíthatja a fontos adatokat, ha nem mindennapi módon használja).

Használat:

cd /home/; gzipdir MyDirectory vagy gzipdir /home/MyDirectory

Létrehozza a /home/MyDirectory.tgz fájlt, és eltávolítja a MyDirectory programot a sikertől (!!!).

ungzipdir /home/MyDirectory.tgz

Létrehozza a / home / MyDirectory alkalmazást, és a siker érdekében eltávolítja a /home/MyDirectory.tgz fájlt.

Megjegyzések

  • A könyvtárban található ÖSSZES fájl tömörítéséhez: find ./* -maxdepth 0 -type d -exec gzipdir {} \; (legyen óvatos a find paranccsal, tesztelje a -exec echo {} először, és győződjön meg arról, hogy ‘ nem rögzíti a ‘ ./’ amely feltölti a PARENT könyvtárat, esetleg az egész otthoni könyvtárat feltörve)

Válasz

Javaslom a pigz ( GZip párhuzamos megvalósítása ) használatát

tar -cvf - dir | pigz -9 > /path/to/dir.tar.gz

Megjegyzések

  • Én is sokat használom (és pixz), de vajon működik-e, amikor a csövek és a kimenet átirányítása jön létre?

Válasz

Ha a linux tar nem támogatja a -z opciót a következőket használhatja:

tar -cvf - dir | gzip > dir.tar.gz 

Válasz

A teljesség érdekében, ha kátrányozni akarja a fájlt a bac-ban kground, használja a @Shadur válaszát, és a végén csatolja a & szót:

tar -zcvf archive.tar.gz directory/ & 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük