Hjemmeside » hvordan » Non-Beginners Guide til Synkroniseringsdata med Rsync

    Non-Beginners Guide til Synkroniseringsdata med Rsync

    Rsync-protokollen kan være ret enkel at bruge til almindelige backup / synkroniseringsjob, men nogle af de mere avancerede funktioner kan overraske dig. I denne artikel vil vi vise, hvorvidt de største data hammerere og backup entusiaster kan bruge rsync som en enkelt løsning til alle deres data redundans behov.

    Advarsel: Kun avancerede geeks

    Hvis du sidder der og tænker "Hvad er dåren, er rsync?" Eller "Jeg bruger kun rsync til virkelig enkle opgaver", kan du tjekke vores tidligere artikel om, hvordan du bruger rsync til at sikkerhedskopiere dine data på Linux, hvilket giver En introduktion til rsync, guider dig gennem installationen og viser sine mere grundlæggende funktioner. Når du har en fast forståelse af, hvordan du bruger rsync (ærligt, det er ikke så komplekst) og er komfortabel med en Linux-terminal, er du klar til at gå videre til denne avancerede vejledning.

    Kører rsync på Windows

    Lad os først få vores Windows-læsere på samme side som vores Linux-guruer. Selvom rsync er bygget til at køre på Unix-lignende systemer, er der ingen grund til, at du ikke bør kunne bruge det lige så nemt på Windows. Cygwin producerer et vidunderligt Linux API, som vi kan bruge til at køre rsync, så gå over til deres hjemmeside og hente 32-bit eller 64-bit version afhængigt af din computer.

    Installation er ligetil; Du kan beholde alle indstillinger til deres standardværdier, indtil du kommer til skærmbilledet "Vælg pakker".

    Nu skal du gøre de samme trin for Vim og SSH, men pakkerne vil se lidt anderledes ud, når du vælger dem, så her er nogle screenshots:

    Installation af Vim:

    Installation af SSH:

    Når du har valgt de tre pakker, skal du klikke på næste, indtil du er færdig med installationen. Derefter kan du åbne Cygwin ved at klikke på ikonet, som installationsprogrammet er placeret på dit skrivebord.

    rsync Kommandoer: Enkel til avanceret

    Nu hvor Windows-brugere er på samme side, lad os se på en simpel rsync-kommando og vise, hvordan brugen af ​​nogle avancerede switche hurtigt kan gøre det komplekst.

    Lad os sige, at du har en masse filer, der skal sikkerhedskopieres - hvem gør det ikke i disse dage? Du tilslutter din bærbare harddisk, så du kan sikkerhedskopiere dine computers filer og udstede følgende kommando:

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

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

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

    Ganske enkelt, og på det tidspunkt er der virkelig ingen grund til at bruge rsync, da du bare kunne trække og slippe filerne. Men hvis din anden harddisk allerede har nogle af filerne og kun har brug for de opdaterede versioner plus de filer, der er oprettet siden sidste synkronisering, er denne kommando praktisk, da den kun sender de nye data til harddisken. Med store filer, og især overførsel af filer via internettet, er det en big deal.

    Sikkerhedskopiering af dine filer til en ekstern harddisk og derefter at holde harddisken på samme sted som din computer er en meget dårlig ide. Så lad os se på, hvad det ville kræve for at sende dine filer via internettet til en anden computer ( en du har lejet, et familiemedlem mv).

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

    Ovennævnte kommando ville sende dine filer til en anden computer med en IP-adresse på 10.1.1.1. Det ville slette fremmede filer fra den destination, der ikke længere findes i kildemappen, udlæs filnavnet, der overføres, så du har en ide om, hvad der foregår, og tunnel rsync gennem SSH på port 12345.

    Det -a -v -e --delete switche er nogle af de mest grundlæggende og almindeligt anvendte; du bør allerede vide en god aftale om dem, hvis du læser denne vejledning. Lad os gå over nogle andre omskiftere, der undertiden ignoreres men utroligt nyttige:

    --fremskridt - Denne switch giver os mulighed for at se overførselsprogressen for hver fil. Det er især nyttigt, når du overfører store filer via internettet, men kan udgive en meningsløs mængde information, når du bare overfører små filer på tværs af et hurtigt netværk.

    En rsync kommando med --fremskridt skift som sikkerhedskopiering pågår:

    --delvis - Dette er en anden switch, der er særlig nyttig, når du overfører store filer via internettet. Hvis rsync afbrydes af en eller anden grund midt i en filoverførsel, bliver den delvist overførte fil gemt i destinationsmappen, og overførslen genoptages, hvor den blev slukket, når rsync-kommandoen blev udført igen. Når du overfører store filer via internettet (f.eks. Et par gigabyte), er der intet værre end at have et par sekunders internetforstyrrelser, blå skærm eller menneskelig fejl, og du skal starte din filoverførsel igen og nødt til at starte helt igen.

    -P - denne kontakt kombinerer --fremskridt og --delvis, så brug det i stedet, og det vil gøre din rsync-kommando lidt nyere.

    -z eller --komprimere - Denne switch vil gøre rsync komprimeringsfildata, som den overføres, hvilket reducerer mængden af ​​data, der skal sendes til destinationen. Det er faktisk en temmelig almindelig switch, men det er langt fra det væsentlige, og det giver dig virkelig god gavn for overførsler mellem langsomme forbindelser, og det gør ikke noget 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 --læsbar - Hvis du bruger --fremskridt switch, vil du helt sikkert også bruge denne. Det vil sige, medmindre du kan konvertere bytes til megabyte på farten. Det -h Omskifter konverterer alle udgitte numre til menneskeligt læseligt format, så du kan faktisk give mening om mængden af ​​data, der overføres.

    -n eller --tørt løb - Denne switch er afgørende for at vide, hvornår du først skriver dit rsync script og tester det ud. Det udfører en prøvekørsel, men ændrer sig ikke i virkeligheden - de ændringer, der stilles, udleveres som normalt, så du kan læse alt og sørge for, at det ser okay ud, før du ruller dit script til produktion.

    -R eller --i forhold - Denne switch skal bruges, hvis destinationsmappen ikke allerede eksisterer. Vi bruger denne mulighed senere i denne vejledning, så vi kan lave mapper på målmaskinen med tidsstempler i mappenavne.

    --udelukke-fra - Denne switch bruges til at linke til en ekskluderingsliste, der indeholder katalogveje, som du ikke vil sikkerhedskopiere. Det behøver bare en almindelig tekstfil med en mappe eller en filsti på hver linje.

    --omfatte-fra - Svarende til --udelukke-fra, men det linker til en fil, der indeholder mapper og filspor af data, du vil sikkerhedskopiere.

    --statistik - Ikke rigtig en vigtig switche på nogen måde, men hvis du er en sysadmin, kan det være praktisk at kende detaljerede statistikker for hver backup, så du kun kan overvåge mængden af ​​trafik, der sendes over dit netværk, og sådan.

    --logfil - Dette lader dig sende rsync-udgangen til en logfil. Vi anbefaler absolut dette til automatiserede sikkerhedskopier, hvor du ikke er der for at læse produktionen selv. Giv altid logfiler en gang til i din fritid for at sikre, at alt fungerer korrekt. Det er også en afgørende switch for en sysadmin at bruge, så du bliver ikke spurgt, hvordan dine backup fejlede, mens du forlod den praktikant, der var ansvarlig.

    Lad os tage et kig på vores rsync-kommando nu, da vi har fået nogle flere kontakter tilføjet:

    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 stadig ret simpel, men vi har stadig ikke skabt en anstændig backup-løsning. Selvom vores filer nu er på to forskellige fysiske steder, gør denne sikkerhed ikke noget for at beskytte os mod en af ​​hovedårsagerne til datatab: menneskelig fejl.

    Snapshot Backups

    Hvis du ved et uheld sletter en fil, ødelægger en virus nogen af ​​dine filer, eller hvis der sker noget andet, hvorved dine filer uønsket ændres, og så kører du dit rsync-backup script, dine sikkerhedskopierede data overskrives med de uønskede ændringer. Når sådan en ting opstår (ikke hvis, men hvornår), gjorde din backup-løsning ikke noget for at beskytte dig mod dit tab af data.

    Skaberen af ​​rsync realiserede dette og tilføjede --backup og --backup-dir argumenter, så brugerne kunne køre differentielle sikkerhedskopier. Det allerførste eksempel på rsyncs hjemmeside viser et script, hvor en fuld backup køres hver syv dage, hvorefter ændringerne til disse filer sikkerhedskopieres i separate mapper dagligt. Problemet med denne metode er, at for at genoprette dine filer, skal du effektivt genoprette dem syv forskellige tider. Desuden kører de fleste geeks flere gange om dagen, så du kan nemt have 20 + forskellige backup-mapper til enhver tid. Ikke kun er genoprettelsen af ​​dine filer nu en smerte, men selv ved at kigge igennem dine sikkerhedskopierede data kan det være ekstremt tidskrævende. Du skal vide sidste gang en fil blev ændret for at finde den seneste sikkerhedskopi. Ud over alt det er det ineffektivt at køre kun ugentligt (eller endnu mindre ofte i nogle tilfælde) inkrementelle backup.

    Snapshot backups til redning! Snapshot-sikkerhedskopier er intet mere end inkrementelle sikkerhedskopier, men de bruger hardlinks til at bevare filstrukturen i den oprindelige kilde. Det kan være svært at pakke hovedet rundt i starten, så lad os tage et kig på et eksempel.

    Lad os forestille os, at vi har et backup script, der automatisk sikkerhedskopierer vores data hver anden time. Når rsync gør dette, navngiver den hver backup i formatet: Backup-month-day-year-time.

    Så i slutningen en typisk dag ville vi have en liste over mapper i vores destinationsmappe som denne:

    Når du krydser nogen af ​​disse mapper, vil du se hver fil fra kildekataloget præcis som det var på det tidspunkt. Alligevel ville der ikke være dubletter på tværs af to mapper. rsync opnår dette ved hjælp af hardlinking gennem --link-dest = DIR argument.

    For at kunne have disse pænt og pænt daterede katalognavne, skal vi naturligvis opgradere vores rsync script. Lad os tage et kig på, hvad det ville tage for at udføre en backup løsning som denne, og så vil vi forklare scriptet mere detaljeret:

    #! / Bin / bash

    #copy old 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

    #gør logfilen

    echo ""> ~ / backup / rsync-hadate + "% F-% I% p" ". log

    #rsync kommando

    rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = ~ / backup / rsync-hadate + "% F-% I% p "'log.exclude-from' ~ / 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"' /

    # Glem ikke at scp logfilen og læg den med backupen

    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 tabte dig et eller andet sted, lad os dissekere det stykke for stykke:

    Den første linje i vores script kopierer indholdet af time.txt til time2.txt. Ja-røret er at bekræfte, at vi ønsker at overskrive filen. Dernæst tager vi den aktuelle tid og sætter den i time.txt. Disse filer vil komme til nytte senere.

    Den næste linje gør rsync logfilen, navngiv den rsync-date.log (hvor dato er den aktuelle dato og klokkeslæt).

    Nu, den komplekse rsync kommando, som vi har advart dig om:

    -avzhPR, -e, --delete, --stats, --log-file, --exclude-from, -link-dest - Bare de afbrydere vi snakkede om tidligere; rul op, hvis du har brug for en genopfriskning.

    --chmod = Du = rwx, DGO = rx, Fu = rw, Fgo = r - Dette er tilladelserne til destinationsmappen. Da vi laver denne mappe midt i vores rsync script, skal vi angive tilladelserne, så vores bruger kan skrive filer til den.

    Brugen af ​​dato og kat kommandoer

    Vi går over hver brug af datoen og kat kommandoer inde i rsync kommandoen i den rækkefølge, de forekommer. Bemærk: Vi er opmærksomme på, at der findes andre måder at opnå denne funktionalitet på, især ved brug af erklæringen af ​​variabler, men i denne vejledning har vi besluttet at bruge denne metode.

    Logfilen er angivet som:

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

    Alternativt kunne vi have angivet det som:

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

    Uanset hvad --logfil kommandoen skal kunne finde den tidligere oprettede daterede logfil og skrive til den.

    Linkdestinationsfilen er angivet som:

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

    Det betyder at --link-dest kommando er givet biblioteket for den tidligere backup. Hvis vi kører sikkerhedskopier hver anden time, og det er 16:00 på det tidspunkt, hvor vi kørte dette script, så --link-dest kommando leder efter biblioteket oprettet kl. 14:00 og overfører kun de data, der er ændret siden da (hvis nogen).

    At gentage, derfor er time.txt kopieret til time2.txt i begyndelsen af ​​scriptet, så --link-dest kommandoen kan referere til den tid senere.

    Destinationsmappen er angivet som:

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

    Denne kommando sætter simpelthen kildefilerne i en mappe, der har en titel på den aktuelle dato og klokkeslæt.

    Endelig sørger vi for, at en kopi af logfilen placeres i sikkerhedskopien.

    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 bruger sikker kopi på port 12345 for at tage rsync loggen og placere den i den rigtige mappe. For at vælge den korrekte logfil og sørg for at den ender på det rigtige sted, skal filen time.txt refereres via kat-kommandoen. Hvis du spekulerer på, hvorfor vi besluttede at katte time.txt i stedet for bare at bruge datakommandoen, skyldes det, at meget tid kunne være opstået, mens rsync-kommandoen kørte, så for at sikre, at vi har det rigtige tidspunkt, vi bare kat det tekstdokument, vi oprettede tidligere.

    Automatisering

    Brug Cron på Linux eller Task Scheduler på Windows til at automatisere dit rsync script. En ting du skal være forsigtig med, er at sørge for, at du afslutter alle løbende rsync-processer, før du fortsætter en ny. Task Scheduler synes at lukke alle allerede kørende forekomster automatisk, men for Linux skal du være lidt mere kreativ.

    De fleste Linux-distributioner kan bruge kommandoen pkill, så vær sikker på at tilføje følgende til begyndelsen af ​​dit rsync script:

    pkill -9 rsync

    Kryptering

    Nej, vi er ikke færdige endnu. Vi har endelig en fantastisk (og gratis!) Backup løsning på plads, men alle vores filer er stadig modtagelige for tyveri. Forhåbentlig kan du sikkerhedskopiere dine filer til et eller andet sted hundredvis af kilometer væk. Uanset hvor sikkert det fjerneste sted er, kan tyveri og hacking altid være problemer.

    I vores eksempler har vi tunnelet alle vores rsync-trafik gennem SSH, så det betyder, at alle vores filer krypteres under transit til deres destination. Men vi skal sørge for, at destinationen er lige så sikker. Husk, at rsync kun krypterer dine data, som det overføres, men filerne er åbne, når de når deres destination.

    En af rsyncs bedste funktioner er, at den kun overfører ændringerne i hver fil. Hvis du har alle dine filer krypteret og gør en mindre ændring, skal hele filen blive videresendt som følge af krypteringen, fuldstændig randomisering af alle data efter enhver ændring.

    Af denne grund er det bedst / nemmest at bruge en form for diskkryptering, såsom BitLocker til Windows eller dm-crypt for Linux. På den måde beskyttes dine data i tilfælde af tyveri, men filer kan overføres med rsync, og din kryptering forhindrer ikke dets ydeevne. Der findes andre muligheder, der fungerer på samme måde som rsync eller endda implementerer en form for det, såsom Duplicity, men de mangler nogle af de funktioner, som rsync har at tilbyde.

    Når du har konfigureret dine stillbilleder på en offsite placering og krypteret dine kilder og destination harddiske, giv dig selv et pat på bagsiden for at mestre rsync og implementere den mest dumme sikkerhedskopiering af data backup mulig.