Kopiranje in varnostno kopiranje datotek in map z orodjem Rsync
Rsync je hitro in vsestransko orodje za kopiranje datotek in map. Orodje lahko kopira podatke tako lokalno kot na druge gostitelje, vključno s Cloud Storage podjetja INTROSERV. Možnosti orodja vam omogočajo nadzor nad številnimi vidiki kopiranja in zrcaljenja podatkov. Ena koristnih funkcij je možnost stiskanja podatkov med prenosom, kar lahko zmanjša omrežni promet in izboljša hitrost prenosa, kadar je pasovna širina omrežja omejitveni dejavnik. Druga prednost je, da se Rsync izogne prenosu datotek, ki jih ni treba posodobiti. Privzeto primerja velikost datoteke in čas spremembe ter prenese le datoteke, ki so se očitno spremenile, kar nedvomno prihrani čas pri sinhronizaciji velikih map.
Zakaj uporabiti zastavico -a? Možnost -a (archive) je najpogostejša izbira. Omogoča rekurzivno kopiranje in ohranja pogoste atribute datotek: dovoljenja, lastnika, skupino, čase spremembe in simbolne povezave. Ker -a že vključuje rekurzijo, vam ni treba dodati -r posebej.
Možnosti orodja
Poglejmo primere uporabe Rsync za kopiranje datotek in map v oddaljeni Cloud Storage podjetja INTROSERV prek protokola SSH.
Ti ukazi so univerzalni. Preprosto zamenjajte ciljni naslov in pot za sinhronizacijo datotek s katerim koli oddaljenim strežnikom prek SSH.
Poglejmo si nekaj glavnih možnosti orodja, ki jih boste najpogosteje uporabljali. Podrobnejši seznam razpoložljivih možnosti najdete v dokumentaciji man (ukaz man rsync):
-v – prikaže podrobne informacije o procesu
-c – preveri kontrolne vsote datotek
-q – minimalne informacije
-a – način arhiviranja
-R – relativne poti
-y – ne prepiši novejših datotek
-b – ustvari varnostno kopijo
-l – kopira simbolne povezave
-L – kopira vsebino povezav
-H – kopira trde povezave
-g – shrani skupino
-p – ohrani dovoljenja datotek
-t – shrani čas spremembe
-x – deluje samo v tem datotečnem sistemu
-e – uporabi drug prenosni protokol (na primer ssh)
-z – stisne datoteke pred prenosom
--delete – izbriše datoteke, ki jih ni v viru
--exclude – izključi datoteke
--recursive – rekurzivno našteje mape
--no-recursive – onemogoči rekurzijo
--progress – prikaže napredek prenosa datotek
--stat – prikaže statistiko prenosa
--max-size – največja velikost datoteke za prenos
--bwlimit – omejitev hitrosti za prenose datotek
Kratka razlaga skladnje
Pravilo končne poševnice (/). Tu se največ uporabnikov zmoti: /mapa (brez poševnice) kopira mapo samo. /mapa/ (s poševnico) kopira samo vsebino mape.
rsync -az --progress /home/user/test.file boxxxx@storage_ip:/remote_folder/
-a – način arhiviranja: rekurzivna kopija, ki ohranja atribute datotek
-z – stisne podatke med prenosom
--progress – prikaže napredek prenosa
/home/user/test.file – to je pot do datoteke in dejanska datoteka, ki jo je treba prenesti
boxxxx@storage_ip: – to je ciljni vir (v našem primeru je to Cloud Storage, lahko pa je tudi oddaljeni strežnik). boxxxx je uporabniško ime, za znakom @ pa je ime vira ali IP naslov oddaljenega strežnika
/remote_folder/ – to je mapa na oddaljenem viru. V našem primeru v INTROSERV Cloud Storage.
Kopiranje ene datoteke v mapo na oddaljeni shrambi
rsync -az --progress /home/user/Desktop/test.file boxxxx@storage_ip:/remote_folder/
Zahtevano bo geslo za povezavo s shrambo. Vnesite geslo in nadaljujte; videli boste napredek in hitrost prenosa datoteke.
Kopiranje mape v mapo na oddaljeni shrambi
Bodite pozorni na poševnice v vrsticah izvorne in ciljne mape. Odsotnost poševnice v izvorni mapi pomeni, da želimo prenesti samo lokalno mapo Desktop, z vso njeno vsebino, v mapo remote_folder.
rsync -az --progress /home/user/Desktop boxxxx@storage_ip:/remote_folder/
Videli boste, kako se prenašata mapa in vse datoteke v njej.
Kopiranje vsebine lokalne mape v mapo na oddaljeni shrambi
Bodite pozorni na poševnico na koncu izvorne mape. Njena prisotnost pomeni, da mora orodje kopirati vsebino lokalne mape v mapo na oddaljeni shrambi.
rsync -az --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Videli boste napredek in hitrost kopiranja.
Kopiranje mape z oddaljene shrambe v mapo lokalnega strežnika
Z Rsync lahko sprožite kopiranje mape z oddaljene shrambe. Ukaz je videti takole:
rsync -az --progress boxxxx@storage_ip:/remote_folder /home/user/Desktop/
Videli boste napredek in hitrost kopiranja oddaljene mape v mapo na lokalnem strežniku.
Kopiranje vsebine mape z oddaljene shrambe v mapo lokalnega strežnika
Tudi tu je vredno biti pozoren na poševnico na koncu poti izvorne mape. Njena prisotnost pomeni, da je treba kopirati samo vsebino mape.
rsync -az --progress boxxxx@storage_ip:/remote_folder/ /home/user/Desktop/
Kopiranje vsebine mape z izključitvijo in/ali vključitvijo datotek
Orodje vam omogoča, da izrecno določite, katere datoteke naj se prenesejo in katere naj se izključijo. V ta namen uporabite možnosti --include in --exclude. Pravila se obdelujejo po vrstnem redu, zato mora pravilo za vključitev biti pred pravilom za izključitev, ki bi sicer veljalo za isto datoteko.
Preizkusite s poskusnim zagonom. Preden zaženete ukaz, ki spremeni ali izbriše veliko datotek, dodajte zastavico -n ali --dry-run. Rsync vam bo natančno pokazal, kaj bi naredil, ne da bi dejansko kaj premaknil ali izbrisal.
rsync -az --progress --include='test.file' --exclude='*' /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Ta ukaz prenese test.file in izključi vse ostalo v izvorni mapi. Pravilo --exclude='*' je tisto, ki omeji prenos na eno samo vključeno datoteko, zato sta tukaj potrebni obe možnosti skupaj.
Kopiranje samo datotek, ki se razlikujejo od datotek v ciljni mapi
Rsync privzeto odloči, ali je treba datoteko prenesti, na podlagi njene velikosti in časa spremembe. Uporabite možnost -c, kadar želite, da Rsync namesto tega primerja vsebino datotek s kontrolno vsoto. To je bolj zanesljivo, kadar časovnim žigom ni mogoče zaupati, vendar je počasnejše, saj morata obe strani prebrati datoteke, da izračunata kontrolne vsote.
rsync -azc --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Z -c Rsync primerja vsebino izvornih in ciljnih datotek s kontrolnimi vsotami ter prenese samo datoteke, katerih vsebina se razlikuje.
Uporaba Rsync prek SSH z nestandardnimi vrati SSH
Za prenos datotek na/iz strežnika s spremenjenimi vrati SSH uporabite možnost -e 'ssh -p port_number'.
Ukaz za kopiranje datoteke na strežnik, na katerem so vrata SSH spremenjena na 44, je videti takole:
rsync -azc --progress -e 'ssh -p 44' /home/user/Desktop/ user@server_ip:/remote_folder/
Varnostno opozorilo: Sprememba privzetih vrat SSH lahko zmanjša samodejno skeniranje in nezaželene poskuse povezave, vendar ne nadomešča ustrezne varnosti SSH, kot sta avtentikacija na podlagi ključev in pravila požarnega zidu. Vedno se prepričajte, da vaš požarni zid dovoljuje promet na izbranih vratih.