Hvordan Backup Files i Linux Med Rsync på kommando Line


En av fordelene med den digitale verden, i forhold til den fysiske verden er at du kan beskytte noen av dine verdisaker »fra permanent tap. Jeg vet venner som har mistet alle sine fotografier, bøker og dokumenter i branner eller flom. Jeg skulle ønske de hadde digitale versjoner av de tingene som vi kunne ha reddet. Det tar bare ett klikk å lage en kopi av dine data og du kan bære terabyte med data på en harddisk mindre enn lommeboken.
Hvorfor ikke sky?
Mens arbeidet med denne historien jeg intervjuet mange brukere å forstå deres data-backup planer og jeg oppdaget noen brukte offentlig sky som sitt primære backup.
Jeg vil ikke bruke offentlige eller tredjepart sky som den primære backup av mine data for ulike grunner. Først av alt, jeg har over 3 terabyte (TB) med data, og det ville være svært dyrt for meg å kjøpe 3 TB sky lagring. Jeg måtte betale over $ 120 per år for 1 TB med data eller $ 100 per måned for 10TB på Google Drive. Kostnaden er ikke den eneste avskrekkende; Jeg vil også konsumere store mengder båndbredde for å få tilgang til data som kan heve øyenbrynene fra min ISP.
Den største faren er at så når du slutter å betale, du mister dataene dine. Det er ikke det eneste problemet med offentlig sky, det øyeblikket du begynner å bruke slike tjenester dataene blir underlagt en rekke lover og kan nås av offentlige organer uten din viten. Tjenesteleverandørens gevinster kontroll over informasjonen og kan låse deg ut av dine egne data for en rekke årsaker -. Mest kjent noen tvetydige brudd på opphavsrett
Privat sky som ownCloud eller Seafile kan være et alternativ, men nok en gang, siden dataene igjen din nettverk det er utsatt til resten av verden, og som vanlig, vil det medføre mye bruk av båndbredde og lagringskostnader.
jeg bruker privat sky, men det er mest for data som jeg ønsker tilgjengelig utenfor det lokale nettverket eller som er deles med andre. Jeg bruker aldri den som back-up.
Hold ro og gå lokale
jeg kan kjøpe en 4TB NAS harddisk for under $ 160 og som vil vare meg 3 til 4 år. Jeg trenger ikke å bekymre deg for å betale båndbredde for å få tilgang til mine egne data eller frykt for å bli låst ute.
Nå når jeg har bestemt meg for å holde mine data lokalt og under min kontroll blir det stadig viktigere å sikre at jeg ikke vil miste en byte av den. Det første jeg gjør er å ta sikkerhetskopi av filene mine og konfigurere mine systemer for å ta regelmessige sikkerhetskopier automatisk
Det er mange grafiske verktøy.; noen kommer forhåndsinstallert på mange distroer, men siden jeg kjører en hodeløs filserver jeg bruke kommandolinjeverktøy og det er det jeg kommer til å snakke om i denne artikkelen.
Jeg pleier også å holde ting så enkelt som mulig, slik at verktøyet Jeg bruker for min back-up er "rsync '.
Hva er rsync
Rsync står for fjernsynkronisering som ble skrevet av Andrew Tridgell og Paul Mackerras tilbake i 1996. Det er en av de mest brukte" verktøy "i UNIX verden og nesten en standard for synkronisering av data. De fleste Linux-distribusjoner har rsync forhåndsinstallert, men hvis den ikke er der kan du installere den "rsync 'pakke for din distribusjon.
Rsync er en ekstremt kraftig verktøy, og gjør mer enn bare å lage kopier av dine filer på systemet ditt. Du kan bruke den til å synkronisere filer på to kataloger på samme PC; du kan synkronisere kataloger på to forskjellige systemer på samme nettverk; eller synkroniserings kataloger bosatt på maskiner tusenvis av miles fra hverandre, over Internett.
funksjonaliteten rsync kan utvides ved hjelp av forskjellige "alternativer", som vi vil snakke om snart.
grunnleggende syntaks av rsync er

 rsync alternativ kilde-katalogen destinasjon-directoryLet oss anta at du har en katalog /media /HDD1 /data-en på harddisk 1 og du ønsker å lage en kopi av den på en ny harddisk som er montert på /media /HDD2. 
følgende kommando vil lage katalogen data-en på den andre harddisken kan kopiere innholdet av katalogen til målet:
 rsync -r /media /HDD1 /data-1 /media /HDD2 /Alternativet "-r" sørger for at det er rekursive, og vil også synkronisere alle kataloger 
Men når katalogen data-en er opprettet på HDD2 så kan du begynne å synkronisere innholdet i de to kataloger.
 rsync -r /media /HDD1 /data-1 //media /HDD2 /data-1 /Ikke glem bakover skråstrek på slutten ellers rsync vil opprette en ny katalog inne målkatalogen. 
Alternativt kan du opprette en ny katalog på destinasjonen og deretter synkronisere den med kilde. La oss anta at du opprettet en katalog data-2 på den andre harddisken og ønsker å synkronisere de to uten forvirring:
 rsync -r /media /HDD1 /data-1 //media /HDD2 /data-2 /Denne kommandoen vil bare gjøre en nøyaktig kopi av filene dine i data-en katalog inne i data-to-katalogen. 
Hva om du har symlinker av ulike tillatelser av fil eierskap og du ønsker å bevare dem? Bare bruk "-A" alternativ, og det vil bevare dato, eierskap, tillatelser, grupper, etc. av filene.
Nå har du to sett med kataloger synkronisert med hverandre. Det er en sjanse for at du kan slette noen filer eller mapper fra kilden; Jeg gjør det hele tiden. Hvordan sikrer vi at de blir slettet fra destinasjonen også? Du må bruke '--delete alternativet som vil ta vare på slike saker.Ferie kommando blir:
 rsync -a --delete /media /HDD1 /data-1 //media /HDD2 /data -2 /Hvis du ønsker å se fremgangen av filer i terminalen, legge til 'v' alternativ til det: 
 rsync -av --delete /media /HDD1 /data-1 //media /HDD2 /data-2 /Det er også lurt å komprimere filer for overføring, så det sparer båndbredde over nettverket, noe som resulterer i raskere overføring. Du bør gjøre det hvis enhetene har tregere overføring. Muligheten til å bruke er "-z". 
 rsync -avz --delete /media /HDD1 /data-1 //media /HDD2 /data-2 /Du kan også kaste i "-P" alternativet som er for delvis fremgang. 
 rsync -avzP --delete /media /HDD1 /data-1 //media /HDD2 /data-2 /Arbeid på nettverk maskiner 
Som jeg skrev i en artikkel tidligere Jeg driver en lokal filserver hjemme og montere den på alle mine enheter for å få tilgang til filene mine. Jeg har aldri lagre data på min lokale maskin; Jeg har alltid jobbe med filer som er lagret på den primære harddisken på serveren. På den måten filene mine er alltid up-to-date, og jeg kan plukke dem fra hvilken som helst maskin og fortsette å; du trenger ikke å kopiere fra en maskin til en annen.
jeg ikke montere den andre, eller back-up harddisk. Montere den og jobber med filer som er lagret på denne harddisken vil komplisere ting fordi når jeg kjører rsync-kommandoen vil det overskrive endringer fra den primære harddisken. Selv rsync har et triks (eller alternativ) opp ermene for å løse slike problemer. Du kan bruke 'u' alternativet som vil tvinge rsync å hoppe over filer som har endringsdato senere enn kildefilen.
Hvordan synkronisere kataloger over nettverket
Det er der ssh protokollen kommer inn i bildet. Jeg bruker følgende syntaks for å synkronisere en ekstern katalog med en lokal katalog:
 rsync -avzP --delete -e ssh bruker @ server_IP: source-katalogen /destination_directory_on_local_machine /Eksempel: 
 rsync - avzP --delete -e ssh Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se den: /home /Swapnil /backup //media /intern /local_backup /vil synkronisere en lokal katalog med en ekstern katalog syntaksen blir: 
 rsync -avzP --delete -e ssh source_directory bruker @ server_IP: path_destination_directoryExample: 
 rsync -avzP --delete -e ssh /home /Swapnil /Downloads /Denne e-postadressen er beskyttet mot programmer som samler. Du må aktivere Javascript for å kunne se den: /home /Swapnil /Downloads /Automat backup 
Det kan være lurt å automatisere backup, slik at du ikke trenger å legge den til i kalenderen. Det vil faktisk være enklere å automatisere backup deretter opprette en kalenderoppføring.
Jeg pleier å holde ting enkelt og lett, så jeg kan vise nye brukere hvor enkelt det er å gjøre slike ting under Linux. Løsningen som jeg bruker for automatisering er "crontab". Det er enkelt, lett og gjør jobben godt. Med Crontab jeg kan konfigurere når jeg ønsker å kjøre rsync-kommandoen: daglig, ukentlig, månedlig, eller mer enn en gang om dagen (som jeg ikke vil gjøre). Jeg har konfigurert min å kjøre på 11:30 hver dag etter jobb slik at alle filene som jeg jobbet med i løpet av dagen blir synkronisert.
Avhengig av distro du må installere en pakke for å få crontab på systemet . Hvis du er på Arch Linux, for eksempel, kan du installere 'cronie'. Du kan velge standard editor for crontab; Jeg foretrekker nano. Kjør denne kommandoen og erstatte "nano" med ønsket editor.
 eksport EDITOR = nanoNow run 'crontab -e "for å opprette cron jobber. Det vil åpne en tom fil hvor du kan konfigurere kommandoen du ønsker å kjøre på et ønsket tidspunkt. (Se bilde ovenfor.) 
Formatet crontab er enkel; den har fem felt etterfulgt av kommandoen:
 mh dm m dw commandHere m står for minutter (0-59); h for time (0-23); dm for dag i måneden (1-31); m for måned (1-12); og dw for dag i uken (0-6 der 0 er søndag). Formatet er numerisk, og du må bruke '*' å rose de feltene som du ikke ønsker å bruke. 
Jeg kjører kommandoen hver dag klokken 11.30, så formatet vil være
 30 23 * * * rsync -av --delete /media /HDD1 /data-1 //media /HDD2 /data-2 /Hvis du ønsker å kjøre rsync bare en gang i måneden så kan du gjøre noe sånt som dette: 
 30 23 1 * * rsync -av --delete /media /HDD1 /data-1 //media /HDD2 /data-2 /Nå skal det kjøres på 11:30 på 1. i hver måned. Hvis du ikke vil at den skal kjøre hver måned enn du kan konfigurere den til å kjøre hvert halvår: 
 30 23 1 6 * rsync -av --delete /media /HDD1 /data-1 //media /HDD2 /data-2 /Det vil gjøre det kjøres hvert år den 1. juni Hvis du ønsker å kjøre mer enn én kommando, og deretter opprette en ny linje for hver kommando. Rsync er ikke den eneste kommandoen du kan automatisere med "crontab" du kan kjøre "noen" kommandoen bruke den 
Som du kan se begge verktøy -. Rsync og crontab - er svært enkel og lett, men likevel ekstremt kraftig og svært konfigurerbar. Linux trenger ikke å å komplisert!
Hold en kopi eksternt
En risiko for å holde alle dine data på lokale maskiner er at i tilfelle av en naturkatastrofe, brann eller flom, vil din lokale systemet bli skadet, og du vil miste dine data. Det anbefales å holde en annen kopi av dine data på en maskin som ligger et annet sted. Jeg har en server på min svigerfamilie 'sted; Jeg kaller det "Server In Law".
Den dårlige nyheten er ISPer tillater ikke statisk IP og kan blokkere videre porter, så det er ikke mulig å ssh mellom to maskiner og synkronisering av data. Det er der Teamviewer og SSH Tunnel kommer inn i bildet. Jeg logger inn på min server i lov åpner en midlertidig ssh tunnel og deretter rsync filene.
Siden disse er GUI-baserte verktøy de er utenfor rammen av denne cli fokusert artikkelen. Jeg kan dekke det i fremtiden.
Venner med backup er venner faktisk
Mine venner har opprettet en pool av backup servere hvor de vert hverandres harddisker på sin plass og holde hverandres data fordelt. Hvis det er noen ekstremt private filer du ikke vil at vennene dine ser, kan du alltid kryptere dem. Anmeldelser