27Jun

Så här använder du rsync för att säkerhetskopiera dina data på Linux

baner

rsync är ett protokoll byggt för Unix-liknande system som ger otroligt mångsidighet för säkerhetskopiering och synkronisering av data. Den kan användas lokalt för att säkerhetskopiera filer till olika kataloger eller kan konfigureras att synkronisera över Internet till andra värdar.

Den kan användas på Windows-system men är endast tillgänglig via olika portar( som Cygwin), så i det här fallet kommer vi att prata om att installera den på Linux. Först måste vi installera / uppdatera rsync-klienten. På Red Hat-distributioner är kommandot "yum install rsync" och på Debian är det "sudo apt-get install rsync".

rsync1
Kommandot på Red Hat / CentOS, efter att ha loggat in som root( observera att några nyligen distribuerade Red Hatstödja sudo-metoden).

rsync4
Kommandot på Debian / Ubuntu.

Använda rsync för lokala säkerhetskopior

I den första delen av den här handledningen kommer vi att säkerhetskopiera filerna från Directory1 till Directory2.Båda dessa kataloger finns på samma hårddisk, men det skulle fungera exakt samma om katalogerna fanns på två olika enheter. Det finns flera olika sätt att närma oss detta, beroende på vilken typ av säkerhetskopior du vill konfigurera. För de flesta ändamål är följande kodföljd tillräcklig:

$ rsync -av --delete /Directory1/ /Directory2/

Koden ovan kommer att synkronisera innehållet i Directory1 till Directory2 och lämna inga skillnader mellan de två.Om rsync finner att Directory2 har en fil som Directory1 inte, kommer den att radera den. Om rsync hittar en fil som har ändrats, skapats eller raderats i Directory1, kommer den att återspegla samma ändringar i Directory2.

Det finns många olika omkopplare som du kan använda för rsync att anpassa den till dina specifika behov. Här är vad den förutnämnda koden berättar för rsync att göra med säkerhetskopiorna:

1. -a = rekursiv( recurse to directories), länkar( kopiera symbänkar som symlinks), perms( bevara behörigheter), gånger( bevara ändringar gånger), gruppbevara grupp), ägare( bevara ägaren), bevara enhetsfiler och bevara specialfiler.
2. -v = verbose. Anledningen till att jag tror att det är viktigt är att du kan se exakt vad rsync säkerhetskopierar. Tänk på det här: Vad händer om hårddisken är dålig och börjar ta bort filer utan din vetskap, då kör du ditt rsync-skript och det trycker på dessa ändringar i dina säkerhetskopior och därmed raderar alla instanser av en fil som du inte vill fåbli av?
3. -delete = Detta berättar att rsync tar bort alla filer som finns i Directory2 som inte finns i Directory1.Om du väljer att använda det här alternativet rekommenderar jag även att använda de övergripande alternativen, av ovanstående skäl.

Använda skriptet ovan, här är den produktion som genereras genom att använda rsync för att säkerhetskopiera Directory1 till Directory2.Observera att du inte skulle få sådan detaljerad information utan den verbose switchen.

rsync2

Skärmbilden ovan berättar att File1.txt och File2.jpg upptäcktes som antingen nya eller på annat sätt ändrade från kopiorna som finns i Directory2, och så var de säkerhetskopierade. Noob tips: Observera de efterföljande snedstreck i slutet av katalogerna i mitt rsync-kommando - det är nödvändigt, var noga med att komma ihåg dem.

Vi kommer att gå över några fler praktiska växlar mot slutet av denna handledning, men kom ihåg att för att se en fullständig lista kan du skriva "man rsync" och se en komplett lista över växlar som ska användas.

Det gäller om det gäller lokala säkerhetskopieringar. Som du kan berätta är rsync väldigt lätt att använda. Det blir lite mer komplext när du använder det för att synkronisera data med en extern värd via Internet, men vi visar dig ett enkelt, snabbt och säkert sätt att göra det.

Användning av rsync för externa säkerhetskopior

rsync kan konfigureras på flera olika sätt för externa säkerhetskopieringar, men vi kommer att gå över den mest praktiska( även den enklaste och säkraste) metoden för tunneling rsync via SSH.De flesta servrar och till och med många kunder har redan SSH, och det kan användas för dina rsync-säkerhetskopior. Vi visar dig processen att få en Linux-maskin för att säkerhetskopiera till en annan på ett lokalt nätverk. Processen skulle vara exakt densamma om en värd var ute på internet någonstans, bara notera att port 22( eller vilken port du har SSH konfigurerad på), skulle behöva vidarebefordras på vilken nätverksutrustning som helst på serverns sida.

Kontrollera att SSH och rsync är installerade på servern( datorn som ska ta emot säkerhetskopiorna).

# yum -y installera ssh rsync

# sudo apt-get installera ssh rsync

Annat än att installera SSH och rsync på servern är allt som verkligen behöver göras att installera förvaret på servern där du vill att filerna ska stödjasupp och se till att SSH är låst. Se till att användaren du planerar att använda har ett komplext lösenord, och det kan också vara en bra idé att byta porten som SSH lyssnar på( standard är 22).

Vi kör samma kommando som vi gjorde för att använda rsync på en lokal dator, men innehåller nödvändiga tillägg för tunneling rsync via SSH till en server på mitt lokala nätverk. För användare "geek" som ansluter till "192.168.235.137" och använder samma omkopplare som ovan( -av-delete) kör vi följande:

$ rsync -av -delete -e ssh /Directory1/ [email protected]: /Directory2/

Omdu har SSH-lyssning på någon annan port än 22, du måste ange portnummer, som i det här exemplet där jag använder port 12345:

$ rsync -av -delete -e 'ssh -p 12345' /Directory1/ [email protected]: /Directory2/

rsync3

Som du kan se från skärmdumpen ovan är utmatningen som ges när du säkerhetskopierar över nätverket ungefär samma som när du säkerhetskopierar lokalt är det enda som ändras det kommando du använder. Observera också att det bad om ett lösenord. Detta är att verifiera med SSH.Du kan ställa in RSA-tangenter för att hoppa över den här processen, vilket också kommer att förenkla automatiseringen av rsync.

Automatisera rsync-säkerhetskopior

Cron kan användas på Linux för att automatisera körning av kommandon, till exempel rsync. Med Cron kan vi få vårt Linux-system köra nattliga säkerhetskopior, eller hur ofta du vill att de ska springa.

För att redigera cron tabellfilen för användaren är du inloggad som, kör:

$ crontab -e

Du måste känna till vi för att redigera den här filen. Skriv "I" för att infoga, och börja sedan redigera cron tabellfilen.

Cron använder följande syntax: minut av timmen, timmen på dagen, månadens dag, månad på året, veckodag, kommando.

Det kan vara lite förvirrande först, så låt mig ge dig ett exempel. Följande kommando kommer att köra kommandot rsync varje kväll klockan 10:

0 22 * ​​* * rsync -av --delete /Directory1/ /Directory2/

Den första "0" anger minutens minut och "22" anger 10 PM.Eftersom vi vill att detta kommando ska köra dagligen lämnar vi resten av fälten med asterisker och klistrar sedan in rsync-kommandot.

När du är klar med att konfigurera Cron trycker du på escape och skriver sedan "wq"( utan citat) och trycker på enter. Detta sparar dina ändringar i vi.

Cron kan få mycket mer djupgående än detta, men att fortsätta om det skulle vara bortom omfattningen av denna handledning. De flesta vill bara ha en enkel veckovis eller daglig backup, och det vi har visat kan du enkelt uppnå.För mer information om Cron, se manens sidor.

Andra användbara funktioner

En annan användbar sak som du kan göra är att sätta dina säkerhetskopior i en zip-fil. Du måste ange var du vill att zip-filen ska placeras och sedan rsync den katalogen till din säkerhetskatalog. Till exempel:

$ zip /ZippedFiles/ arkiv.zip /Directory1/ &rsync -av --delete /ZippedFiles/ /Directory2/

rsync5

Kommandot ovan tar filerna från Directory1, lägger dem i /ZippedFiles/ archive.zip och sedan rsyncs som katalog till Directory2.Ursprungligen kan du tro att den här metoden skulle visa sig ineffektiv för stora säkerhetskopior, eftersom zip-filen kommer att ändras varje gång den minsta ändringen görs i en fil. Rsync överför dock bara de ändrade data, så om din zip-fil är 10 GB och sedan lägger du till en textfil i Directory1 kommer rsync att veta att allt du har lagt till( även om det finns en zip) och bara överföra de få kilobytenav ändrade data.

Det finns ett par olika sätt att kryptera dina rsync-säkerhetskopior. Den enklaste metoden är att installera kryptering på själva hårddisken( den som dina filer säkerhetskopieras till).Ett annat sätt är att kryptera dina filer innan de skickas till en fjärrserver( eller annan hårddisk, oavsett vad du råkar vara säkerhetskopiering till).Vi täcker dessa metoder i senare artiklar.

Oavsett vilka alternativ och funktioner du väljer, visar rsync att det är ett av de mest effektiva och mångsidiga backupverktygen hittills, och till och med ett enkelt rsync-skript kan spara dig från att förlora dina data.