Rsync-kommando i Linux med exempel

rsync är ett snabbt och mångsidigt kommandoradsverktyg för att synkronisera filer och kataloger mellan två platser via ett fjärrskal eller från/till en fjärr-Rsync-demon. Det ger snabb inkrementell filöverföring genom att endast överföra skillnaderna mellan källan och destinationen.

Rsync kan användas för spegling av data, inkrementella säkerhetskopior, kopiering av filer mellan system och som ersättning för scp, sftp och cpkommandon.

Denna artikel förklarar hur man använder rsync genom praktiska exempel och detaljerade förklaringar av de vanligaste rsync-alternativen.

Installation av Rsync #

Verktyget rsync är förinstallerat på de flesta Linux-distributioner och macOS. Om du inte har rsync installerat på ditt system kan du enkelt installera det med hjälp av din distributions pakethanterare.

Installera Rsync på Ubuntu och Debian #

sudo apt install rsync

Installera Rsync på CentOS och Fedora #

sudo yum install rsync

Rsync Command Syntax #

För att gå in på hur man använder rsync-kommandot börjar vi med att gå igenom den grundläggande syntaxen.

Värdighetsuttrycken rsync har följande form:

Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC... 
  • OPTION – Rsync-alternativen.
  • SRC – Källkatalogen.
  • DEST – Målkatalogen.
  • USER – Fjärranvändarnamn.
  • HOST – Fjärrvärdsnamn eller IP-adress.

rsync ger ett antal alternativ som styr hur kommandot beter sig. De mest använda alternativen är:

  • -a, --archive, arkivläge, motsvarar -rlptgoD. Detta alternativ talar om för rsync att synkronisera kataloger rekursivt, överföra special- och blockenheter, bevara symboliska länkar, modifieringstider, grupper, ägarskap och behörigheter.
  • -z, --compress. Det här alternativet tvingar rsync att komprimera data när de skickas till målmaskinen. Använd det här alternativet endast om anslutningen till fjärrmaskinen är långsam.
  • -P, motsvarar --partial --progress. När det här alternativet används visar rsync en förloppsindikator under överföringen och behåller de delvis överförda filerna. Det är användbart när du överför stora filer via långsamma eller instabila nätverksanslutningar.
  • --delete. När det här alternativet används tar rsync bort ovidkommande filer från destinationsplatsen. Det är användbart vid spegling.
  • -q, --quiet. Använd det här alternativet om du vill undertrycka meddelanden som inte är felmeddelanden.
  • -e. Med det här alternativet kan du välja ett annat fjärrskal. Som standard är rsync konfigurerad att använda ssh.

Basisk Rsync-användning #

Det mest grundläggande användningsfallet för rsync är att kopiera en enda fil från en till en annan lokal plats. Här är ett exempel:

rsync -a /opt/filename.zip /tmp/

Användaren som kör kommandot måste ha läsbehörighet på källplatsen och skrivbehörighet på destinationen.

Om du skickar filnamnet från destinationsplatsen kopierar du filen med det aktuella namnet. Om du vill spara filen under ett annat namn anger du det nya namnet på destinationsdelen:

rsync -a /opt/filename.zip /tmp/newfilename.zip

Den verkliga kraften i rsync kommer när du synkroniserar kataloger. Exemplet nedan visar hur du skapar en lokal säkerhetskopia av webbplatsfiler:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Om destinationskatalogen inte finns kommer rsync att skapa den.

Det är värt att nämna att rsync behandlar källkataloger med ett avslutande snedstreck (/) annorlunda. Om källkatalogen har ett avslutande snedstreck kopierar kommandot endast kataloginnehållet till målkatalogen. När det avslutande snedstrecket utelämnas kopierar rsync källkatalogen inuti målkatalogen.

Användning av rsync för att synkronisera data från/till en fjärrmaskin #

När du använder rsync för att överföra data på distans måste det installeras på både käll- och målmaskinen. De nya versionerna av rsync är konfigurerade för att använda SSH som standardfjärrskal.

I följande exempel överför vi en katalog från en lokal till en fjärrmaskin:

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Om du inte har ställt in en lösenordsfri SSH-loggningtill fjärrmaskinen kommer du att bli ombedd att ange användarens lösenord.

Om du vill överföra data från en fjärrmaskin till en lokal maskin använder du fjärrplatsen som källa:

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Om SSH på fjärrvärddatorn lyssnar på en annan port än standardporten 22 anger du porten med alternativet -e:

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Vid överföring av stora mängder data rekommenderas att köra kommandot rsync i en skärmsession eller att använda alternativet -P:

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Exkludera filer och kataloger #

Det finns två alternativ för att utesluta filer och kataloger. Det första alternativet är att använda argumentet --exclude och ange de filer och kataloger du vill utesluta på kommandoraden.

När du utesluter filer eller kataloger måste du använda deras relativa sökvägar till källplatsen.

I följande exempel visas hur man utesluter katalogerna node_modules och tmp:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

Det andra alternativet är att använda --exclude-from-alternativet och ange de filer och kataloger som du vill utesluta i en fil.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txt
node_modulestmp

Slutsats #

Vi har visat hur du använder Rsync för att kopiera och synkronisera filer och kataloger. Det finns mycket mer att lära om Rsync på Rsync User’s Manualpage.

Lämna ett svar

Din e-postadress kommer inte publiceras.