Tar-komento Linuxissa: Tar CVF ja Tar XVF selitettiin Esimerkkikomennoilla

nimi tar on useimpien tilien mukaan lyhenne sanoista tape archive. Kyseiset ”nauhat”olisivat kaikki niitä magneettitallennusasemia, jotka olivat suosittuja aina 1950-luvulle asti.

mikä viittaa siihen, että tar työkalu saattaa olla hieman vanha ja ohi alkulähteensä. Mutta totuus on, että kaikkien vuosien aikana ja kaikkien IT-maailmaan kohdistuneiden seismisten muutosten kautta tar ei ole menettänyt mitään voimastaan ja arvostaan.

tässä Linux in Action-kirjani sisältöön perustuvassa artikkelissa aion näyttää tar-arkiston luomisen, pakkaamisen ja restauroinnin perusteet. Aloitetaan alusta.

tässä esimerkissä otetaan kaikki nykyisen työhakemiston sisällä ja alla olevat tiedostot ja hakemistot ja rakennetaan arkistotiedosto, jonka olen taitavasti nimennyt archivename.tar.

tässä käytän tar-komennon jälkeen kolmea argumenttia:

  • the c käskee Tarin luoda uuden arkiston,
  • vasettaa ruudun tulosteen sanavalmiiksi niin saan päivitykset, ja

  • fpisteitä tiedostonimeen, jonka haluaisin antaa arkisto.

* kertoo, että tar sisältää kaikki tiedostot ja paikalliset hakemistot rekursiivisesti.

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

tar – komento ei koskaan siirrä tai poista mitään sille syötetyistä alkuperäisistä hakemistoista ja tiedostoista-se tekee vain arkistoituja kopioita.

kannattaa myös huomioida, että pisteellä (.) sen sijaan, että edellisessä komennossa olisi asteriski ( * ), arkistossa olisi jopa piilotiedostoja (joiden tiedostonimet alkavat pisteellä).

Jos seuraat mukana omalla tietokoneellasi (kuten ehdottomasti kuuluukin), näet uuden tiedoston nimeltä archivename.tervaa. Että .tar tiedostonimi laajennus ei ole tarpeen, mutta se on aina hyvä idea selkeästi kommunikoida tarkoitus tiedoston niin monin tavoin kuin mahdollista.

arkiston purkaminen tiedostojen palauttamiseksi on helppoa: Käytä vain xvf sijasta cvf. Tämä, esimerkissä, tallentaa uusia kopioita alkuperäisistä tiedostoista ja hakemistoista nykyiseen sijaintiin.

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

toki myös tar voi lähettää poimitut tiedostot johonkin muuhun paikkaan käyttäen -C argumenttia, jota seuraa kohdepaikka:

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

et aina halua sisällyttää arkistoosi kaikkia hakemistopuun sisältämiä tiedostoja.

Oletetaan, että olet tuottanut joitakin videoita, mutta niitä säilytetään tällä hetkellä hakemistoissa sekä kaikenlaisissa graafisissa, ääni-ja tekstitiedostoissa (jotka sisältävät muistiinpanosi). Vain tiedostot täytyy varmuuskopioida ovat lopullisia videoleikkeitä käyttäen. mp4 tiedostonimi laajennus.

näin se onnistuu:

$ tar cvf archivename.tar *.mp4

se on hienoa. Videotiedostot ovat valtavia. Eikö olisi kiva tehdä arkistosta hieman pienempi puristamalla?

Say no more! Suorita edellinen komentoz (zip) – argumentilla. Se kertoo gzip-ohjelman tiivistävän arkiston.

Jos haluat seurata konventiota, voit myös lisätä .gz laajennuksen .tar, joka on jo olemassa. Muista: selkeys.

näin se toimisi:

$ tar czvf archivename.tar.gz *.mp4

jos kokeilet tätä itse .mp4-tiedostoja ja sitten ajat ls-l: n uudet arkistot sisältävään hakemistoon, saatat huomata, että .tar.gz tiedosto ei ole kovin paljon pienempi kuin .tar tiedosto, ehkä noin 10%. Mikä tuo on?

no, .mp4 tiedostomuoto on itsessään pakattu, joten gzipillä on paljon vähemmän tilaa tehdä juttujaan.

koska tar on täysin tietoinen Linux-ympäristöstään, voit käyttää sitä valitaksesi tiedostoja ja hakemistoja, jotka elävät nykyisen työhakemistosi ulkopuolella. Tässä esimerkissä lisätään kaikki .mp4 tiedostot /home/myuser/Videos/ hakemistoon:

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

koska arkistotiedostot voivat kasvaa suuriksi, saattaa joskus olla järkevää jakaa ne useisiin pienempiin tiedostoihin, siirtää ne uuteen kotiinsa ja sitten luoda alkuperäinen tiedosto uudelleen toiseen päähän. Split työkalu on tehty tätä tarkoitusta varten.

tässä esimerkissä -b kertoo Linuxin jakavan arkistonimen.tervaa.GZ-tiedosto 1 GB-kokoisiin osiin. Tämän jälkeen operaatiossa nimetään kaikki osat-arkistonimi.tervaa.gz.partaa, arkistonimi.tervaa.gz.partab, arkistonimi.tervaa.gz.partac ja niin edelleen:

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

toisella puolella luodaan arkisto uudelleen lukemalla jokainen osa järjestyksessä (cat archivename.tervaa.gz.osa*), sitten ohjata lähtö uuteen tiedostoon nimeltään archivename.tervaa.gz:

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

Streaming file system archives

tästä se hyvä juttu alkaa. Aion näyttää sinulle, kuinka luoda Arkistokuva toimivasta Linux-asennuksesta ja suoratoistaa se etätallennuspaikalle-kaikki yhden komennon sisällä. Tässä komento:

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

sen sijaan, että yrittäisin selittää kaiken saman tien, tutkin sitä pienempien esimerkkien avulla pala kerrallaan.

luodaan arkisto tärkeäksi kutsutun hakemiston sisällöstä, joka on täynnä, no, todella tärkeitä juttuja:

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

selitän tuon esimerkin. Sen sijaan, että syöttäisit arkiston nimen heti komentoargumenttien jälkeen (kuten olet tehnyt tähän asti), käytin viivakoodia (czvf -).

viiva lähettää tiedot vakiotulosteeseen. Sen avulla voit työntää arkiston tiedostonimen tiedot takaisin komennon loppuun ja käskee tar: A odottamaan sen sijaan arkiston lähdesisältöä.

sitten pipetoin ( / ) nimeämättömän, pakatun arkiston ssh-kirjautumiseen etäpalvelimelle, jossa minulta kysyttiin salasanaa.

lainausmerkkeihin liitetty komento suoritti sitten cat: n arkiston tietovirtaa vastaan, joka kirjoitti virran sisällön myfiles-nimiseen tiedostoon.tervaa.gz kotihakemistossani etäpalvelimessa.

yksi etu arkistojen luomisessa tällä tavalla on, että vältät keskimmäisen askeleen ylimenon. Arkiston kopiota ei tarvitse edes hetkellisesti tallentaa paikalliselle koneelle. Kuvittele varmuuskopioivasi asennus, joka täyttää 110 GT 128 Gt käytettävissä olevasta tilasta. Minne arkisto menisi?

se oli vain hakemisto tiedostoista. Oletetaan, että sinun täytyy varmuuskopioida aktiivinen Linux-käyttöjärjestelmä USB-asemaan, jotta voit siirtää sen erilliselle koneelle ja pudottaa sen kyseisen koneen pääasemalle.

olettaen, että toisessa koneessa on jo Uusi saman Linux-version asennus, seuraava copy / paste-operaatio tuottaa tarkan kopion ensimmäisestä.

HUOM: Tämä ei toimi kohdeasemalla, johon ei ole jo asennettu Linux-tiedostojärjestelmää. Tilanteen hoitamiseen tarvitaan dd

seuraava esimerkki luo USB-levylle pakatun arkiston, joka tunnetaan nimellä /dev/sdc1.

--one-file-system – argumentti sulkee pois kaikki tiedot mistä tahansa tiedostojärjestelmästä nykyisen lisäksi. Tämä tarkoittaa, että pseudo-osioita, kuten /sys/ ja /dev/, ei lisätä arkistoon. Jos on olemassa muita osioita, jotka haluat sisällyttää (kuten teet /usr/ ja /var/ tässä esimerkissä), ne tulee lisätä eksplisiittisesti.

lopultakin voi jättää tiedot pois nykyisestä tiedostojärjestelmästä käyttämällä --exclude argumentti:

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

nyt palataan siihen täyden palvelun komentoesimerkkiin. Arkistoi kaikki tiedostojärjestelmän tärkeät hakemistot ja kopioi arkistotiedosto USB-levylle käyttämällä jo oppimaasi. Siinä pitäisi olla järkeä.:

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

on paljon enemmän hallinnon hyvyyttä kirjojen, kurssien ja artikkelien muodossa saatavilla minun bootstrap-it.com.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *