Archiválás

Ez az, amitől mindig is fáztam. Otthoni desktop gépről van szó. Van egy rakás kész megoldás, de mindegyikkel volt valami bajom. Vagy a formátum olyan, hogy baj esetén hosszas doksi olvasást követően jutok az adatokhoz, vagy a paraméterezés kellően rugalmas, ami jó, de lehet, kellemetlen. Természetesen volt mentésem, de nem koherens. Mikor miről. A régi dolgokat nem töröltem, elfogyott a hely. Szóval prüszköltem tőle.

Picit nézegettem a lehetőségeket, s az rdiff-backup lett a nyerő. Azért, mert egyfelől a legfrissebb mentés közvetlenül elérhető, aztán inkrementális, megvannak tömörítve a korábbi differenciák, és csak változásokkal korrigálódik az archívum.

Na jó, de script kell hozzá, mert kézzel biztosan nem fogom paraméterezni. Lett, mert írtam. Ellenőrzi, megvannak-e a konfigurációs állományok, a programok, amelyekre szüksége van a futáshoz, megkérdezi, valóban szeretnék-e archiválni, aztán megnézi, a mount pointhoz csatolva van-e a külső adathordozó. Lehet választani egy globális és egy lokális include, exclude lista közül.

Archiválás közben semmilyen ablak, terminál nem tartozik hozzá, így véletlenül nem zárhatjuk be a futó alkalmazást. Ugyanakkor 2 percenként (konfigurálható) notify-send küld üzenetet, jelezve, hogy archivál, s véletlenül ne állítsuk le a gépet. Elárulja, mennyi ideje dolgozik, s mennyi szabad hely van a külső lemezen.

Ha az indító ikonjára kattintunk, miközben már archivál, akkor megkérdezi, az archiválás végeztével leállítsa-e a gépet. Ezt majd a notify-send üzenetben piros felirattal jelzi is. Ebben az a jó, hogy archiválás közben meggondolhatjuk magunkat, hogy a végén leállítsa a gépet, vagy sem. Például sokáig tart, késő éjszaka van, mennénk aludni.

Ha elkészült, feldob egy ablakot, megmondja, mennyi ideig tartott, hol van az archívum, mennyi szabad hely maradt.

Visszaállítás közvetlenül az archivumból kimásolással, vagy parancssorból. Ez úgyis egyedi, s nagyon ritkán van rá szükség remélhetően.

Ezzel az eszközzel végre lesz kedvem viszonylag gyakran backup-ot készíteni. Példa konfig file-ok:

/usr/local/etc/archive/backup-list.conf
/usr/local/etc/archive/variables.conf

Hozzászólások

nalam a Time Machine a nyero
inkrementalis, nem zavarja ha kozben elaltatom a gepet, ha elfogy a hely akkor a legregebbieket automatikusan torli, stb

CrashPlan.

Menthetsz saját szerverre, cloudba, saját gépeidre (egymás között), ismerősök gépére (egymás között), külső vinyóra, stb. Nem kell aggódni a lekapcsolás/altatás/újraindítás miatt. Inkrementálisan ment. Kezeli a verziókat, törölt fájlokat, stb. Teljesen automata, egyszer kell beállítani (kb. 5-10 perc), utána teszi a dolgát az idők végezetéig.

- Tipp: a lefutasrol/le nem futasrol kuldjon emailt is. Ugyanis ha vegez, majd leallitja a gepet, akkor pont nem fogom tudni, hogy sikerult-e a mentes.
- Ez a beesu nevu eszkoz Ubuntu Linux alatt nem elerheto. Nem tudod kivaltani valami generikusabb tortenettel?
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()

Ez a beesu valójában gksu lenne, csak ez utóbbi nincs Fedorában. Van gksu-polkit, de azzal sok baj van, nem működik jól. Egyrészt paraméterrel nem lehet parancsot futtatni, pláne nem többet, másrészt, ha csinálok egy picike scriptet a /tmp-be, az működik, de elhal 1 CPU mag 100 %-os használata mellett a gksu-polkit. Szóval ezért beesu. :)

Szerk.: Még a -i anaconda lehet gond, az egy archiválásra utaló ikon legyen.

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

Jó az rdiff-backup, csak én egy egyszerűbb szkriptet használok:

#!/bin/sh

CONFIGDIR=/home/zsolt/.config/backups
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

if [ $# -eq 0 ]; then
    exit 1
fi

logger -t backup "[[[ Backup $1 ]]]" 
if [ -r $CONFIGDIR/$1 ]; then
    . $CONFIGDIR/$1
    HOSTS="${DESTDIR}"
    for host in ${HOSTS}; do
        echo ">>> $host ($1) <<<"
        {
            server=`echo ${host} | sed -rn '/::/ s,(.+)::.*,\1,p'`
            if [ -n "${server}" ]; then
                echo "Testing remote server: ${server}"
                if ping -q -c 1 -t 2 ${server} ; then
                    echo "${server} is available, running backup"
                else
                    echo "!! ${server} is unavailable, exit"
                    continue
                fi
            fi
            /usr/local/bin/rdiff-backup --include-globbing-filelist ${CONFIGDIR}/${FILELIST} \
                ${SOURCEDIR} ${host} 2>&1
            [ $? -ne 0 ] && logger -t backup "!!FAIL: $1 $host"
        } | sed -l 's,^,  ,'
    done
fi | sed -l 's,^,  ,' | logger -t backup

logger -t backup "[[[ End backup $1 ]]]"

Pl. a ~/.config/backups/tex.lst:

**.tex
- **

a ~/.config/backups/tex.rdiff:

SOURCEDIR=/home/zsolt/Dokumentumok/
DESTDIR="/system/backup/rdiff/tex /system/backup-hdd/tex uzsolt.hu::/usr/home/zsolt/backup/tex rpi::/usr/home/hdd/backup/mokamester/tex"
FILELIST=tex.lst

cron-ból háromóránként hívom meg, darabokra szétosztva (pl. 10 perckor a tex.rdiff, 15 perckor a pdf.rdiff, stb.). Maximum néhányszor 10 másodperc alatt megvan egy mentés.

Ha notify-send-eket akarnék, akkor a /var/log/backup.log-ból dolgoznék egy másik szkripttel (az stdin-jére megkapná a backup-os dolgokat, és ott keresné a "!!FAIL" sorokat).

Ha esetleg korábbi adatokat akarnál visszanyerni, és nem tudod, pontosan melyik időpontit, akkor az rdiff-backup-fs okosság hasznos lehet - gyakorlatilag egy virtuális fájlrendszer, a könyvtárak nevei az időpontok, amikor a backup történt.

Használd egészséggel.

Nekem se sűrűn kellett teljes, komplett százmegákat backup-ból visszaállítani, de amikor kellett volna, pont akkor nem volt (lusta voltam beállítani az új gépen). Apróbb-cseprőbb dolgokra viszont többször kellett, véletlen törlés, felülírás (az mv ../foo1 ../foo2 és az mv ../foo1 ../foo2 . közötti egy pont különbség nem elhanyagolható), stb. után.

Ja, amúgy érdekesség, először képes voltam leírni, hogy ha hiányzik a zenity, akkor a zenity dobjon fel egy ablakot, s írja ki, hogy hiányzik. :) Aztán elméláztam azon, hogy ez így lehet, nem igazán lesz jó, s megmosolyogtam magam. Nem véletlenül megy az külön notify-senddel az elején. :)

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

Én is sub... És köszönöm a leírást!

rdiff-backup-ot hosszú évek óta használom éles adatok mentésére (akár fél TB növekménnyel) és sokszor is kell visszaállítanom adatot amelyet kollégák törölnek a szerverről.

Egyszer sem hagyott még cserben eddig.

Az rdiff-backup-nak van egy nagyon csúnya, rejtett hibája!
Tegnapelőtt óta észrevettem, hogy az ssh nagyon sok procit eszik (conky-ban megjelenik a legtöbbet evő, amennyiben egy bizonyos százalékot meghalad). Most azt is észrevettem, hogy a backup-ok brutálisan meghíztak, és olyan fájlok is kerültek bele, amik nem kellettek volna.
Hosszú-hosszú kutatás után megtaláltam a problémák gyökerét: bug #29808: --max-file-size does not combine with --include and --exclude. És valóban, egy-két napja adtam hozzá a szkripthez a --max-file-size opciót, mondom, a rohadt nagy pdf-ekről ne csináljon biztonsági másolatot. Eredmény: néhány esetben az egész fájlrendszert lemásolta (csodálkoztam, hogy a /home/storage könyvtáram hogy a fenébe került az rdiff-backup könyvtáraiba)...
Mivel sajnos a fejlesztése abbamaradt, így erősen azon gondolkodom, hogy váltani kellene (a fájlméret maximalizálást azért igényelném).

Tehát: az archiválandó fájlok méretét, ha korlátozod, ne legyen --include vagy --exclude!

Köszönöm, hogy jelezted, mire kell figyelni!

Nem használok file méret maximumra korlátot, ha így tennék, nem kerülne mentésre egy-egy 16 GB-os virtuális gép image, ami nem volna jó.

Az viszont ijesztő, hogy nem fejlesztik, bár, ha működik, nekem megfelel. Picit azért ijesztettél meg, mert szeretem, ha egy project nincs magára hagyva. Aztán, mire kellő körültekintéssel meghoztam a döntést, hogy ez kell nekem, addigra kiderül, nem fejlődik.

Egyelőre megtartom, mert

- tetszik, hogy a backup-ból file-osan kinyerhető bármi, nem kell saját utility, megteszi egy mc, vagy egy cp parancs

- van inkrementális backup a korábbi állapotokból

- ugyanakkor a bázis, tehát a teljes mentés mindig a legutóbbi, így nem kell néha teljes mentést csinálni, lehet örökké csak inkrementálisat, továbbá az érhető el könnyen, amire várhatóan a leginkább szükség van

- noha a legutóbbi lesz a teljes mentés, még sem mozog minden adat, hiszen az rsync algoritmusával csak a változásokat kell átvinni

Nagyjából ezek miatt maradtam az rdiff-backup-nál.

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