rsync je skraćenica od remote sync. rsync se koristi kao backup operacija u Linux/Unix sistemima. rsync se koristi za sinhronizaciju datoteka i direktorijuma sa jedne lokacije na drugu. Backup lokacija može da se nalazi i na lokalnom i na udaljenom serveru.
Važne osobine rsync-a:
Sintaksa
$ rsync options source destination
Source i destination mogu da budu i na lokalnom i na udaljenom računaru. U slučaju da je udaljeni, treba uneti login podatke, ime udaljenog računara (ili IP adresa) i lokaciju.
Primer 1. Sinhronizacija dva direktorijuma na lokalnom serveru
Za sinhronizaciju dva direktorijuma na lokalnom serveru koristi se sledeća komanda: rsync -zvr
$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list ... done
sva.xml
svB.xml
.
sent 26385 bytes received 1098 bytes 54966.00 bytes/sec
total size is 44867 speedup is 1.63
$
U gornjem primeru: -z omogućuje kompresiju, -v verbose, -r je recursive. U ovom slučaju rsync nije sačuvao timestamp prilikom sinhronizacije.
Primer 2. Sačuvati timestamps prilikom sinhronizacije koristeći rsync -a
Opcija -a pokreće archive mode. Opcija -a radi sledeće:
Komanda je istao kao u prvom primeru, sa dodatkom -a opcije:
$ rsync -azv /var/opt/installation/inventory/ /root/temp/
building file list ... done
./
sva.xml
svB.xml
.
sent 26499 bytes received 1104 bytes 55206.00 bytes/sec
total size is 44867 speedup is 1.63
$
Primer 3. Sinhronizacija samo jedne datoteke
rsync dozvoljava i samo jednog fajla što je pokazano u primeru ispod:
$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeys
sent 42 bytes received 12380 bytes 3549.14 bytes/sec
total size is 12288 speedup is 0.99
Primer 4. Sinhronizacija datoteka sa lokalnog na udaljeni server
rsync omogućuje sinhronizaciju datoteka i direktorijuma između lokalnog i udaljenog sistema.
$ rsync -avz /root/temp/ [email protected]:/home/bojan/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname
sent 15810261 bytes received 412 bytes 2432411.23 bytes/sec
total size is 45305958 speedup is 2.87
Prilikom sinhronizacije sa udaljenim računarom, potrebno je da se unese korisničko ime i IP adresu za udaljeni računar. Takođe je potrebno uneti i putanju na udaljenom računaru. Format je [email protected]:putanja.
Primer 5. Sinhronizacija sa udaljenog računara na lokalni
Kada se radi sinhronizacija sa udaljenog na lokalni računar u source se upisuje udaljena putanja, a lokalna putanja kao destinacija.
$ rsync -avz [email protected]:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
.
sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87
Primer 6. Remote shell za sinhronizaciju
rsync dozvoljava da se definiše remote shell prilikom sinhronizacije. Može se koristiti rsync ssh da bi se omogućila sigurna konekcija. Koristi se rsync -e ssh da se definiše koji remote sheell da se koristi. U ovoj slučaju rsync će koristiti ssh.
$ rsync -avz -e ssh [email protected]:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87
Primer 7. Ne menjati izmenjene datoteke na destination lokaciji
Ponekad se datoteke na ciljnoj lokaciji menjaju i imamo potrebu da se sinhronizuje direktorijum, ali da izmenjene datoteke ostanu nesinhronizovane (da stara verzija ne prepiše novu, izmenjenu verziju). rsync -u se koristi za ovakve situacije.
$ ls -l /root/temp/Basenames
total 39088
-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames
$ rsync -avzu [email protected]:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
sent 122 bytes received 505 bytes 114.00 bytes/sec
total size is 45305958 speedup is 72258.31
$ ls -lrt
total 39088
-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames
Primer 8. Sinhronizacije samo strukture direktorijuma ali ne i datoteke
Koristeći opciju rsync -d sinhronizuje se samo struktura, dok datoteke ostaju nepromenjene.
$ rsync -v -d [email protected]:/var/lib/ .
Password:
receiving file list ... done
logrotate.status
CAM/
YaST2/
acpi/
sent 240 bytes received 1830 bytes 318.46 bytes/sec
total size is 956 speedup is 0.46
Primer 9. Prikazivanje progresa prilikom transfera
Kada se rsync koristi za backup nije loše da bude prikazan progres backup-a, npr. koliko datoteka se kopira, kojom brzinom se kopira… rsync –progress opcija prikazuje detaljan progres rsync-a.
$ rsync -avz --progress [email protected]:/var/lib/rpm/ /root/temp/
Password:
receiving file list ...
19 files to consider
./
Basenames
5357568 100% 14.98MB/s 0:00:00 (xfer#1, to-check=17/19)
Conflictname
12288 100% 35.09kB/s 0:00:00 (xfer#2, to-check=16/19)
.
.
.
sent 406 bytes received 15810211 bytes 2108082.27 bytes/sec
total size is 45305958 speedup is 2.87
Za backup linux server se može koristiti i rsnapshot alat koji koristi rsync.
Primer 10. Obrisati datoteke kreirane na target lokaciji
Ukoliko datoteka ne postoji na source lokaciji, ali postoje na target lokaciji, može se javiti potreba da se te datoteke obrišu prilikom sinhronizacije. U tom slučaju se koristi –delete opcija.
# Source and target are in sync. Now creating new file at the target.
$ > new-file.txt
$ rsync -avz --delete [email protected]:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting new-file.txt
./
sent 26 bytes received 390 bytes 48.94 bytes/sec
total size is 45305958 speedup is 108908.55