Ikke-nybegynners veiledning for å synkronisere data med Rsync

Innholdsfortegnelse:

Ikke-nybegynners veiledning for å synkronisere data med Rsync
Ikke-nybegynners veiledning for å synkronisere data med Rsync

Video: Ikke-nybegynners veiledning for å synkronisere data med Rsync

Video: Ikke-nybegynners veiledning for å synkronisere data med Rsync
Video: Public vs Private IP Address - YouTube 2024, April
Anonim
Rsync-protokollen kan være ganske enkel å bruke for vanlige backup / synkroniseringsjobber, men noen av de mer avanserte funksjonene kan overraske deg. I denne artikkelen skal vi vise hvordan selv de største datahullerne og backup-entusiasterne kan bruke rsync som en enkelt løsning for alle deres data redundansbehov.
Rsync-protokollen kan være ganske enkel å bruke for vanlige backup / synkroniseringsjobber, men noen av de mer avanserte funksjonene kan overraske deg. I denne artikkelen skal vi vise hvordan selv de største datahullerne og backup-entusiasterne kan bruke rsync som en enkelt løsning for alle deres data redundansbehov.

Advarsel: Bare avanserte geeks

Hvis du sitter der og tenker "Hva er det, er rsync?" Eller "Jeg bruker bare rsync for veldig enkle oppgaver," kan du sjekke ut vår forrige artikkel om hvordan du bruker rsync til å sikkerhetskopiere dataene dine på Linux, noe som gir en introduksjon til rsync, guider deg gjennom installasjon, og viser sine grunnleggende funksjoner. Når du har en fast forståelse av hvordan du bruker rsync (ærlig, det er ikke så komplisert) og er komfortabel med en Linux-terminal, er du klar til å gå videre til denne avanserte guiden.

Kjører rsync på Windows

Først, la oss få våre Windows-lesere på samme side som vår Linux gurus. Selv om rsync er bygget for å kjøre på Unix-lignende systemer, er det ingen grunn til at du ikke bør kunne bruke det like mye på Windows. Cygwin produserer en fantastisk Linux API som vi kan bruke til å kjøre rsync, så gå over til deres nettsted og last ned 32-bit eller 64-biters versjon, avhengig av datamaskinen.

Installasjonen er enkel; Du kan beholde alle valgene til standardverdiene til du kommer til skjermbildet "Velg pakker".

Nå må du gjøre de samme trinnene for Vim og SSH, men pakkene kommer til å se litt annerledes når du går for å velge dem, så her er noen skjermbilder:
Nå må du gjøre de samme trinnene for Vim og SSH, men pakkene kommer til å se litt annerledes når du går for å velge dem, så her er noen skjermbilder:

Installere Vim:

Installere SSH:
Installere SSH:
Når du har valgt de tre pakkene, fortsett å klikke på neste til du er ferdig med installasjonen. Deretter kan du åpne Cygwin ved å klikke på ikonet som installatøren plasserte på skrivebordet.
Når du har valgt de tre pakkene, fortsett å klikke på neste til du er ferdig med installasjonen. Deretter kan du åpne Cygwin ved å klikke på ikonet som installatøren plasserte på skrivebordet.

rsync Kommandoer: Enkel til Avansert

Nå som Windows-brukerne er på samme side, la oss ta en titt på en enkel rsync-kommando, og vise hvordan bruk av noen avanserte brytere raskt kan gjøre det komplisert.

La oss si at du har en masse filer som trenger sikkerhetskopiering - hvem gjør de ikke i disse dager? Du plugger inn den bærbare harddisken, slik at du kan sikkerhetskopiere datamaskinens filer, og utsted følgende kommando:

rsync -a /home/geek/files/ /mnt/usb/files/

Eller hvordan den ville se på en Windows-datamaskin med Cygwin:

rsync -a /cygdrive/c/files/ /cygdrive/e/files/

Ganske enkelt, og på det tidspunktet er det egentlig ikke nødvendig å bruke rsync, siden du bare kan dra og slippe filene. Men hvis den andre harddisken allerede har noen av filene og bare trenger de oppdaterte versjonene pluss filene som er opprettet siden sist synkronisering, er denne kommandoen nyttig fordi den bare sender de nye dataene til harddisken. Med store filer, og spesielt overføring av filer over internett, er det en stor avtale.

Sikkerhetskopiering av filene dine til en ekstern harddisk, og deretter å holde harddisken på samme sted som datamaskinen din, er en veldig dårlig ide, så la oss ta en titt på hva det ville kreve for å sende filer over internett til en annen datamaskin ( en du har leid, et familiemedlem, etc).

rsync -av --delete -e 'ssh -p 12345’ /home/geek/files/ [email protected]:/home/geek2/files/

Kommandoen ovenfor vil sende filene dine til en annen datamaskin med en IP-adresse på 10.1.1.1. Det ville slette fremmede filer fra destinasjonen som ikke lenger eksisterer i kildekatalogen, skriv ut filnavnene som overføres, slik at du har en ide om hva som skjer, og tunnel rsync gjennom SSH på port 12345.

De

-a -v -e --delete

Brytere er noen av de mest grunnleggende og ofte brukt; du bør allerede vite en god avtale om dem hvis du leser denne opplæringen. La oss gå over noen andre brytere som noen ganger ignoreres, men utrolig nyttige:

--progress

- Denne bryteren lar oss se overføringsprosessen for hver fil. Det er spesielt nyttig når du overfører store filer over internett, men kan sende ut en meningsløs mengde informasjon når du bare overfører små filer over et raskt nettverk.

En rsync-kommando med

--progress

bytt når sikkerhetskopiering er i gang:

Image
Image

--partial

- Dette er en annen bryter som er spesielt nyttig når du overfører store filer over Internett. Hvis rsync blir avbrutt av en eller annen grunn midt i en filoverføring, blir den delvis overførte filen lagret i målkatalogen, og overføringen gjenopptas der den ble slått av når rsync-kommandoen er utført igjen. Når du overfører store filer via Internett (for eksempel et par gigabyte), er det ikke noe verre enn å ha noen andre internettbrudd, blå skjerm eller menneskelig feil, og du må starte filoverføringen og måtte starte om igjen.

-P

- Denne bryteren kombinerer

--progress

og

--partial

så bruk den i stedet, og det vil gjøre din rsync-kommando litt nyere.

-z

eller

--compress

- Denne bryteren vil gjøre rsync komprimeringsfildata som den overføres, og reduserer mengden data som må sendes til destinasjonen. Det er faktisk en ganske vanlig bryter, men er langt fra viktig, bare til stor nytte for deg på overføringer mellom langsomme tilkoblinger, og det gjør ingenting for følgende typer filer: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

-h

eller

--human-readable

- Hvis du bruker

--progress

bytt, vil du definitivt også bruke denne også. Det vil si, med mindre du liker å konvertere byte til megabyte på fly. De

-h

Bytt konverterer alle utgitte tall til menneskelig lesbart format, slik at du faktisk kan fornemme mengden data som overføres.

-n

eller

--dry-run

- Denne bryteren er viktig å vite når du først skriver rsync script og tester det ut. Det utfører en prøvekjøring, men gjør egentlig ikke noen endringer. Det er ikke nødvendig å endre endringer som normalt, slik at du kan lese alt og sørge for at det ser bra ut før du ruller skriptet ditt inn i produksjonen.

-R

eller

--relative

- Denne bryteren må brukes hvis målkatalogen ikke allerede eksisterer. Vi bruker dette alternativet senere i denne veiledningen, slik at vi kan lage kataloger på målmaskinen med tidsstempler i mappenavnene.

--exclude-from

- Denne bryteren brukes til å koble til en ekskluderingsliste som inneholder katalogbaner som du ikke vil sikkerhetskopiere. Det trenger bare en ren tekstfil med en katalog eller filbane på hver linje.

--include-from

- Lik

--exclude-from

men det kobler til en fil som inneholder kataloger og filbaner med data du vil sikkerhetskopiere.

--stats

- Ikke egentlig en viktig bryter på noen måte, men hvis du er sysadmin, kan det være nyttig å vite detaljert statistikk for hver sikkerhetskopiering, bare slik at du kan overvåke hvor mye trafikk som sendes over nettverket ditt og slikt.

--log-file

- Dette lar deg sende rsync-utgangen til en loggfil. Vi anbefaler absolutt dette for automatiserte sikkerhetskopier, der du ikke er der for å lese gjennom produksjonen selv. Gi alltid loggfiler en gang til i fritiden for å sikre at alt fungerer som det skal. Det er også en viktig bryter for at en sysadmin skal brukes, slik at du ikke lurer på hvordan sikkerhetskopiene dine mislyktes mens du forlot internansvarlig.

La oss ta en titt på vår rsync-kommando nå, da vi har lagt til noen flere brytere:

rsync -avzhP --delete --stats --log-file=/home/geek/rsynclogs/backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' /home/geek/files/ [email protected]:/home/geek2/files/

Kommandoen er fortsatt ganske enkel, men vi har fortsatt ikke opprettet en anstendig backup-løsning. Selv om filene våre nå er på to forskjellige fysiske steder, gjør denne sikkerhetskopien ingenting for å beskytte oss mot en av hovedårsakene til tap av data: menneskelig feil.

Snapshot Backups

Hvis du ved et uhell sletter en fil, ødelegger et virus noen av filene dine, eller det skjer noe som gjør at filene dine er uønsket endret, og deretter kjører du rsync-backup scriptet, blir dine sikkerhetskopierte data overskrevet med uønskede endringer. Når en slik ting oppstår (ikke hvis, men når), gjorde backup-løsningen ingenting for å beskytte deg mot tap av data.

Skaperen av rsync skjønte dette, og la til

--backup

og

--backup-dir

argumenter slik at brukere kan kjøre differensielle sikkerhetskopier. Det aller første eksempelet på rsyncs nettsted viser et skript hvor en full backup kjøres hver syv dager, og deretter blir endringene i disse filene sikkerhetskopiert i separate kataloger daglig. Problemet med denne metoden er at å gjenopprette filene dine, må du effektivt gjenopprette dem syv forskjellige tider. Videre kjører de fleste geeks flere ganger om dagen, slik at du enkelt kan ha 20 + forskjellige backup kataloger til enhver tid. Ikke bare er gjenopprettingen av filene dine nå en smerte, men selv om du bare ser gjennom de sikkerhetskopierte dataene dine, kan det være ekstremt tidkrevende. Du må vite sist en fil ble endret for å finne den nyeste sikkerhetskopien. På toppen av alt det, er det ineffektivt å kjøre bare ukentlig (eller enda mindre ofte i noen tilfeller) inkrementelle sikkerhetskopier.

Stillbilder sikkerhetskopiering til redning! Stillbilder er ikke noe mer enn inkrementelle sikkerhetskopier, men de bruker hardlinks for å beholde filstrukturen til den opprinnelige kilden. Det kan være vanskelig å bryte hodet rundt først, så la oss ta en titt på et eksempel.

Foreløpig har vi et backup-skript som kjører automatisk tilbake på våre data hver annen time. Når rsync gjør dette, heter det hver sikkerhetskopi i formatet: Backup-måned-dag-års tid.

Så, på slutten en typisk dag, ville vi ha en liste over mapper i vår destinasjonskatalog som denne:

Når du går gjennom noen av disse katalogene, ser du alle filer fra kildekatalogen akkurat som den var på den tiden. Likevel vil det ikke være duplikater på tvers av to kataloger. rsync oppnår dette ved bruk av hardlinking gjennom
Når du går gjennom noen av disse katalogene, ser du alle filer fra kildekatalogen akkurat som den var på den tiden. Likevel vil det ikke være duplikater på tvers av to kataloger. rsync oppnår dette ved bruk av hardlinking gjennom

--link-dest=DIR

argument.

Selvfølgelig, for å kunne ha disse pent og nøyaktig daterte katalognavnene, må vi bøte opp vårt rsync script litt. La oss ta en titt på hva det ville ta å utføre en backup løsning som dette, og da vil vi forklare manuset mer detaljert:

#!/bin/bash

#copy old time.txt to time2.txt

yes | cp ~/backup/time.txt ~/backup/time2.txt

#overwrite old time.txt file with new time

echo `date +”%F-%I%p”` > ~/backup/time.txt

#make the log file

echo “” > ~/backup/rsync-`date +”%F-%I%p”`.log

#rsync command

rsync -avzhPR --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --delete --stats --log-file=~/backup/rsync-`date +”%F-%I%p”`.log --exclude-from '~/exclude.txt' --link-dest=/home/geek2/files/`cat ~/backup/time2.txt` -e 'ssh -p 12345' /home/geek/files/ [email protected]:/home/geek2/files/`date +”%F-%I%p”`/

#don’t forget to scp the log file and put it with the backup

scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/backup/time.txt`.log

Det ville være et typisk øyeblikksbilde rsync script. Hvis vi taper deg et sted, la oss dissekere det stykke for hverandre:

Den første linjen i skriptet kopierer innholdet av time.txt til time2.txt. Ja-pipet er å bekrefte at vi vil overskrive filen. Deretter tar vi nåværende tid og legger den inn i time.txt. Disse filene kommer til nytte senere.

Den neste linjen gjør rsync-loggfilen, og navngir den rsync-date.log (hvor dato er faktisk dato og klokkeslett).

Nå, den komplekse rsync kommandoen som vi har advart deg om:

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest

- Bare bryterne vi snakket om tidligere; bla opp hvis du trenger en oppfriskning.

--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r

- Dette er tillatelsene for målkatalogen. Siden vi lager denne katalogen midt i vårt rsync-skript, må vi spesifisere tillatelsene slik at brukeren kan skrive filer til den.

Bruken av dato- og kattkommandoer

Vi skal gå over hver bruk av datoen og kattkommandoer inni rsync-kommandoen, i den rekkefølgen de oppstår. Merk: Vi er klar over at det finnes andre måter å oppnå denne funksjonaliteten på, spesielt ved bruk av erklæringsvariabler, men i denne veiledningen har vi bestemt oss for å bruke denne metoden.

Loggfilen er spesifisert som:

~/backup/rsync-`date +”%F-%I%p”`.log

Alternativt kunne vi ha spesifisert det som:

~/backup/rsync-`cat ~/backup/time.txt`.log

Uansett, den

--log-file

kommandoen skal kunne finne den tidligere opprettede daterte loggfilen og skrive til den.

Lenke destinasjonsfilen er spesifisert som:

--link-dest=/home/geek2/files/`cat ~/backup/time2.txt`

Dette betyr at

--link-dest

Kommandoen er gitt katalogen til den forrige sikkerhetskopien. Hvis vi kjører sikkerhetskopier hver annen time, og det er 16:00 da vi løp dette skriptet, da

--link-dest

Kommandoen ser etter katalogen opprettet klokken 14:00 og overfører bare dataene som har endret seg siden da (hvis noen).

For å gjenta, er det derfor time.txt kopiert til time2.txt i begynnelsen av manuset, slik at

--link-dest

kommandoen kan referere den tiden senere.

Destinasjonsmappen er spesifisert som:

[email protected]:/home/geek2/files/`date +”%F-%I%p”`

Denne kommandoen legger ganske enkelt kildefilene inn i en katalog som har tittel på gjeldende dato og klokkeslett.

Endelig sørger vi for at en kopi av loggfilen er plassert i sikkerhetskopien.

scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/backup/time.txt`.log

Vi bruker sikker kopi på port 12345 for å ta rsync loggen og plassere den i riktig katalog. For å velge riktig loggfil og sørg for at den ender opp på riktig sted, må filen time.txt refereres via kattkommandoen. Hvis du lurer på hvorfor vi bestemte oss for å katte time.txt i stedet for bare å bruke datakommandoen, er det fordi mye tid kunne ha oppstått mens rsync-kommandoen kjørte, så for å sikre at vi har det rette tidspunktet, er vi bare katt tekstdokumentet vi opprettet tidligere.

Automasjon

Bruk Cron på Linux eller Task Scheduler på Windows for å automatisere rsync script. En ting du må være forsiktig med, er å sørge for at du avslutter alle løpende rsync-prosesser som er i gang før du fortsetter en ny. Oppgaveplanleggeren ser ut til å lukke alle allerede kjørende forekomster automatisk, men for Linux må du være litt mer kreativ.

De fleste Linux-distribusjoner kan bruke kommandoen pkill, så vær sikker på at du legger til følgende i begynnelsen av rsync-skriptet ditt:

pkill -9 rsync

kryptering

Nei, vi er ikke ferdige ennå. Vi har endelig en fantastisk (og gratis!) Backup løsning på plass, men alle våre filer er fortsatt utsatt for tyveri. Forhåpentligvis sikkerhetskopierer du filene dine til et sted hundrevis av miles unna. Uansett hvor sikkert det fjerneste stedet er, kan tyveri og hacking alltid være problemer.

I våre eksempler har vi tunnelet alle våre rsync-trafikk gjennom SSH, så det betyr at alle våre filer er kryptert mens de er i transitt til bestemmelsesstedet. Vi må imidlertid sørge for at destinasjonen er like sikker. Husk at rsync kun krypterer dataene dine mens den overføres, men filene er åpne når de når deres mål.

En av rsyncs beste funksjoner er at den kun overfører endringene i hver fil. Hvis du har alle filene dine kryptert og gjør en mindre endring, må hele filen bli sendt på nytt som et resultat av kryptering, og randomiserer alle dataene etter en endring.

Av denne grunn er det best / enklest å bruke en type diskkryptering, for eksempel BitLocker for Windows eller dm-kryptering for Linux. På den måten er dataene dine beskyttet i tilfelle tyveri, men filer kan overføres med rsync, og kryptering vil ikke hindre ytelsen. Det finnes andre alternativer som fungerer på samme måte som rsync, eller implementerer noen form for det, for eksempel Duplicity, men de mangler noen av funksjonene som rsync har å tilby.

Etter at du har konfigurert stillbildesikkerhetskopiene dine på et eksternt sted og kryptert kilde- og destinasjons harddisker, gi deg selv et pat på baksiden for å mestre rsync og implementere den mest dårlige data backup-løsningen mulig.

Anbefalt: