navnet tar
er, for de fleste kontoer, kort for tape arkiv. De aktuelle «tapene» ville være alle de magnetiske lagringsstasjonene som var populære helt tilbake på 1950-tallet.
det antyder at tar
– verktøyet kan være litt gammelt og forbi sin prime. Men sannheten er at gjennom alle årene og gjennom alle de seismiske endringene I IT-verdenen,tar
har mistet ingen av sin kraft og verdi.I denne artikkelen, basert på innhold fra Min Linux In Action-bok, skal jeg vise deg grunnleggende om tar-arkivopprettelse, komprimering og restaurering. La oss starte fra begynnelsen.
dette eksemplet vil ta alle filene og katalogene i og under gjeldende arbeidskatalog og bygge en arkivfil som jeg smart har kalt archivename.tar
.
her bruker jeg tre argumenter etter tar-kommandoen:
-
c
forteller tar å opprette et nytt arkiv, -
f
peker på filnavnet jeg vil gi arkivet.
v
setter skjermutgangen til verbose slik at jeg får oppdateringer, og
*
er det som fortellertar
å inkludere alle filer og lokale kataloger rekursivt.
$ tar cvf archivename.tar *file1file2file3directory1directory1/morestuffdirectory1/morestuff/file100directory1/morestuff/file101
tar-kommandoen vil aldri flytte eller slette noen av de originale katalogene og filene du mater den – den lager bare arkiverte kopier.
Du bør også være oppmerksom på at du bruker en prikk (.) i stedet for en stjerne (*) i forrige kommando vil inkludere selv skjulte filer (hvis filnavn begynner med en prikk) i arkivet.
hvis du følger med på din egen datamaskin (som du definitivt burde), vil du se en ny fil som heter archivename.tjære. Den .tar filendelse er ikke nødvendig, men det er alltid en god ide å tydelig kommunisere formålet med en fil på så mange måter som mulig.Det Er enkelt Å Trekke ut arkivet ditt for å gjenopprette filene: Bare bruk xvf
i stedet for cvf
. Det vil i eksemplet lagre nye kopier av de opprinnelige filene og katalogene i gjeldende plassering.
$ tar xvf archivename.tarfile1file2file3directory1directory1/morestuffdirectory1/morestuff/file100directory1/morestuff/file101
selvfølgelig kan du også få tjære til å sende dine utpakkede filer til et annet sted ved hjelp av -C
argumentet, etterfulgt av målplasseringen:
$ tar xvf archivename.tar -C /home/mydata/oldfiles/
du vil ikke alltid inkludere alle filene i et katalogtre i arkivet ditt.
Anta at du har produsert noen videoer, men de er for tiden holdt i kataloger sammen med alle slags grafikk, lyd og tekstfiler (som inneholder notatene dine). De eneste filene du trenger å sikkerhetskopiere er de endelige videoklippene ved hjelp av. mp4 filendelsen.
Slik gjør du det:
$ tar cvf archivename.tar *.mp4
det er flott. Men disse videofilene er enorme. Ville det ikke vært fint å gjøre det arkivet litt mindre ved hjelp av komprimering?
Si ikke mer! Bare kjør den forrige kommandoen med argumentet z
(zip). Det vil fortelle gzip-programmet å komprimere arkivet.
hvis du vil følge konvensjonen, kan du også legge til en.gz
utvidelse i tillegg til .tar
som allerede er der. Husk: klarhet.
Her er hvordan det ville spille ut:
$ tar czvf archivename.tar.gz *.mp4
hvis du prøver dette ut på egen hånd .mp4 filer og deretter kjøre ls-l på katalogen som inneholder de nye arkivene, kan du merke at.tar.gz
filen er ikke så mye mindre enn.tar
fil, kanskje 10% eller så. Hva er det med det?
vel,.mp4
filformatet er komprimert, så det er mye mindre plass for gzip å gjøre sine ting.siden tar er fullt klar Over Linux-miljøet, kan du bruke det til å velge filer og kataloger som lever utenfor din nåværende arbeidskatalog. Dette eksemplet legger til alle.mp4
filer i/home/myuser/Videos/
katalogen:
$ tar czvf archivename.tar.gz /home/myuser/Videos/*.mp4
fordi arkivfiler kan bli store, kan det noen ganger være fornuftig å bryte dem ned i flere mindre filer, overføre dem til sitt nye hjem, og deretter gjenopprette den opprinnelige filen i den andre enden. Split-verktøyet er laget for dette formålet.
i dette eksemplet forteller-b
Linux å dele arkivnavnet.tjære.gz-fil i 1 GB-størrelse deler. Operasjonen navngir deretter hver av delene-arkivnavnet.tjære.gz.partaa, arkivnavn.tjære.gz.partab, arkivnavn.tjære.gz.partac, og så videre:
$ split -b 1G archivename.tar.gz "archivename.tar.gz.part"
på den andre siden oppretter du arkivet ved å lese hver av delene i rekkefølge (cat archivename.tjære.gz.del*), og deretter omdirigere utdataene til en ny fil som heter archivename.tjære.gz:
$ cat archivename.tar.gz.part* > archivename.tar.gz
Streaming filsystem arkiver
her er hvor de gode greiene starter. Jeg skal vise deg hvordan du lager et arkivbilde av En Fungerende Linux-installasjon og streamer den til en ekstern lagringssted-alt i en enkelt kommando. Her er kommandoen:
# tar czvf - --one-file-system / /usr /var \ --exclude=/home/andy/ | ssh [email protected] \ "cat > /home/username/workstation-backup-Apr-10.tar.gz"
I Stedet for å prøve å forklare alt det med en gang, bruker jeg mindre eksempler for å utforske det ett stykke om gangen.
La oss lage et arkiv av innholdet i en katalog som heter importantstuff som er fylt med, vel, veldig viktige ting:
$ tar czvf - importantstuff/ | ssh [email protected] "cat > /home/username/myfiles.tar.gz"importantstuff/filename1importantstuff/[email protected]'s password:
La meg forklare det eksemplet. I stedet for å skrive inn arkivnavnet rett etter kommandoargumentene (slik du har gjort til nå), brukte jeg et dash(czvf -).
dashbordet utganger data til standard utgang. Den lar deg skyve arkiv filnavn detaljer tilbake til slutten av kommandoen og forteller tar å forvente kildeinnholdet for arkivet i stedet.
jeg piped (|) det ikke navngitte, komprimerte arkivet til en ssh-pålogging på en ekstern server der jeg ble bedt om passordet mitt.
kommandoen som er vedlagt anførselstegn, utføres deretter cat mot arkivdatastrømmen, som skrev strøminnholdet til en fil som heter myfiles.tjære.gz i min hjemmekatalog på den eksterne verten.
en fordel med å generere arkiver på denne måten er at du unngår overhead av et mellomtrinn. Det er ikke nødvendig å lagre en kopi av arkivet midlertidig på den lokale maskinen. Tenk deg å sikkerhetskopiere en installasjon som fyller 110 GB av sin 128 GB ledig plass. Hvor skal arkivet hen?
det var bare en katalog med filer. Anta at du må sikkerhetskopiere et aktivt Linux OS til EN USB-stasjon, slik at du kan flytte den over til en egen maskin og slippe den inn i maskinens hoveddisk. Forutsatt at det allerede er en ny installasjon av Samme Linux-versjon på den andre maskinen, vil neste kopi/lim inn-operasjon generere en eksakt kopi av den første.
MERK: DETTE vil ikke fungere på en målstasjon som ikke allerede har Et Linux-filsystem installert. For å håndtere denne situasjonen må du bruke
dd
det neste eksemplet oppretter et komprimert arkiv på USB-stasjonen kjent som /dev/sdc1
.
argumentet--one-file-system
utelukker alle data fra et hvilket som helst filsystem i tillegg til det nåværende. Dette betyr at pseudo-partisjoner som /sys/
og/dev/
ikke vil bli lagt til i arkivet. Hvis det er andre partisjoner du vil inkludere (som du vil gjøre for /usr/
og /var/
i dette eksemplet), bør de eksplisitt legges til.
til Slutt kan du ekskludere data fra det nåværende filsystemet ved hjelp av--exclude
argumentet:
# tar czvf /dev/sdc1/workstation-backup-Apr-10.tar.gz \ --one-file-system \ / /usr /var \ --exclude=/home/andy/
la oss nå gå tilbake til det fullservicekommandoeksemplet. Bruk det du allerede har lært, arkiver alle viktige kataloger i et filsystem og kopier arkivfilen til EN USB-stasjon. Det burde være fornuftig for deg nå:
# tar czvf - --one-file-system / /usr /var \ --exclude=/home/andy/ | ssh [email protected] \ "cat > /home/username/workstation-backup-Apr-10.tar.gz"
det er mye mer administrasjon godhet i form av bøker, kurs og artikler tilgjengelig på min bootstrap-it.com.