Hogyan vonhat ki egyetlen mappát egy nagy tar.gz archívumból?

Ezt a parancsot egy 5 GB-os archívum

tar -zxvf archive.tar.gz /folder/in/archive 

ez a helyes módszer erre? Úgy tűnik, örökké tart, parancssori kimenet nélkül …

Megjegyzések

  • Abszolút vagy relatív utat használtál? Relatívnak kell lennie, azon kívül, hogy jól néz ki. Meddig hagytad futni, és mennyire jó a rendszered? Gyors gépen legalább több percet vesz igénybe. Potenciálisan egy vagy több óra? ' most futtatok egy tesztet.
  • Igen, ~ 1 óra után fejeződött be, de az abszolút elérési út téves volt, igazad volt.
  • Linux rendszeren megnézheti, hogy az tar az archívumba milyen messze van a cat /proc/$(pidof tar)/fdinfo/0 (ha egynél több tar folyamat fut).
  • Fontos része az is, hogy ne legyen zárójel. A folder/folder2/ használata nem eredményezi a ' működését.

Válasz

tar relatív útvonalakat tárol alapértelmezés szerint . A GNU tar azt is mondja, hogyha megpróbál tárolni egy abszolút elérési utat:

tar -cf foo.tar /home/foo tar: Removing leading `/" from member names 

Ha ki kell bontania egy adott mappát, akkor nézze meg, hogy mi található benne a tar fájl:

tar -tvf foo.tar 

És jegyezzük fel a pontos fájlnevet. A foo.tar fájlom esetében tudtam kivonat /home/foo/bar azáltal, hogy kimondja:

tar -xvf foo.tar home/foo/bar # Note: no leading slash 

Tehát nem, a feladás módja (nem feltétlenül) helyes módja annak. Ki kell hagynia a vezető perjelet. Ha abszolút útvonalakat szeretne szimulálni, akkor először tegye meg a cd / parancsot, és győződjön meg róla, hogy Ön a szuperfelhasználó. Ez szintén ezt teszi:

tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option 

Nagyon nyilvánvaló, jó okok vannak arra, amiért a tar átalakítja az utakat viszonylagosakká. Az egyik az a lehetőség, hogy az archívumot visszaállítsák az eredeti forrástól eltérő helyeken. másik a biztonság. Kivonthat egy archívumot, elvárhatja, hogy a fájljai megjelenjenek az aktuális munkakönyvtárban, és helyette tévedésből felülírja a rendszerfájlokat (vagy saját munkáját).

Megjegyzés: ha a -P opció, tar archív abszolút elérési utak. Tehát mindig érdemes ellenőrizni a nagy archívumok tartalmát a kibontás előtt.

Megjegyzések

  • --strip-components=N itt hasznos lehet egyesek számára.
  • esetemben a iv id = “23 helyett ./foldername/ -et kellett írni. 16b5075f “>

, azt hiszem, azért, mert amikor létrehoztam a kátrányt, létrehoztam a tar -cvf santi.tar ./* szolgáltatással, és amikor " felsorolta a " kátrányt, ezt mondta drwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/

  • És a .gz?
  • @PeterKrauss -xvf -et -xzvf -re változtatja (a -z opció) és nyilván foo.tarfoo.tar.gz vagy bármi más, amit archívumának megneveznek. Ugyanez vonatkozik a -j (bz2) és néhány újabb verzióra is: -J (xz). Ellenkező esetben egy olyan csővezeték is működik, mint a zcat foo.tar.gz | tar -xvf - ….
  • És ne feledje, hogy ha az univerzális kimenet unatkozik az extrakció során, hagyja ki a v az összes példában. Pl. tar -tf foo.tar és tar -xf foo.tar ....
  • 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