A cél, hogy ha a notebook rákapcsolódik a helyi hálózatra, akár kábelen, akár wifi-n, akkor a megadott mappáról automatikusan induljon el egy biztonsági mentés egy biztonsági mentéseket tartalmazó számítógépre. Erre a feladatra tökéletesen alkalmas az rsync.

Ebben az esetben a notebook lesz az rsync szerver, és a biztonsági mentéseket tároló számítógép a kliens, ami időnként ránéz, hogy jelen van-e a kérdéses notebook. Ha igen, indítja a szinkronizálást.

Minden műveletet rendszergazdaként hajtsunk végre.

Notebook beállításai:

1. Telepítsük fel az rsync-et

apt install rsync

2. Szerkesszük az /etc/default/rsync fájlt:

RSYNC_ENABLE=true
RSYNC_CONFIG_FILE=/etc/rsyncd.conf

Ezáltal megadtuk, hogy az rsync daemon automatikusan induljon, és beállítottuk a konfigurációs fájlját is.

3. Hozzuk létre az /etc/rsyncd.conf fájlt a következő tartalommal:

use chroot = yes
max connections = 1
uid = root
gid = root
timeout = 600
read only = yes
host allow = backupserver
ignore nonreadable = yes
refuse options = checksum

[menteni]
    exclude = kihagyando könyvtar
    path = /mentendő utvonal

Ebben az esetben a mentendő helyre az rsync nem tud írni. A mentendő útvonalra a menteni címkével tudunk a kliensen hivatkozni. A kihagyandó könyvtárat nem fogja figyelembe venni ebben az esetben. A szintaktika miatt olvassuk el a man-t. Nem mindegy, hogy /-el kezdünk, vagy /-el végzünk, vagy /* - ez pl. azt jelenti, hogy a könyvtárat szinkronizálja, de a benne lévő fájlokat már nem.

4. Indítsuk el (újra) az rsync daemont

service rsync start

5. Tűzfal beállítása

Ne felejtsük, a szerverhez való hozzáféréshez a bejövő 873-as portot szabadon hagyni.

 

 A biztonsági mentést tartalmazó számítógép beállításai:

1. Telepítsük fel ide is az rsync-et

apt install rsync

2. Már indíthatjuk is a szinkronizálást:

rsync -avz --size-only --delete --bwlimit=1000 --log-file=/var/log/rsync.log --timeout=30 notebookip::menteni /home/backup/mentesihely

A paraméterek jelentése a következő:

-a - archiv:  ua, mint a -rlptgoD: rekurzív - a könyvtárak tartalmát is másoja, a symlinkeket, jogosultságokat, felhasználó adatokat, időket, speciális fájlokat meghagyja.

-v: növekményes mód, csak a különbséget szinkronizálja

-z: tömörített adatátvitel

--size-only: csak méret alapján hasonlít (gyorsabb, én nem használom)

--delete: ha a notebookon valamit törlünk, az a mentésből is törlődik

--bwlimit: sávszélesség korlát

--log-file: a műveleteket ide loggolja

--timeout: Ha nincs kapcsolat, ennyi idő után hibaüzenettel kilép

notebookip: a notebook ip címe, vagy host neve

menteni: a notebookon a konfigurációs fájlben lévő elérési út cimkéje. Itt egyébként direkt elérési utat is meg lehet adni (chris@server1:/home/chris/Personal/)

/home/backup/mentesihely : ahová a mentés kerül.

 3. Jöhet az automatikus időzítés

Írjunk saját scriptet, ami a fenti szinkronizációt tartalmazza, mentsük el a root gyökerébe, és nevezzük el cron_backup.sh-nak

Az időzítésre használljuk a cron démont.

crontab -e

Ennek a futtatása után a megjelenő szövegszerkesztőbe beírhatjuk a megfelelő szintaktikával milyen időközönként mit szeretnénk futtatni. A következő sor azt jelenti, hogy minden óra 50.-ik percében lefut a cron_backup.sh

50 * * * * /root/cron_backup.sh

A cron daemon ezt a beállítást percenként olvassa, tehát nem kell semmit sem újraindítani. Ez a konfigurációs fájl egyébként a /var/spool/cron/crontabs mappába kerül a felhasználó neve alatt, de ott nem szabad megváltoztatni.

A cron logja automatikusan a /var/log/syslog-ba kerül

Ha esetleg több szinkronizálás is el akar indulni, mert pl. egy folyamat több idő, mint egy óra, nem lesz gond, mivel a notebookon a konfigurációban megadtuk, hogy max_connection=1, tehát a logban látszik is, hogy @ERROR: max connection (1) reached -- try again later.

4. Hálózati feltétel

Már csak az van hátra, hogy csak akkor akarjon futni a szinkronizáció, ha a notebook rajta van a hálózaton. Mivel a kliensen a --timeout  kapcsoló miatt úgyis kilép ha nem sikerül a szinkronizáció, ezért külön más teendőnk nincs. Az hogy a notebook kábalan, vagy wifin kapcsolódik a helyi hálózatra, úgy oldottam meg, hogy ezen kapcsolatok fix ip címen futnak, és két scriptet írtam, az egyik a lan-os IP-vel próbál kommunikálni, a másik a wifi-s IP-vel. A cron-ba pedig különböző időpontra időzítettem őket. Így max az egyik fog lefutni.

 

 


Konfiguráció:

Lenovo X250 notebook - Debian 10 Buster (szerver)

Debian 9 Stretch (kliens)


Források:

man rsync

https://www.abplusz.hu/ugyfelportal/index.php/knowledgebase/26/RSync-szolgaltatas-beallitasa-DebianorUbuntu-szerveren.html

https://lacyc3.eu/rsync

https://linuxadm.hu/cikk/Kozpontositott-mentes-rsync--kel

man cron

man crontab

https://crontab.guru/

https://www.computerhope.com/unix/ucrontab.htm


 

You have no rights to post comments