automaticke zalohovanie

Dobry den,

chcel by som sa spytat ci je nejako mozne (programom alebo nejakou vlastnostou fedory7) nastavit automaticke zalohovanie definovanych adresarov (kopirovanie alebo pakovanie) do preddefinovaneho adresara. Malo by to umoznovat nastavit aj casovy usek pre zalohovanie.

Dakujem.

Tak to by mě také zajímalo. Ne že by nic neexistovalo, ale žádný z těch programů jsem nějak nepochopil.

Udělal jsem si proto vlastní řešení. Mám skript, který mi zazálohuje vybrané adresáře, resp. je zabalí a při změně nahraje na FTP. Jako součást názvu toho souboru dá aktuální hodinu, ve které se to zabalilo (aby byla záloha min. den nazpět).

Skript vypadá takto:

jmeno_archivu=zdrojaky-`date +"%H"`
jmeno_archivu_cele=zdrojaky-`date +"%H"`.rar
jmeno_archivu_obecne=zdrojaky-*.rar
cesta_k_archivu=~ales/zaloha
cesta_k_adresarum=~ales/zaloha/adresare
pripony='faktura*.pdf *.bib *.c *.cpp *.htm *.html *.java *.lisp *.od? *.php *.py *.sh *.st *.svg *.tex *.txt'
zabalovac='rar a -pHESLO_ARCHIVU -s'

rm $cesta_k_archivu/$jmeno_archivu.rar

cd $cesta_k_adresarum/bezpodadr.pripony
for adresar in *; do
  cd $adresar
  $zabalovac $cesta_k_archivu/$jmeno_archivu $pripony
  cd ..
done

cd $cesta_k_adresarum/cele
$zabalovac -r $cesta_k_archivu/$jmeno_archivu *.*

cd $cesta_k_adresarum/cele.pripony
$zabalovac -r $cesta_k_archivu/$jmeno_archivu $pripony


velikost_predposledniho=`ls -l --sort=time $cesta_k_archivu/$jmeno_archivu_obecne | tail --lines=+2 | head --lines=1 | cut -b23-30`
velikost_posledniho=`ls -l --sort=time $cesta_k_archivu/$jmeno_archivu_obecne | head --lines=1 | cut -b23-30`

if [ $velikost_predposledniho = $velikost_posledniho ]; then exit; fi

echo "Nahravam na FTP..."
ftp -i -n << EOF
open ftp.example.com
user ftp.example.com HESLO_NA_FTP
put $cesta_k_archivu/$jmeno_archivu_cele $jmeno_archivu_cele
quit
EOF

Funguje to tak, že v adresáři $cesta_k_adresarum mam 3 adresáře, ve kterých jsou symbolické odkazy na skutečné adresáře, které se mají zabalit. Ty 3 adresáře jsou:
bezpodadr.pripony - zabalí soubory jen s danými připonami bez podadresářů
cele - zabalí celý adresář komplet
cele.pripony - zabalý celý adresář jen s danými příponami

Když se soubor od poslední zálohy změní, nahraje se pak na FTP.
Tohle celé pouštím každou hodinu cronem.

Používám RAR, protože ZIP neumí “solid” archiv a tar, gzip ani bz2 neumí zabalit pod heslem (?). Alternativou je ještě 7zip.

Dá se s tím dost vyhrát :slight_smile: Kdyby měl někdo nějaké elegantnější řešení, uvítal bych ho :slight_smile:

Jako obstojny software na zalohovani vetsiho mnozstvi stroju pouzivame backupPC. K dispozici je jeste amanda… nevim ale jesli to splni vase naroky, resp. neni to urcene k trochu jinemu ucelu - ktery neni potreba. Potom i kybluv skript je slusne reseni…

2kybl: co znamena “solid” archiv?

covex:
Nevím jak ten “solid” archiv přeložit. Jedná se ale o to, že zabalovač bere všechny soubory jako jeden velký soubor, tj. nezabaluje je zvlášť, ale třeba druhý soubor může zabalit na základě obsahu prvního souboru. Pokud je hodně malých podobných souborů, úspora je to značná. Zase se ale při rozbalování musí rozbalit i všechny předešlé soubory.

Když se to zabalí přes tar.bz2, je to podobné, jenže bzip v tomto případě zabalí celý tar i s názvy souborů. Takže nejde jednoduše zobrazit seznam souborů v archivu, aniž by se musel celý rozbalit. Rar takhle vylistovat jde.

Dakujem za rady.
Moje poziadavky su znacne jednoduchsie - proste 1x denne odzalohovat - prekopirovat mysql databazu z mysql adresara do ineho adresara…
Sem tam potom zalohu napalim…

Moj skript ulozeny v cron.daily vyzera takto ;-D

#!/bin/bash
adresar=date +"%Y%m%d_%H%M%S"
mkdir /home/sps/html/zal_mysql/zps/$adresar
cp /var/lib/mysql/zps/. /home/sps/html/zal_mysql/zps/$adresar/