Adat szinkronizáció / backup

Fórumok

Használok jelenleg egy megközelítést, ami az évek során kialakult, de vannak hibái, hiányosságai, és nem hatékony.
Kíváncsi vagyok, mások mit használnak, illetve hogyan lehetne javítani ezen, vagy milyen eszközt lehetne használni ami jobb lenne nekem.

Jelenleg a következő felállást használom (kicsit egyszerűsítek):

Négyféle adatom van:
1, ami mindenhol kell (kevés): ezt feltolom google drive-ba, és elérem linux alól, windows alól, telefonról, otthonról, munkából. Ezzel most nem kell foglalkozni.

2, adat, amit bármelyik saját számítógépemnél el akarok érni. Ennek a mennyisége nagyobb, mint ami a laptopom belső hdd-jén elfér. Erről backup is kell.
3, adat, ami csak egy helyen kell és kell róla backup (ebből is lehet sok).

4, adat, amiről nem kell backup és nem kell több helyen elérni. Ezzel megint csak nem kell most foglalkozni, ez simán valami helyi hdd-n van egy példányban és ennél nem is kell tovább bonyolítani.

a 2-es és 3-as kategóriába tartozó adatokra külső hdd-ket illetve másik gépre készített backupokat használok, az egyszerűség kedvéért egyféleképp kezelem ezeket.

Mivel több saját számítógépet használhatok, nincs egy kiemelt master másolat az adatokról.

Ezért most az megy, hogy készítettem rsync scriptek csomagot, ami gyakorlatilag összehasonlítja és kilistázza az eltéréseket (egyszerre két másolatot hasonlít össze), ezután én átnézem, hogy melyik a jobb/frissebb, és a választásom alapján az rsync a kettőt egy formára hozza.

Van két ugyanolyan külső hdd-m (3T), ezek egymás tükrei.
Van egy harmadik hdd-m (1T), ezen is van az adatok egyik részéről másolat, de ezt nem igazán tartom szinkronban, a lentebb írt gondok miatt.
Van több számítógép, amikre másolatot készítek az adatok kisebb részéről (van, amire interneten át, másikra lokális etherneten át). Jellemzően ezek pár giga és pár 100 giga közötti méretek.
Az interneten keresztül jellemzően egy-két könyvtárat másolok le egyszerűen. Ez csak backup, ezt a másolatot nem változtatom meg.
Az etherneten keresztül backup készül (ritkán), elméletileg a teljes adatmennyiségről mehetne, ha lenne elég kapacitás (nincs). Gyakorlatilag ugyanúgy működik a problémák tekintetében mint egy külső hdd. Ez sincs igazán jól szinkronban, ennek főleg az az oka, hogy a külső hdd-k máshol vannak, mint ez a gép, nehéz az adatokat átvinni egyik helyről a másikra. Internet elérés itt nincs.
Illetve mostanában akarok elkezdeni használni egy 64G-s pendrive-ot, amit valószínű folyamatosan a legtöbbet használt laptoppal használnék.

A gondok:
A szinkronizálás nem folyamatos, a másolatok nagy része nem érhető el az idő nagy részében.
Ha szinkronizálni akarok, akkor be kell dugnom a megfelelő külső hdd-t, vagy hálózatra kell kapcsolódnom, és jelenleg kézzel szinkronizálok, ez sokszor elég sokáig tart.
A szinkronizálás néha igen egyszerű, de van, hogy bonyolult. Pl. ha a két 3T-s hdd közül egyszer az egyiket használom, egyszer a másikat, még ha figyelek is arra, hogy ne módosítsam ugyanazt a könyvtárat / fájlt két helyen, akkor is jól meg kell nézni, hogy mi változott hol, és kb. könyvtáranként hozok döntést, hogy melyik változatot akarom megtartani.
Ha elkezdek átalakítani könyvtárstruktúrát, pl. 3 könyvtárban szétszórt többféle fájlt egy negyedik és egy ötödik könyvtárba szétválogatok, akkor az rsync ezt nem veszi okosan észre, hogy itt most mi történt, csak azt, hogy innen töröltünk valamit, ott meg van valami új. Ez akkor rendben, ha egy lemezről teljes tükröt készítenék, de nem mindig ezt akarom.

Jó lenne, ha a rendszer automatikusan felismerné a backupnak hasznát hdd-ket (esetleg hálózaton át felcsatolt távoli könyvtárat).
Jó lenne, ha a rendszer automatikusan felismerné, hogy változott valami, és esetleg előzetes konfigurálás alapján bizonyos könyvtárakban simán bemásolna mindent, ami frissebb, mint az utolsó szinkronizálás időpontja, de ha a szinkronizálás után két helyen is változtattam különböző időpontokban, akkor mondjuk ne

Igazából arra gondoltam, hátha van valami backup solution, vagy valami fájlrendszer ami mindezt (vagy egy részét) megoldana nekem.

Hozzászólások

Igazán szép megoldáshoz szerintem kellene gyors hálózat. Ha több gépen kellene dolgoznom, de az anyag egy, akkor vagy fileszervert használnék, ami nem jó, mert nincs mindenhol hálózatod, vagy vinném magammal a külső HDD-t, ezen lenne az élő anyag, a gép lokális filerendszerére pedig szinkronizálnék a háttérben rsync-kel.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Arra a részére, hogy a rendszer automatikusan felismerje a Backup disket és elindítsa a megfelelő scriptet, én a következő megoldást használom:

99-backup.rules tartalma

ACTION=="add", KERNEL=="sd?1", ATTRS{serial}=="ide jön a serial", RUN+="/usr/bin/systemctl --no-block start backup@%k.service"

backup@.service tartalma

[Unit]
Description=Backup to USB Disk
BindsTo=dev-%i.device

[Service]
Type=simple
ExecStart=

A backup_install.sh script, ami a "telepítést" végzi:


#!/bin/bash
udevadm info -a -p $(udevadm info -q path -n /dev/sdd1)
echo "Serial: `udevadm info -a -p $(udevadm info -q path -n /dev/sdd1) | grep -i -e serial -e model -e vendor`"
echo -n "^C, majd szerkeszd meg a 99-backup.rules fájlt és indítsd újra ezt a scriptet a telepítéshez!"
read something
echo -n $( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) >> ./backup@.service
echo "/backup.sh %I" >> ./backup@.service
cp ./backup@.service /etc/systemd/system
systemctl daemon-reload
cp ./99-backup.rules /etc/udev/rules.d
udevadm control --reload-rules

Az install script kilistázza az USB-be dugott (/dev/sdd1) partíció adatait. (ez persze igény szerint módosítandó!)
CTRL-C-vel megszakítod a script futását.
Ezekből az adatokból tetszőlegesen kimazsolázol néhány egyedi jellemzőt, pl. serial, model, vendor, bármi és beleírod a 99-backup.rules fájlba.
Ez után újra elindítod az install scriptet, de most Enterrel tovább engeded. Elvégzi a telepítést és már megy is minden, ahogy kell.

A backup scriptemben a lényeg, hogy az rsyncnek megadom az előző backup könyvtárát és a nem változott fájlokhoz csak hardlinket hoz létre, a többi fájlt menti.
A partíció titkosítva van, azt előtte kinyitja-
Egy külön configfájlból olvassa be azon könyvtárak neveit, amikről backup kell, ill. azok neveit, amit ezekből ki kell hagynia, mert nem kell menteni.
E-mailt küld, ha sikeres, vagy sikertelen a backup, figyelmeztet, ha x napja nem mentettem, a mentés végén kinyitja a DVD-ajtót/csipog, hogy tudjam, hogy leválasztotta az USB-HDD-t, nyugodtan kihúzhatom.
Automatikus backupot is tud, ha hálózatra, vagy másik HDD-re akarok megadott időpontokban menteni.

Szerk.: OpenSuse alatt működik nálam, Debian klónokon lehetnek eltérések a /etc/udev és a /etc/systemd környékén, ebben az esetben módosítani kell a backup-install.sh-t

nem akarok tanácsot adni, inkább leírom én hogy csinálom, aztán ha tetszik valami átveszel belőle:

Minden személyemhez kötődő adatom (privát fájlok, képek) google drive-on, illetve a google drive syncelt mappáját havonta kiírom egy külső hdd-re amit a könyvespolcon tartok.

Minden munkával kapcsolatos dolog a munkahelyen kialakított owncloud szerveren (ennek a redundanciája megoldott). Azt az elvet követem, hogy lehetőleg legfeljebb 2 napi munka maradjon szinkronizálatlanul (ha épp olyan helyen vagyok ahol nincs hálózat).

A folyamatban lévő munkáimnál (ez általában forráskód és dokumentáció, illetve hozzá tartozó prezentáció) git-et használok ami mind verziókövetésre, mind a gépeim közti szinkron megtartására jó.