Ещё в июле месяце я подготовил этот материал по просьбам читающих, но так и не смог выложить в сеть, т.к. попал в аварию.. Итак, меньше слов 🙂
Остановимся на некоторых настройках:
TMP_DIR – временная директория. Указывайте существующую директорию, она всё равно будет очищаться после заливки бекапа на FTP.
DBLIST – базы данных, которые нужно бекапить.
$TAR cfP watch.felix90.ru.tar /home/user/watch.felix90.ru – делает бекап той или иной директории. Пример:
$TAR cfP felix90.tar /home/user/felix90.ru $TAR cfP site.ru.tar /home/user/site.ru $TAR cfP google.com.tar /home/user/google.com $TAR cfP porno.tar /home/user/porno
Вроде всё. Сам скрипт:
#!/bin/bash
# System setting
DBUSER="user"
DBPASS="password"
DBHOST="localhost"
DBLIST="database1 database2 database3"
NOW=$(date +%d-%m-%Y-%H-%M)
TMP_DIR=/root/backup
ARCHIVE_NAME=backup-$NOW.tar.gz
ARCHIVED_DIR=$TMP_DIR/$NOW
OK='\E[47;34m'"\033[1m Done \033[0m\n"
# FTP setting
FTPD="/"
FTPU="user"
FTPP="password"
FTPS="ftp.domain.com"
# Binaries
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQLDUMP="$(which mysqldump)"
echo -en "Backup sites... "
mkdir $ARCHIVED_DIR
mkdir $ARCHIVED_DIR/db
mkdir $ARCHIVED_DIR/sites
cd $ARCHIVED_DIR/sites
$TAR cfP watch.felix90.ru.tar /home/user/watch.felix90.ru
echo -en $OK "Backup database... "
for DB in $DBLIST; do
FILE=$ARCHIVED_DIR/db/$DB.gz
$MYSQLDUMP -u $DBUSER -h $DBHOST -p$DBPASS $DB | $GZIP -9 > $FILE
done
echo -en $OK "Data archiving..."
cd $TMP_DIR
$TAR czfP $ARCHIVE_NAME $ARCHIVED_DIR
echo -en $OK "Copying file: "
# ftp backup
cd $TMP_DIR
DUMPFILE=$ARCHIVE_NAME
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
cd $FTPD
mput $DUMPFILE
quit
END_SCRIPT
echo -en "to FTP... " $OK "Delete temporary data... "
cd $TMP_DIR
rm -rf *
echo -en $OK '\E[47;34m'"\033[1m Backup completed \033[0m\n"
Комментируйте 🙂
Copying file: mput backup-16-01-2014-18-48.tar.gz? backup-16-01-2014-18-48.tar.gz: Permission denied
не могу разобраться!!!