A tar parancs Linuxban: Tar CVF és Tar XVF a

tar Példautasításokkal magyarázható, a legtöbb fiókban a szalagarchívum rövidítése. A szóban forgó” szalagok”azok a mágneses tároló meghajtók, amelyek egészen az 1950-es években népszerűek voltak.

Ez arra utal, hogy a tar eszköz lehet egy kicsit régi, és már a prime. De az igazság az, hogy az évek során és az informatikai világ összes szeizmikus változásán keresztül tar elvesztette egyik erejét és értékét sem.

ebben a cikkben a Linux in Action book tartalma alapján megmutatom a TAR archívum létrehozásának, tömörítésének és helyreállításának alapjait. Kezdjük az elején.

Ez a példa lesz a fájlok, könyvtárak belül, alul pedig a jelenlegi munka könyvtár építeni egy archív fájlt, hogy már ügyesen nevű archivename.tar.

itt három argumentumot használok a tar parancs után:

  • a c azt mondja, kátrány, hogy hozzon létre egy új archív,
  • v beállítja a képernyő kimeneti részletes így lesz a frissítést,
  • f rámutat arra, hogy a fájlnév szeretnék adni az archívum.

a *az, ami azt mondja tar hogy tartalmazza az összes fájlt és a helyi könyvtárakat rekurzívan.

$ tar cvf archivename.tar *file1file2file3directory1directory1/morestuffdirectory1/morestuff/file100directory1/morestuff/file101

a tar parancs soha nem fogja áthelyezni vagy törölni a betáplált eredeti könyvtárakat és fájlokat – csak archivált másolatokat készít.

azt is meg kell jegyezni, hogy egy pont (.) az előző parancs csillaga ( * ) helyett még rejtett fájlokat is tartalmazna (amelyek fájlnevei ponttal kezdődnek) az archívumban.

Ha a saját számítógépén követi (ahogy feltétlenül kellene), akkor megjelenik egy új archivename nevű fájl.kátrány. A .tar fájlnév kiterjesztés nem szükséges, de ez mindig egy jó ötlet, hogy egyértelműen kommunikálni a célja a fájl annyi módon lehetséges.

az archívum kibontása a fájlok visszaállításához egyszerű: Csak használja a xvf helyett cvf. Ez a példában az eredeti fájlok és könyvtárak új példányait menti az aktuális helyre.

$ tar xvf archivename.tarfile1file2file3directory1directory1/morestuffdirectory1/morestuff/file100directory1/morestuff/file101

persze, azt is, hogy a tar, küldje el a kibontott fájlokat egy másik helyen használja a -C érv, amelyet a cél helye:

$ tar xvf archivename.tar -C /home/mydata/oldfiles/

nem akarjuk az összes fájlt belül egy könyvtárat a fa az archívumhoz.

tegyük fel, hogy már készített néhány videót, de ezek jelenleg a könyvtárakban, valamint mindenféle grafikus, audio, és szöveges fájlok (amelyek a jegyzeteket). Az egyetlen fájl, amelyet biztonsági mentésre van szüksége, a végleges Videoklipek a .mp4 fájlnév kiterjesztéssel.

itt van, hogyan kell csinálni:

$ tar cvf archivename.tar *.mp4

Ez nagyszerű. De azok a videofájlok hatalmasak. Nem lenne jó, hogy az archívum egy kicsit kisebb tömörítéssel?

ne mondj többet! Csak futtassa az előző parancsot a z (zip) argumentummal. Ez megmondja a gzip programnak, hogy tömörítse az archívumot.

Ha követni szeretné a konvenciót, hozzáadhat egy .gz kiterjesztést is a .tar ez már ott van. Ne feledje: egyértelműség.

itt van, hogy hogyan fog játszani ki:

$ tar czvf archivename.tar.gz *.mp4

Ha ezt a saját .mp4 fájlokat próbálja ki, majd futtassa az ls-l-t az új archívumokat tartalmazó könyvtárban, észreveheti, hogy a .tar.gz fájl nem sokkal kisebb, mint a .tar fájl, talán 10% vagy úgy. Mi ez az egész?

Nos ,a.mp4 fájlformátum maga tömörített, így sokkal kevesebb hely van a gzip számára, hogy megtegye a dolgát.

mivel a tar teljes mértékben tisztában van a Linux környezetével, használhatja azokat a fájlokat és könyvtárakat, amelyek az aktuális munkakönyvtáron kívül élnek. Ez a példa hozzáadja az összes.mp4 fájlt a /home/myuser/Videos/ könyvtárba:

$ tar czvf archivename.tar.gz /home/myuser/Videos/*.mp4

mivel az archív fájlok nagy méretűek lehetnek, néha érdemes több kisebb fájlra bontani őket, átvinni őket új otthonukba, majd újra létrehozni az eredeti fájlt a másik végén. Az osztott eszköz erre a célra készült.

ebben a példában a-b azt mondja a Linuxnak, hogy ossza meg az archivename-t.kátrány.GZ fájl 1 GB méretű részekre. A művelet ezután megnevezi az egyes részeket-archivename.kátrány.gz.partaa, levéltári név.kátrány.gz.partab, levéltári név.kátrány.gz.partac, stb:

$ split -b 1G archivename.tar.gz "archivename.tar.gz.part"

a másik oldalon újra létrehozza az archívumot az egyes részek egymás utáni olvasásával (cat archivename.kátrány.gz.rész*), majd átirányítja a kimenetet egy új fájl nevű archivename.kátrány.gz:

$ cat archivename.tar.gz.part* > archivename.tar.gz

Streaming file system archives

itt kezdődik a jó dolgok. Megmutatom, hogyan lehet létrehozni egy archív képet egy működő Linux telepítésről, majd továbbítani egy távoli tárolási helyre-mindezt egyetlen parancson belül. Itt a parancs:

# tar czvf - --one-file-system / /usr /var \ --exclude=/home/andy/ | ssh [email protected] \ "cat > /home/username/workstation-backup-Apr-10.tar.gz"

ahelyett, hogy mindent azonnal megmagyaráznék, kisebb példákat fogok használni, hogy egyszerre egy darabot fedezzek fel.

hozzunk létre egy archívumot a fontosstuff nevű könyvtár tartalmáról, amely tele van, nos, nagyon fontos dolgokkal:

$ tar czvf - importantstuff/ | ssh [email protected] "cat > /home/username/myfiles.tar.gz"importantstuff/filename1importantstuff/[email protected]'s password:

hadd magyarázzam meg ezt a példát. Ahelyett, hogy az archívum nevét közvetlenül a parancs argumentumok után írnám be (ahogy eddig tetted), egy kötőjelet (czvf -) használtam.

a kötőjel kimenetek adatok szabványos kimenet. Ez lehetővé teszi, hogy az archív fájlnév részleteit a parancs végére Tolja vissza, majd azt mondja a tar-nak, hogy inkább az archívum forrástartalmát várja el.

ezután a meg nem nevezett, tömörített archívumot egy távoli kiszolgálón lévő ssh bejelentkezéshez vezetettem, ahol a jelszavamat kérték.

az idézőjelekbe zárt parancs ezután végrehajtotta a cat-t az archív adatfolyam ellen, amely a stream tartalmát a myfiles nevű fájlba írta.kátrány.gz a távoli gazdagép otthoni könyvtárában.

az archívumok ilyen módon történő generálásának egyik előnye, hogy elkerüli a középső lépés felső részét. Nem kell ideiglenesen menteni az archívum másolatát a helyi gépen. Képzelje el, hogy biztonsági másolatot készít egy olyan telepítésről, amely kitölti 110 GB-ot a 128 GB-os rendelkezésre álló helyéből. Hová tűnne az archívum?

Ez csak egy fájlkönyvtár volt. Tegyük fel, hogy le kell biztonsági másolatot készíteni egy aktív Linux operációs rendszerről egy USB meghajtóra, hogy áthelyezhessük egy külön gépre, majd a gép fő meghajtójába dobjuk.

feltételezve, hogy ugyanaz a Linux verzió már friss telepítésre kerül a második gépen, a következő copy/paste művelet az első pontos másolatát generálja.

Megjegyzés: Ez nem fog működni olyan célmeghajtón, amelyen még nincs telepítve Linux fájlrendszer. A helyzet kezeléséhez a ddértéket kell használnia.

a következő példa tömörített archívumot hoz létre a /dev/sdc1néven ismert USB meghajtón.

a --one-file-system argumentum kizárja az összes adatot bármely fájlrendszerből az aktuális mellett. Ez azt jelenti, hogy a /sys/ és /dev/ álpartíciók nem kerülnek hozzáadásra az archívumhoz. Ha vannak más partíciók is, amelyeket fel szeretne venni (mint a /usr/ és a /var/ ebben a példában), akkor azokat kifejezetten hozzá kell adni.

végül kizárhatja az adatokat az aktuális fájlrendszerből a --exclude argumentum:

# tar czvf /dev/sdc1/workstation-backup-Apr-10.tar.gz \ --one-file-system \ / /usr /var \ --exclude=/home/andy/

most térjünk vissza a teljes körű szolgáltatás parancs példájához. A már megtanultakkal archiválja a fájlrendszer összes fontos könyvtárát, majd másolja az archív fájlt egy USB-meghajtóra. Most már értelmesnek kell lennie:

# tar czvf - --one-file-system / /usr /var \ --exclude=/home/andy/ | ssh [email protected] \ "cat > /home/username/workstation-backup-Apr-10.tar.gz"

sokkal több adminisztrációs jóság van könyvek, tanfolyamok és cikkek formájában az én bootstrap-it.com.

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

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