Portál AbcLinuxu, 12. května 2025 05:17

Dotaz: Záloha souborů + mysql

poky74 avatar 10.1.2010 20:13 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Záloha souborů + mysql
Přečteno: 421×
Odpovědět | Admin

Ahoj, hledal jsem nějaký elegantní způsob (nejlépe v php) jak cronem zazálohovat nějaká data (konkrétně php soubory jedné aplikace a sql tabulky - mysql).

 

Pár scriptů jsem našel, ale vždy jsem narazil na komentáře o bezpečnosti tohoto daného řešení, tak se ptám, dá se to vůbec bezpečně (co se týče ztráty dat) udělat?

 

Děkuji

Chcete Linuxové samolepky nebo Tuxe na klíče? ->

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (poky74 (tazatel))
10.1.2010 23:00 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Záloha souborů + mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Následující není v PHP ale cronem to lze :)
PHP data jsou statická data, tzn. zálohovat běžnými prostředky, například:
tar -czf mojephpdata-www.tar.gz /srv/www/aplikace

A mysql databaze (například):
mysqldump --user=dumpuser --password=heslo --add-drop-database --add-drop-table --add-locks --all-databases --comments --create-options --disable-keys --flush-logs --hex-blob --routines --single-transaction --max_allowed_packet=4M > mysql-data.sql
a pak třeba ještě:
gzip -9 mysql-data.sql

Nevidím tam žádné riziko ztráty dat (snad se nepletu :) )
co není zajištěno je:
Celkový skriptík na uchování 14-ti plných záloh může vypadat takto:
U příkazu na zálohu mysql (všech DB) je třeba vyplnit jméno a heslo zálohovacího uživatele
Při chybě to pošle email…
Pozor: adresář se zálohami je promazáván viz #delete old backups, předpokládá se, že adresář slouží jen k tomuto účelu.
#!/bin/bash
ADMIN="jmeno@domena.primarni jmeno@domena.zalozni"
HOSTNAME=`/bin/hostname`
FROM="backup@$HOSTNAME"
NOWDATE=`date +%F`
HOMEBCKP="/nejaky/treba/nfs/disk"
COUNTBCKP=14

myexit(){
 logger -p error "backup: Failure. Message: $1"
  echo "BACKUP ERROR !!! on ${HOSTNAME} Message: $1" | /usr/bin/mailx \
    -s "BACKUP ERROR: ${HOSTNAME}" -r ${FROM} ${ADMIN}
 exit $2
}

#to backup directory
cd $HOMEBCKP
if [ $? != 0 ]; then
  myexit "Error: directory $HOMEBCKP not exists" 1
fi

let "COUNTBCKP = $COUNTBCKP - 1"

#delete old backups, '2*' - only directory begin '2' - for sure :)
find ./ -depth -mtime +$COUNTBCKP -path "./2*" -delete
if [ $? != 0 ]; then
  myexit "Error: delete old backups " 109
fi

mkdir $NOWDATE
if [ $? != 0 ]; then
  myexit "Error: create backup directory " 2
fi

cd $HOMEBCKP/$NOWDATE
if [ $? != 0 ]; then
  myexit "Error: directory $HOMEBCKP/$NOWDATE not exists" 3
fi


#dump Sql
mysqldump --user=dumpuser --password=heslo  --add-drop-database --add-drop-table --add-locks --all-databases --comments --create-options --disable-keys --flush-logs --hex-blob --routines --single-transaction --max_allowed_packet=4M > $HOSTNAME-mysql-$NOWDATE.sql
if [ $? != 0 ]; then
  myexit "Error: sql dump error" 10
fi

gzip -9  $HOSTNAME-mysql-$NOWDATE.sql
if [ $? != 0 ]; then
  myexit "Error: gzip sql  error" 11
fi

#www
cd /srv
if [ $? != 0 ]; then
  myexit "Error: cd /srv/" 21
fi

tar -czf $HOMEBCKP/$NOWDATE/$HOSTNAME-www.tar.gz www
if [ $? != 0 ]; then
  myexit "Error: tar -czf www" 22
fi

logger -p info "backup: OK"

exit 0
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
11.1.2010 08:57 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Záloha souborů + mysql
Dodatek:
ten příkaz co jsem uvedl na zálohování DB je vhodný na InnoDB tabulky, pro MyISAM vymněnte přepínač
--single-transaction
za
--lock-all-tables.
Výše uvedené mysqldump příkazi NEznepřístupňují (nezamykají) tabulky v průběhu zálohy, následující již ano.

Mělo být uvedeno (i v tom scriptu) toto (vhodné pro MyISAM):
mysqldump --user=dumpuser --password=heslo --add-drop-database --add-drop-table --add-locks --all-databases --comments --create-options --disable-keys --flush-logs --hex-blob --routines --lock-all-tables --max_allowed_packet=4M > mysql-data.sql

Sorry, předchozí jsem vykopíroval ze skriptu pro zálohu stroje jen s InnoDB tabulkami.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.