Hjemmeside » hvordan » Den ikke-nybegynners guide til å synkronisere data med Rsync

    Den ikke-nybegynners guide til å synkronisere data med Rsync

    Rsync-protokollen kan være ganske enkel å bruke for vanlige sikkerhetskopierings- / synkroniseringsjobber, men noen av de mer avanserte funksjonene kan overraske deg. I denne artikkelen skal vi vise hvordan selv de største datahullerne og backupentusiasterne 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 som heter rsync?" Eller "Jeg bruker bare rsync for veldig enkle oppgaver," vil du kanskje sjekke ut vår tidligere 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 den like mye på Windows. Cygwin produserer et 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 din.

    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 ut når du velger å velge dem, så her er noen skjermbilder:

    Installere Vim:

    Installere SSH:

    Når du har valgt de tre pakkene, må du 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 det ikke i disse dager? Du plugger inn den bærbare harddisken din, slik at du kan sikkerhetskopiere datamaskinens filer, og utsted følgende kommando:

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

    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 kunne 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.

    Sikkerhetskopiere 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' / hjem / geek / filer / [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:

    --framgang - 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 --framgang bytt som sikkerhetskopiering pågår:

    --delvis - 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 over internett (for eksempel et par gigabyte), er det ikke noe verre enn å ha noen få sekunder internettbrudd, blå skjerm eller menneskelig feil, oppreise filoverføringen og måtte starte om igjen.

    -P - denne bryteren kombinerer --framgang og --delvis, så bruk den i stedet, og det vil gjøre din rsync-kommando litt nyere.

    -z eller --komprimere - 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 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 --lesbar - Hvis du bruker --framgang 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 --tørrkjøring - Denne bryteren er viktig å vite når du først skriver rsync-skriptet ditt og tester det ut. Det utfører en prøvekjøring, men gjør egentlig ikke noen endringer - det vil ikke bli 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 --slektning - 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.

    --utelukke-fra - 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.

    --omfatte fra- - Lik --utelukke-fra, men det kobler til en fil som inneholder kataloger og filbaner med data du vil sikkerhetskopiere.

    --statistikk - 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.

    --loggfil - 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 avgjørende bryter for at en sysadmin skal brukes, slik at du ikke blir lurt 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-skriptet, 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 for å 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 kun 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 backup i formatet: Backup-måned-dag-år-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 hver fil 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 deretter vil vi forklare manuset mer detaljert:

    #! / Bin / bash

    #kopig gammel time.txt til time2.txt

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

    #overskrive gammel time.txt-fil med ny tid

    ekko-dato + "% F-% I% p" '> ~ / backup / time.txt

    # Lag loggfilen

    ekko ""> ~ / backup / rsync-hadate + "% F-% I% p" '. logg

    #rsync kommando

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

    # Ikke glem å scp loggfilen og sett den med 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

    Det ville være et typisk snapshot 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 katt kommandoer

    Vi skal gå over hver bruk av dato og kattkommandoer inne i 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 veiledningens mål har vi bestemt oss for å bruke denne metoden.

    Logfilen er spesifisert som:

    ~ / backup / rsync-hadate + "% F-% I% p" '. logg

    Alternativt kan vi ha spesifisert det som:

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

    Uansett, den --loggfil 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 kun 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 rett tid, vi bare katt tekstdokumentet vi opprettet tidligere.

    Automasjon

    Bruk Cron på Linux eller Oppgaveplanlegger på Windows for å automatisere ditt rsync script. En ting du må være forsiktig med, er å sørge for at du avslutter eventuelle løpende rsync prosesser 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-scriptet 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 noen steder 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-trafikker gjennom SSH, så det betyr at alle våre filer er kryptert mens de er i transitt til bestemmelsesstedet. Men vi må sørge for at destinasjonen er like sikker. Husk at rsync kun krypterer dataene dine når den overføres, men filene er åpne når de når deres destinasjon.

    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, helt randomisering av alle dataene etter 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 til og med implementere 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 idiotsikkere data backup-løsningen mulig.