Som namnet antyder är rsync ett synkroniseringsverktyg. Första gången du använder den, kopierar den bara filer och kataloger från en plats till en annan. Senare användning synkroniserar dock bara skillnaderna mellan dessa platser. Så om du lägger till en fil i källkatalogen kommer rsync bara att kopiera den nya filen till destinationen. Detta sparar mycket tid och bandbredd, särskilt när du kopierar till en avlägsen plats.
Tänk dig att du har 50 GB data som du måste synkronisera med en fjärrserver. Du kan schemalägga att rsync ska köras dagligen. Istället för att behöva kopiera hela 50 GB om och om igen skickar verktyget bara skillnaderna. Det kan betyda att det bara behöver ladda upp några megabyte data varje dag istället för gigabyte.
I bilden ovan kan du se hur första gången 104MB överfördes, medan endast 31KB krävdes under den andra användningen.
Så här installerar du rsync på olika Linux-distributioner
På Debian- och Debian-baserade distributioner, som Ubuntu, kan du installera rsync med:
sudo apt install rsync
På Fedora installerar du med:
dnf install rsync
Och på distributioner härledda från RedHat (t.ex. CentOS):
yum install rsync
För att installera rsync på Arch Linux, använd kommandot:
pacman -S rsync
På openSUSE, använd:
zypper install rsync
Om det inte ingår i dina standardförvar, se openSUSE rsync installationssida.
Hur man använder rsync för att synkronisera lokala filer eller kataloger
Den allmänna syntaxen för rsync är: rsync [options] /path/to/source /path/to/destination
.
[options]
står för kommandoradsalternativ som du hittar i manualen:
man rsync
Tryck q för att avsluta manualen.
Så här kopierar du en fil:
rsync /bin/ls .
Kommandot ovan motsvarar rsync /bin/ls /home/your_username
. Detta kopierar kommandot “ls” till den katalog du befinner dig i. Som standard bör detta vara /home/your_username
. Pricken .
står för aktuell katalog. Vägnamn kan vara absoluta (/home/your_username/Downloads/chrome.zip
) eller i förhållande till din nuvarande katalog (Downloads/chrome.zip
).
När du hanterar mycket stora filer kan du använda det här kommandot:
rsync -P /path/to/file /path/to/destination
Detta visar framsteg och låter dig återuppta en avbruten överföring. Om du behöver återuppta, använd:
rsync -P --append path/to/file /path/to/destination
Utan --append
skulle överföringen börja från grunden.
Så här synkroniserar du kataloger:
rsync -av /path/to/source /path/to/destination
Exempel på kommando:
rsync -av /bin .
Effekt av Trailing Slash i rsync (viktigt)
Observera i föregående kommando att sökvägen till källkatalogen inte innehåller en efterföljande snedstreck /
(/bin
mot /bin/
). Utan efterföljande snedstreck kopierar rsync själva katalogen. Så rsync -av /bin .
resulterar i vad som visas i följande bild.
När en efterföljande snedstreck används kopierar rsync innehållet i den katalogen. I detta fall varje fil i /bin
skulle spridas runt i målkatalogen. Så rsync -av /bin/ .
skulle resultera i vad som visas i följande bild.
Det är väldigt viktigt att komma ihåg denna skillnad, eftersom användning av TAB för att automatiskt komplettera katalognamn automatiskt lägger till en efterföljande snedstreck i slutet. Så kom ihåg det för att undvika att skapa en röra i målkatalogen.
Hur man använder rsync för att synkronisera med fjärrplatser (t.ex. servrar)
Det som beskrivs i föregående avsnitt gäller när man arbetar med avlägsna platser. Den enda skillnaden är att du måste förbereda inloggningsanvändarnamnet och adressen till fjärrplatsen. Att skicka din /bin
katalog till en fjärrdator, använd:
rsync -av /bin your_username@203.0.113.10:/home/your_username
rsync ansluter via OpenSSH. Det betyder att du måste ställa in OpenSSH-servern och inloggningsuppgifter på fjärrmålet i förväg. Anteckna det your_username
refererar till användarnamnet som skapats på servern. Detta kan skilja sig från användarnamnet du har på din lokala maskin.
Om du äger ett domännamn och riktar det till din server-IP kan du använda domänen i kommandot:
rsync -av /bin your_username@example.com:/home/your_username
Vid stora överföringar är det användbart att också komprimera data innan du skickar det genom kabeln genom att lägga till -z
parameter:
rsync -avz /bin your_username@example.com:/home/your_username
Du kan utelämna komprimeringsparametern när du skickar filer som redan är komprimerade (ljudfiler som MP3, videor, JPEG-bilder). De kan inte komprimeras ytterligare, så du skulle faktiskt slösa bort tid genom att använda -z
på dessa.
För att kopiera filer från fjärrdestinationen till din lokala dator, gör bara omvända platser:
rsync -avz your_username@example.com:/bin /home/your_username
Slutsats
Detta täcker de viktigaste rsync-kommandona du behöver veta. Om du någonsin behöver mer kontroll över hur du synkroniserar kataloger, kontakta online rsync-manual och bläddra några sidor nedåt tills du hittar ”Sammanfattning av alternativ.”