linux bash: backup mysql na ftp

Taki przykład prostego backupu bazy mysql na serwer ftp.
Baza będzie skompresowana do pliku tar.bz.

Na serwerze jest struktura katalogów:
katalog_główny/dzień_tygodnia np. backupy/2 dla wtorku. itd…
oto skrypt:

#!/bin/bash
# Backup zrzutu bazy na ftp
#
nazwa=TWOJA_NAZWA_PLIKU_`date +'%d%m%Y_%H%M%S'`.sql
MYSQL_HOST=ADRES_SERWERA_MYSQL
MYSQL_USER=UŻYTKOWNIK_MYSQL
MYSQL_PASS=HASŁO_MYSQL
MYSQL_DB=NAZWA_BAZY
FTP_HOST=ADRES_SERWERA_FTP
FTP_USER=UŻYTKOWNIK_FTP
FTP_PASS=HASŁO_FTP
FTP_MAIN_DIR=GŁÓWNY_KATALOG_Z_BACKUPAMI
LOCAL_DIR=KATALOG_ZE_SKRYPTEM

mysqldump --add-locks --routines --triggers --quick -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASS --add-drop-database $MYSQL_DB > $nazwa
tar cjf $LOCAL_DIR/$nazwa.tar.bz $nazwa
rm $nazwa

ftp -inv $FTP_HOST<<ENDFTP
user $FTP_USER $FTP_PASS
cd $FTP_MAIN_DIR/`date +'%u'`
mdelete *.*
bin
lcd $LOCAL_DIR
put $nazwa.tar.bz
bye
ENDFTP

rm $nazwa.tar.bz

Można to zapakować w plik backup.sh, nadać mu uprawnienia chmod 700 backup.sh a następnie odpalać jak niżej:

sh backup.sh >/dev/null

2 thoughts on “linux bash: backup mysql na ftp

  1. Czy nie wydajniej byłoby zapisywać tylko diff nowej i poprzedniej wersji DB, skoro dump ma być przez sieć?

Comments are closed.