Когда-то была запилена статья про резервное копирование бд, некоторых папок на фтп. Помогал этому добру планировщик.
Предыдущая статейка актуальная. В новой публикации я немного извратился с уровнем компрессии. Писать много не буду, не зачем. Выкладываю код скриптов на обозрение. Если будет желание, поделитесь своими наработками.
Итак:
mysqlbackup.sh
#!/bin/sh
MUSER="root"
MPASS="пароль"
MHOST="localhost"
FTPD="папка"
FTPU="пользователь"
FTPP="пароль"
FTPS="адрес ftp сервера"
TAR="$(which tar)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
DEST="./db_backup"
MBD="$DEST"
HOST="$(hostname)"
NOW="$(date +"%Y%m%d")"
# DO NOT BACKUP these databases, delemiter SPACE
IGN="information_schema mysql performance_schema"
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
skipdb=-1
if [ "$IGN" != "" ]; then
for i in $IGN
do
[ "$db" == "$i" ] && skipdb=1 || :
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ] ; then
MBD="$DEST/$db"
[ ! -d $MBD ] && mkdir -p $MBD || :
FILE="$MBD/$NOW.sql.gz"
$MYSQLDUMP --opt -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
FNUM="$(find $MBD/* | wc -l)"
if [ $FNUM -ge 0 ] ; then
find $MBD/* -type f -mtime 20 -exec rm -rf {} \;
fi
fi
done
ARCHIVE=$DEST
$TAR -cJf - $ARCHIVE | xz -9 -c - > mysql-$NOW.tar.gz
cd $DEST
DUMPFILE=mysql-$NOW.tar.gz
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
prompt off
binary
cd $FTPD
quote PASV
mput $DUMPFILE
quit
END_SCRIPT
rm -rf $ARCHIVE $DUMPFILE
И папки:
backup-fs.sh
#!/bin/sh
FTPD="папка на фтп"
FTPU="пользователь"
FTPP="пароль"
FTPS="адрес фтп"
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
FILE="/etc /usr/local/etc /usr/local/www/apache24/data"
NAME=$(date +"%d%m%y")
$TAR -cJPf - ${FILE} | xz -7 -c - > server-fs-$NAME.tar.xz
DUMPFILE=server-fs-$NAME.tar.xz
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
prompt off
binary
cd $FTPD
quote PASV
mput $DUMPFILE
quit
END_SCRIPT
rm -rf $DUMPFILE
Ну и cron:
# crontab -l 0 2 * * * /bin/sh /root/backup-mysql.sh 0 3 * * * /bin/sh /root/backup-fs.sh

Вы можете войти под своим логином или зарегистрироваться на сайте.