Igyekszem egy unix mappát tömöríteni. Megtehető ez a gzip paranccsal?
Megjegyzések
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árzcat file.tar.gz | tar -xv
segítségével. Mivel a tar teljesen független a gzip-től, atar
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/ &
gzip -r myfolder
fájlt, amely rekurzív módon fogja tömöríteni a fájlokat. Ugyanúgy, mint agunzip -r myfolder
amely rekurzív módon kibontja a fájlokat. További információ:man gzip
tar
parancsot; támogatja a tömörítés beállításait Agzip
atar
kiegészítéseként, nem pedig helyettesítőként van kialakítva.comment
mivel ez nem volt a válasz a kérdésére.1
és2
aplayground
mappa alatt. . Agzip -r ./playground
ad1.gz
és2.gz
(és nem több1
és2
fájlok)playground
mappa alatt, NEM egy tömörített fájl, amelyben minden benne van.