Bli kjent rsync

En av de mest praktiske verktøyene du noensinne vil ha på Linux (og andre * nix systemer) er rsync. Som navnet tilsier, er rsync brukes til å synkronisere filer på eksterne og lokale maskiner. Du kan bruke rsync til å kopiere filer til eksterne systemer og tilbake igjen, eller å lage sikkerhetskopier til lokalt monterte harddisker. Et raskt blikk på mannen siden kan være litt skremmende, skjønt, så la oss gå gjennom noen av de mest brukte alternativene og se om rsync er riktig for deg

Ett ord av forsiktighet før du begynner. Som en effektivt verktøy, rsync er stor på å flytte data fra en maskin til en annen. Hvis det brukes feil, men det kan også være et effektivt verktøy ved å overskrive data eller slette filer. Vær oppmerksom på det faktum at når filene er slettet på Linux de er svært vanskelig om ikke umulig å komme seg, og det er sannsynligvis det motsatte av hva du prøver å oppnå.

Den første gangen du gjør deg klar til å kjøre en rsync-kommandoen, spesielt de første gangene ute, kan det være lurt å benytte seg av -n alternativ (også --dry drevne hvis du foretrekker den mer ordrik alternativ navn). Dette er å kjøre gjennom en prøvetur med ingen faktiske endringer.

Når skal du bruke rsync

Ved hjelp av en enkelt datamaskin for personlig bruk, kan det være lurt å bruke et verktøy som iFolder eller Dropbox for enkle sikkerhetskopier. Disse verktøyene er godt egnet for ting som gjør at en dokumenter katalogen er sikkerhetskopiert regelmessig eller tilgjengelig fra et annet sted når du er på reise eller i tilfelle en krasj. De ville være et godt emne for en egen artikkel, men bruk case for iFolder eller Dropbox er annerledes enn rsync.

Bruk rsync når du ønsker å gjøre ubetjent sikkerhetskopier, eller komplekse synkroniseringsoperasjoner. Det kan gjøre en masse ting som grafiske verktøy ikke kan, eller ikke gjøre det bra - som synkronisering av filer fra hjemmekatalogen til en lokalt tilkoblet USB-disk. De grafiske verktøyene gjøre noen ting rsync kan ikke (for eksempel å dele filer med andre brukere og grupper som iFolder) eller ikke gjøre enkelt -. Som bare slippe en fil i en mappe og ha det synkronisert opp til en ekstern maskin

Bruke rsync

De fleste Linux distroer bør ha rsync installert som standard. Hvis ikke, kan du bruke din distro s pakkebehandler å installere rsync. For eksempel, på opensuse vil jeg bruke:

 sudo zypper i rsync 

Pakken skal være "rsync" på omtrent alle større distribusjon

For å sende en fil fra punkt A. til punkt B, forteller du rsync å kopiere fra kilden til målet. Dette kan være et lokalt filsystem, eller et eksternt system. Jeg bruker rsync til å sikkerhetskopiere til en lokal USB disk når jeg reiser, og også bruke rsync til å sikkerhetskopiere filer til en ekstern tjeneste og fra min webserver til min lokale maskin for arkivering.

Her er et enkelt eksempel for å kopiere filer fra en hjemmekatalog til en USB-stasjon:

 rsync -avh --exclude = ". * iso" /home /bruker /bin //media /diskid /user_backup /

Som du ser, kan du kombinere alternativene etter en dash. Den -avhz følgende rsync er det samme som å bruke -a vH -z, men mye enklere å skrive.

La oss bryte det ned. Du har rsync-kommandoen etterfulgt av fire alternativer og ett argument. Alternativene er arkiv (-a), som forteller rsync til å kopiere filer rekursivt og for å bevare gruppe- og bruker eierskap når det kopierer filer. Dette er vanligvis en god idé å inkludere.

ordrik alternativ (v) forteller rsync til å skrive til terminalen hva det gjør i større detalj. Jeg liker å bruke denne når jeg tester en rsync-kommandoen før du legger den til et skript. Når du bruker dette, vil rsync skrive ut listen over endrede filer som det er sender og tiden det tar, hvor mye data blir kopiert over, etc. Hvis du utelater -V rsync vil bare skrive en kort melding om antall bytes sendt, størrelse, og så videre. Men du vil ikke se en detaljert fillisten. Hvis du ønsker å gjøre unna med dette helt, kan du bruke q alternativ i stedet for å "stille" rsync -. Som kan være nyttig i enkelte tilfeller når du skriver manus for rsync

lesbar alternativ (h) regisserer rsync til å produsere litt mer lesbar utgang. Uten -H, rsync viser bare bytes, som kanskje ikke er veldig nyttig. Merk at h er ikke det samme som H: rsync bruker -H for sin hjelp alternativet

Til slutt, regisserer denne kommandoen rsync å ignorere filer som slutter med .iso.. Jeg laster ned milepæl og Release Candidate bilder av opensuse ganske ofte, og ser ikke noe behov for å opprettholde en ekstern eller lokal backup av dem siden jeg alltid kan få dem på nytt om nødvendig.

ubetjent sikkerhetskopier
< p> Kopiere filer til en lokalt tilkoblet disk kan være nyttig, men jeg liker også å gjøre en backup til en ekstern maskin rett før jeg reiser, slik at jeg har tilgang til mine viktigste filer selv om min laptop dør eller blir stjålet. Det har ikke skjedd ennå, men jeg attributtet som til å gjøre backup på forhånd. Hvis det er noe man bør være overtroisk om, det er sikkerhetskopiering av filer. Hvis du mener noe annet, mener at filer som ikke er sikkerhetskopierte vil spontant slette seg selv hvis bare å tross deg.

Men gjør det enkelt for deg selv. Oddsen er at du ikke føler at du sitter ved datamaskinen å skrive inn et passord hver gang rsync åpner en ny tilkobling til en ekstern vert. Du kan kjøre ubetjent sikkerhetskopier ved å sette opp en SSH-tasten på den eksterne verten. Du kan også SSH inn en ekstern vert uten å måtte skrive inn passordet hver gang også. Hvis du ikke har satt opp dette tidligere, er det veldig enkelt. Åpne en terminal og kjør:

 ssh-keygen -t dsa 

Dette vil skape en offentlig og privat SSH nøkkelen for deg. Du vil bli bedt to ganger for et passord. Bare trykk Enter hver gang. Nå må du få den offentlige nøkkelen til den eksterne verten. For dette du vil bruke ssh-copy-id:

 ssh-copy-id -i ~ /.ssh /id_dsa.pub bruker @ host 

Dette er et script som vil kopiere den offentlige nøkkelen til en ekstern vert. Det kan ikke fungere på systemer som har fjern shell deaktivert. For eksempel, har jeg hatt noen suksess å få det til å fungere med rsync.net. I slike tilfeller må du kopiere den offentlige nøkkelen til ~ /.ssh /authorized_keys på det eksterne systemet.

Merk at dette betyr hvis ditt lokale system er kompromittert, alle med lokal tilgang kan også skallet inn ekstern maskiner uten et passord.

Nå er det på tide å fortelle rsync å bruke SSH, og peker på en ekstern vert. For å gjøre dette, bruker -e SSH alternativet, som så:

 rsync -avze ssh /home /bruker /katalog / bruker: @  remote.host.net Anmeldelser : home /bruker /katalog /

Her jeg tacked på fjern shell (-e) muligheten til å -avz og fortalte rsync at den skal bruke SSH. Merk at rsync kan også bruke andre metoder som rsh, men i praksis har jeg aldri sett rsync brukes med alt annet enn SSH.

Når du angir katalogene, være tydelig på om du tar med skråstrek. I eksempelet ovenfor, /home /bruker /katalog ville ikke være det samme som /home /bruker /katalog /. Den ekstra skråstrek forteller rsync å kopiere innholdet, men ikke katalogen selv. Uten det, vil rsync også opprette katalogen.

Hva er z alternativet gjøre? Det forteller rsync å komprimere data som sendes.

Merk at du kan gjøre dette den andre veien også. Hvis du ønsker å sikkerhetskopiere et eksternt system til det lokale systemet, bare bytte eksterne og lokale verts mål, som så:

 rsync -avze ssh  bruker: @  remote.host .net Bilde: home /bruker /katalog //home /bruker /katalog /
Andre viktige alternativer

Hvis du ønsker å opprettholde en eksakt kopi av en katalog, kan du legge den --delete alternativ til rsync-kommandoen. Dette vil sammenligne destinasjon og slette filer som ikke finnes på det lokale systemet.

Fordelen med å bruke --delete er at du holder en mer eller mindre identisk kopi av de to filsystemer. Ulempen er at hvis du sletter en lokal fil ved et uhell, og du har en rsync backup skjer med jevne mellomrom, vil du miste muligheten til å gjenopprette filer fra den eksterne backup

Baksiden av --delete er. - -Backup og backup,-dir eller suffix. Hvis det finnes en fil som allerede er på verten, vil rsync kopiere det før det er overskrevet med filen som overføres. Jeg bruker ikke disse mye selv, men det kan være nyttig i enkelte tilfeller.

Når du kjører en deltok kopi, jeg liker å bruke --progress, så jeg kan se hva som skjer da rsync eksemplarer hver fil . Når du gjør ubetjent sikkerhetskopier, er --progress ikke veldig nyttig.

Gå Forth og Synkron

Jeg har sett mange mennesker frata rsync fordi det store utvalget av alternativer og argumenter som kan brukes med rsync virke skremmende for nye brukere. Jeg håper denne opplæringen bidrar til å komme i gang. Sørg også for å lese rsync mannen siden, og hvis det er noe som det virker rsync bør
gjør det, så anbefaler jeg sterkt å konsultere Google for å se om noen har blogget om å gjøre det eller besvart et spørsmål på en mailingliste eller forum.

Joe 'Zonker' Brockmeier er en langvarig FOSS talsmann, og arbeider for Novell som community manager for opensuse. Før han kom til Novell, jobbet Brockmeier som en teknologi journalist som dekker åpen kildekode rytme til en rekke publikasjoner, inkludert Linux Magazine, Linux Weekly News, Linux.com, UnixReview.com, IBM developerworks, og mange andre.