Biztonsági mentés rsync-kel

rsync logóFájlok biztonsági mentése rsync-el.

Ami az rsync-et különlegessé teszi, az az rsync algoritmus, ami összehasonlítja a helyi és a távoli gépen lévő adatokat időrendben és részenként egy ellenőrzőösszeg segítségével. Így csak azokat a részeket másolja át, amik különböznek. Ezért ez az algoritmus nagyon hatékony, így rengeteg biztonsági mentő megoldásba van beépítve.

Az rsync futhat akár a távoli héjon (SSH-n keresztül) vagy futhat mint rsyncd démon a szerveren. A példában SSH-val érjük el a lementendő állományokat:

rsync -avz --delete chris@server1:/home/chris/pics/ chrispics/

A parancssorban megadjuk a mentendő állományok helyét a távoli gép könyvtár struktúrájában (/home/chris/pics), illetve a helyi rendszeren a mentések helyét (chrispics/).

Kapcsolók jelentése:
-a – archiváló mód, minden állomány rekurzívan legyen átmásolva a távoli könyvtárból
-z – fájlok tömörítése
-v – bőbeszédű mód

--delete kapcsolóval az rsync törli az összes olyan helyi állományt, ami nincs meg a távoli kiszolgálón.

Íme egy példa a heti egyszeri adatmentésre:

mkdir /var/backups
rsync --delete --backup                       \
    --backup-dir=/var/backups/backup-`date +%A` \
    -avz chris@server1:/home/chris/Personal/    \
    /var/backups/current-backup/

Amikor a program lefut, minden állomány a /home/chris/Personal könyvtárból át lesz másolva a helyi /var/backups/current-backup könyvtárba. Minden módosított állomány, a módosítás napjára vonatkozó könyvtárba fog kerülni. Pl. ha lefut kedden, akkor minden kedden módosított állomány a backup-kedd könyvtárba kerül (magyar rendszert feltételezve), de ha pénteken fut le akkor a módosított állományok a backup-péntek könyvtárba kerülnek, így minden héten keletkezik 7 könyvtárad a módosításokkal együtt.

Egy másik trükk a forgó mentésekre a hard linkek használata a többszörös másolatok helyett. Ez a két lépéses folyamat megoldja a mentések forgását:

rm -rf /var/backups/backup-old/
mv /var/backups/backup-current/ /var/backups/backup-old/
rsync --delete --link-dest=/var/backups/backup-old -avz \
   chris@server1:/home/chris/Personal/ /var/backups/backup-current/

Ebben a példában, az előzőleg már létrejött backup-current könyvtárat átnevezzük backup-old-ra, de előtte a két hetes mentéseket töröljük. Amikor a teljes mentés fut az rsync --link-dest kapcsolójával, akkor ha bármelyik állomány megegyezik a távoli gépen lévő Personal könyvtárban a helyi gépen lévő adatokkal és az előző mentéssel, akkor keletkezik egy hard link a backup-old és a backup-current könyvtár között.

A hard linkek használatával a backup-current és a backup-old könyvtár között rengeteg helyet lehet megtakarítani. Például van egy állományod mind a két könyvtárban, akkor biztos lehetsz benne, hogy az fizikailag csak egy állomány.

Forrás: Egy ismeretlen PDF a merevlemezem egy elrejtett szegletében. :)