Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Automaticke zalohovani po pripojeni usb disku  (Přečteno 6990 krát)

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Automaticke zalohovani po pripojeni usb disku
« kdy: 26 Května 2012, 14:35:34 »
ahoj ..

pri cteni jednoho tematu tady ohledne zalohovani jsem si vzpomel na jeden svuj stary skript, kterej jsem tenkrat pouzil asi na 3 serverech .. bohuzel skript jsem uz nemel, tak jsem ho podle sveho nejlepsiho vedomi jen napsal znova v temer identicke podobe, jak fungoval driv:

funguje to nasledovne:

- na serveru bezi 24/7 skript, ktery kazdych x minut ($main_loop_rate) polluje blkid, jestli neni pripojen duveryhodny usb disk, na ktery provedeme zalohovani
- ve chvili, kdy je disk pripojen, se provede par testu (napriklad na zalohovaci heslo - nijak nesouvisi s heslama v systemu a syntaxi zalohovaciho skriptu) a zalohovaci skript z disku je pak proveden
- pipanim (lze nastavit) potom server oznami, ze zaloha je skoncena, pripadne ze se ji nepovedlo nastartovat kvuli spatnemu zalohovacimu skriptu nebo v pripade jiz provedene zalohy tento den (viz nize)

navod:

- skript si hodte nekam do etc.init.d/ aby se spoustel po kazdem startu
- upravte primo ve skriptu hodnoty promenych aby vyhovovaly vasemu nastaveni
- do cronu hodte ulohu ze jednou (2x, kolikrat chcete) denne se v nejaky cas (u me 17:00) obnovi /tmp/.backup_enabled (po kazdem provedeni zalohovaciho skriptu je tento trigger smazan a nova zaloha je mozna kazdy den od 17:00 - ve skriptu $key_f)
- vytvorte si sadu zalohovacich skritpu (bez #!/bin/bash na zacatku) a ty muzete podle nejakeho scenare pouzivat pomoci exe_f=$mnt_d/.orders
- vetsina veci je logovana jak do syslogu tak runtime tech skriptu
- po kazdem (byt nepovedenem) pouziti je treba vytvorit soubor s heslem na zalohovacim disku pomoci: echo heslo >$soubor

shrnuti:

- tento skript bezici na serveru vam dovoli krasne neinteraktivni zalohu, kdy jen pripojenim duveryhodneho blokoveho zarizeni provedete sadu prikazu (obvykle zalohovacich) a ono vam to pipanim vse rekne

stahujte zde ..

Kód: (http://starenka.net/ntz/auto_backup_ubu.sh) [Vybrat]
#!/bin/bash
#
# mnt_d mountpoint pro backup disk .. nesmi byt obsazen, neni zde check, musi byt unikatni, nesmi obsahovat trailing "/"
# pwd_f soubor s heslem, vytvori se pomoci: echo nejake_heslo > $cesta_na_zarizeni .. po kazdem (byt neuspesnem) pokusu je smazano
# exe_f skript s backup instrukcema .. muze obsahovat cokoliv, neprovadi se jako root, jeho beh je zaznamenan v $debug_log a po provedeni nakopirovan z5 na backup zarizeni
# usr_b jmeno uzivatelskeho uctu, pod kterym se backup provede. nesmi (nemel by) byt root
# key_f trigger. Obnovuje se cronem denne v 16:00 .. je tedy mozne jen jedno provedeni $exe_f za 24 hodin
# disk_uuid uuid disku, ktery je duveryhodny a na ktery backupujeme
# password ocekavany md5sum souboru s heslem
# debug_log vyse zmineny log behu zalohovaciho skriptu $exe_f
# mount_method metoda, jakou se provede pripojeni .. nutno zmenit pro sve potreby, zde je predpoklad ntfs|vfat disku
# umount_method metoda pro odpojeni .. -lf je pomerne nasilne .. mozna klidne jen cistej umount staci
# main_loop_rate standardni delka hlavniho loopu co bezi 24/7 .. probehne polling blkid .. casy kolem 60-120 sekund jsou primerene
# success_rate interval, v jakem se bude opakovat _make_warn v pripade uspechu .. default je pipani jednou za 10 sekund
# error_rate interval, v jakem se bude pipat pri failu, default je 5 sekund .. v soucasne chcili znamena fail ze se nepodarilo disk odpojit, nemelo by nikdy nastat
# bad_config_rate interval, v jakem se bude opakovat _make_warn v pripade spatne configurace: nepripojenej_disk, syntax error v $exe_f nebo nesedi/neexistuje heslo v $pwd_f
# _make_warn() akce, co se provadi v danych intervalech

### TODO
## support for more disks - eg to can have more then one trusted disk_uuid
## support for trusted script repository, probably md5sum checks
## better resolution of final actions (eg current is only _make_warn() in several intervals)


#### debug saved to this semi-hardcoded path, uncomment if you want, beware, log file then constantly grows
#set -x;
#exec 2>/tmp/auto_backup.log

mnt_d=/mnt/backup;
pwd_f=$mnt_d/.password;
exe_f=$mnt_d/.orders
usr_b=backup;
key_f=/tmp/.backup_enabled;
disk_uuid=902A-8B8A;
password=286755fad04869ca523320acce0dc6a4;
debug_log=/tmp/last_backup_log.txt;
mount_method="mount -vv -o rw,uid=$usr_b,gid=users";
umount_method="umount -lf";  ### probably not needed to *nuke mountpoint
main_loop_rate=120;
success_rate=10;
error_rate=5;
bad_config_rate=2;

_make_warn() {
echo -e '\007';
# echo remove drive | wall;
};

while sleep $main_loop_rate; do
        _disk=`blkid | grep "$disk_uuid"`;
_id=$RANDOM;
_run=1;
if ! test -z "$_disk" && test -f "$key_f"; then
$mount_method `echo $_disk | sed 's/:.*//'` $mnt_d 2>&1 | logger;
sleep 2;
sync;

#### Backup execution
if grep $mnt_d /etc/mtab >/dev/null && test "$(md5sum $pwd_f | sed 's/\s.*//' 2>/dev/null)" == "$password" && bash -n $exe_f; then
cp $exe_f /var/tmp/bckp_`date +%Y%m%d%H%M%S-$_id` 2>/dev/null;
cat << EOF | logger;
#### $(date) id: $_id
#### starting with executing /mnt/backup.orders
EOF

su $usr_b -c "set -x; exec 2>$debug_log; . $exe_f; set +x";

cat << EOF | logger;
#### $(date) id: $_id
#### finished execution of /mnt/backup.orders
EOF
cp $debug_log $mnt_d;
rm -f $key_f 2>/dev/null;
unset _run;
fi
#### End of execution, umount phase follows, from here comes error_rate in case of umounting fails

rm -f $pwd_f 2>/dev/null;
sync;
while sleep $error_rate; do
$umount_method $mnt_d 2>/dev/null;
if ! grep $mnt_d /etc/mtab >/dev/null; then
break;
fi
_make_warn;
done

#### Once umounted then 2 possible cases could happen
#### success when $_run is unset or bad_config when not
if test -z "$_run"; then
echo "#### backup loop id: $_id successful finished" | logger;
while sleep $success_rate; do
if ! blkid | grep $disk_uuid >/dev/null; then
break;
fi
_make_warn;
done
else
while sleep $bad_config_rate; do
if ! blkid | grep $disk_uuid >/dev/null; then
break;
fi
_make_warn;
done;
fi
fi
unset _disk;
unset _id;
done

zdravim, ntz
« Poslední změna: 26 Května 2012, 17:30:51 od ntz_reloaded »
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #1 kdy: 26 Května 2012, 14:36:25 »
TODO mam uvedeny, klidne mi to dodelejte a postnete sem ..
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #2 kdy: 04 Července 2014, 14:08:18 »
heh .. pekne funguje vyhledavani .. prave jsem znova pouzil :)
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #3 kdy: 04 Července 2014, 14:25:28 »
Hele nebylo by hezčí použít udev a pravidla? Pak bys tam nemusel mít ten xminutovej pool blkid ...
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #4 kdy: 04 Července 2014, 14:30:13 »
Hele nebylo by hezčí použít udev a pravidla? Pak bys tam nemusel mít ten xminutovej pool blkid ...
urcite by to slo .. ale psal jsem to pred 5+ vice lety :P

a abych se priznal ani ted bych se nepoustel do studovani udevu .. jednou za 2 minuty blkid na serveru je podle me uplne jedno
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #5 kdy: 04 Července 2014, 15:00:18 »
Což jedno to je, akorát když tam flashku kuchneš, čekáš ty dvě minuty, než se detekuje a spustí záloha :)
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #6 kdy: 04 Července 2014, 15:08:52 »
Což jedno to je, akorát když tam flashku kuchneš, čekáš ty dvě minuty, než se detekuje a spustí záloha :)

a) cekas polovinu intervalu a b) kopirovani asi trva o dost dyl :)
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

Myrmica

  • Závislák
  • ***
  • Příspěvků: 1701
    • MYRMICA
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #7 kdy: 04 Července 2014, 15:16:08 »
Což jedno to je, akorát když tam flashku kuchneš, čekáš ty dvě minuty, než se detekuje a spustí záloha :)

a) cekas polovinu intervalu a b) kopirovani asi trva o dost dyl :)
add a) Ano statisticky vzato je průměrná doba čekání 1/2 intervalu. (pokud ji vkládáš v náhodný čas)
add b) Předpokládám, že ráno tam flešku vrazíš odpoledne při odchodu ji vyndáš  ;) . Proč čekat než se provede záloha, ztráta času.
Stolní strojek: OS– UBUNTU 16.04 x86_64, MB ASUS P8 Z68-V/GEN3, Intel® Core™ i5-3470 CPU @ 3.20GHz × 4 , 16GiB DDR3, GeForce GTX 670...
Notebook: ASUS U53Jc OS– UBUNTU 16.04 x86_64, Windows 7, Processor – Intel Core i5-460M (2,53 GHz), Graphics – switchable NVIDIA GeForce 310M and Intel GMA HD

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #8 kdy: 04 Července 2014, 15:38:20 »
presne takhle je to mysleny ..
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #9 kdy: 04 Července 2014, 16:37:34 »
ted jsem si to rozchodil u sebe .. nahodou to funguje fantasticky :P

Kód: [Vybrat]
> wget starenka.net/ntz/auto_backup_ubu.sh -q
> patch -R auto_backup_ubu.sh <(wget starenka.net/ntz/foo.patch -qO-)
patching file auto_backup_ubu.sh
> chmod +x auto_backup_ubu.sh
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #10 kdy: 04 Července 2014, 16:46:32 »
Jen mne nebijte :)
Vyjadřuji jen svůj názor, že by to přes udev a pravidla bylo "čistější" :)

a) ano ano, statistika je věc kouzelná
b) a když je to pokaždé ta samá flash, resp. jedna ze setu, nebylo by hezčí tam cpát jen rozdíl? Pak by už časy spuštění a dokončení byly asi zajímavější? :)
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Myrmica

  • Závislák
  • ***
  • Příspěvků: 1701
    • MYRMICA
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #11 kdy: 04 Července 2014, 22:13:46 »
add b) brrr rozdíl, strašlivě citlivé na chyby...
Stolní strojek: OS– UBUNTU 16.04 x86_64, MB ASUS P8 Z68-V/GEN3, Intel® Core™ i5-3470 CPU @ 3.20GHz × 4 , 16GiB DDR3, GeForce GTX 670...
Notebook: ASUS U53Jc OS– UBUNTU 16.04 x86_64, Windows 7, Processor – Intel Core i5-460M (2,53 GHz), Graphics – switchable NVIDIA GeForce 310M and Intel GMA HD

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5057
    • Lomítkáři
Re:Automaticke zalohovani po pripojeni usb disku
« Odpověď #12 kdy: 04 Července 2014, 22:26:59 »
add b) brrr rozdíl, strašlivě citlivé na chyby...

Důkaz místo slibů? :)
Na docela dost místech dělám increment a pravdu díc, pokud bylo potřeba, obnova byla ok? Nicméně třeba se dozvím, že to dělám blbě :)
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

 

Provoz zaštiťuje spolek OpenAlt.