Az Rsync (távoli szinkronizálás) egy eszköz, amellyel fájlokat és mappákat másolhat és szinkronizálhat ugyanazon kiszolgálón vagy különböző, Linux operációs rendszert futtató gépeken.
Ami az Rsync-et megkülönbözteti a klasszikus „másolás és beillesztés” folyamatától az, hogy ez az eszköz automatikusan felismeri, hogy mely dokumentumok különböznek egymástól a két mappa között, annak érdekében, hogy felgyorsítsák a másolási folyamatot a forrásmappából a célmappába.
Ebben a cikkben megismerheti az Rsync telepítését, konfigurálását és használatát az Ubuntu 18.04 rendszeren a fájlok és mappák szinkronizálása és a szerver időszakos biztonsági másolatának ütemezése céljából.
Telepítés
Az rsync csomagok elérhetők a hivatalos Ubuntu csomagtárban (repository). Telepítéséhez írja be a következőt:
$ sudo apt install rsync
Ezt követően kövesse az alábbi szintaxist:
$ sudo rsync options /path/source/ /path/destination/
A rendelkezésre álló lehetőségek a következők:
-
-v: a másolt fájlok és mappák megjelennek a shellben,
-
-r: a mappák és azok tartalmának másolására,
-
-h: a másolt fájlok méretének bájtban történő bemutatása helyett egy könnyen olvasható formátum jelenik meg (14.167.396 bájt helyett 14.17 MB lesz látható),
-
-z: az átvitt adatok tömörítésére,
-
-a: megmutatja a fájl eredeti információit, például időbélyeg, engedélyek, tulajdonos stb.,
-
-u: másoláskor,
-
--delete: az rsync törli azokat a fájlokat a célmappából, amelyek nincsenek a forrásmappában,
-
--exclude: bizonyos fájlokat vagy mappákat másoláskor figyelmen kívül hagynak,
-
--progress: mutatja a másolási folyamat százalékát és a hátralévő időt,
-
--existing: csak a célmappában már létező fájlok kerülnek másolásra.
Két mappa szinkronizálása ugyanazon a számítógépen
Az egyik mappából a másikba történő másoláshoz az "rsync" parancs mögé be kell írnia a forrásmappa (ahonnan az elemek másolva vannak) és a célmappa útvonalát. Függetlenül attól, hogy a másolni kívánt mappa egyéb mappákat is tartalmazhat, ajánljuk az "-r" opció hozzáadását a parancshoz:
$ sudo rsync -r path/source path/destination
A teljes "forrás" mappát a "cél" mappába másolja.
$ sudo rsync -r ~/source/ ~/destination
A "forrás" mappa tartalmát a "cél" mappába másolja.
Vigyázzon a két parancs közötti különbségről: ha a forrásmappa után beírja a "/" karaktert, azzal utasítást ad a rendszernek, hogy másolja át a mappában található fájlokat.
A „/” karakter bevitele nem jelenti a teljes mappa kiválasztását, következésképpen a forrásmappa másolatának létrehozását sem a célmappában.
Fájlok másolása egyetlen formátumban
Az Rsync a fájltípusok szerinti másolást is engedélyezi a formátum vagy a név megadásával.
Feltételezve, hogy a fájlok "pdf" formátumban vannak, az összes ebben a formátumban található fájl átmásolható az alábbi parancs alapján:
$ sudo rsync path/source_folder/*.pdf path/destination_folder
A "*.pdf" kifejezés használatával kifejezetten kérte az "összes .pdf fájl" másolatát.
Fájlok másolása SSH-protokollon keresztül két gép között
Az SSH protokollt arra is használhatja, hogy fájljait és mappáit egyik számítógépről a másikra másolja. A protokoll használata garantálja, hogy az átvitel során az összes fájl titkosítva legyen, amik így másokra számára olvashatatlanok lesz.
A parancshoz szükség van az "-e ssh" opcióra, amelyet a forrás- és a célgép útvonala követ.
$ sudo rsync -e ssh path/source/ user@IP_machine:/path/destination/
A célgéphez hozzáférő felhasználó jelszavához szükség lesz a művelet befejezéséhez.
Fájlok másolása méret alapján
Az rsync a másolandó fájlokat a lemezen elfoglalt méret alapján is képes kiszűrni.
$ sudo rsync --max-size=15k path/source_folder/*.* path/destination_folder/*.*
A fenti parancs szerint csak a 15 KB-nál kisebb fájlokat másoljuk át, a nagyobb fájlokat nem veszi figyelembe.
$ sudo rsync --min-size=20k ~/source_folder/*.* ~/destination_folder/*.*
A fenti parancs szerint csak a 20 KB-nál nagyobb fájlokat másolja, a kisebb fájlokat nem veszi figyelembe.
Fájlok kizárása a másolásból kiterjesztés alapján
Ha nem akar átmásolni néhány fájltípust, akkor a „--exclude” címkével kizárhat néhány fájlt a kiterjesztés alapján a másolásból.
Az alábbi példában a PDF formátumú fájlokat nem másolja át a forrásmappából a célmappába.
$ sudo rsync -r --exclude="*.pdf" path/source_folder/ path/destination_folder
Tartalom eltávolítása a forrásmappából az átvitel után
Hasonlóképpen a normál "kivágás és beillesztés" művelethez, az rsync használatával is áthelyezhetők a fájlok egy forrásmappából egy célmappába. Ebben az esetben a fájlokat a célmappába másolja, majd eltávolítja a forrásmappából.
$ sudo rsync -r --remove-source-files path/source_folder path/destination_folder
Az átviteli sebesség határának beállítása
Ha hálózaton keresztül másol, lehetséges, hogy be kell állítania a fájlok feltöltési sebességi korlátját. Ebben az esetben használja a "--bwlimit = KBPS" címkét, helyettesítve a "KBPS" -et a kívánt átviteli sebességgel.
$ sudo rsync --bwlimit=KBPS -r ssh source_path/folder user@IP_receiver:/destination_path
Cserélje ki a "KBPS" értékét a maximális átviteli sebesség értékére, KB/s-ban kifejezve (2048 KB/s=2 MB/s)
Időszakos és automatikus másolatok készítése
Abban az esetben, ha rsync-t használ biztonsági másolat készítéséhez, de nem akarja minden alkalommal egyesével begépelni a parancsokat, van egy tökéletes eszköz az Ön számára: ez a Cron.
Az Ubuntu 18.04-ben már jelen lévő szolgáltatás lehetővé teszi bizonyos "szabályok" beállítását egyes parancsok időszakos ismétlésére.
A szabályok létrehozásának és az automatikus másolási folyamat beállításának megkezdéséhez írja be a következőt:
$ sudo crontab -e
Ezt követően megnyílik egy szövegszerkesztő, ahol megadhatja, hogy melyik parancsot kell rendszeresen megismételni. Miután beállította a szabályokat, mentse el és zárja be a programot.
Hogyan állíthat be egy crontabot?
A crontab írásákor pontos szintaxist kell követnie, az alábbu 6 paraméter közül választva:
m h dom mon dow command
Példák a lehetséges konfigurációkra:
30 * * * * rsync path/source/*.pdf path/destination
(minden hónapban, minden nap és minden órában, 30 percenként, az összes ".pdf" fájlt a forrásmappából a célmappába másolja)
*/2 * * * * rsync path/source/*.pdf path/destination
(az összes "pdf" fájlt, amely a célmappában található átmásolja 2 percenként a forrásmappába, a hónap minden napján)
50 8 * * 1,3 rsync path/source/*.pdf path/destination
(a .pdf fájlok másolásának parancsát a célmappából a forrásmappába hétfőtől szerdáig 8:50-kor hajtja végre)
Ezt követően szerkessze a crontab-ot az alábbi módon:
A szerkesztőfelület mentése és bezárása után a crontabs lista megtekintéséhez írja be a következőt:
$ sudo crontab -l