Бакап общих папок на внешний жесткий диск это безусловно хорошо. Но хотелось бы что-то более надежное. Волею случая имею порядка 400Gb на Яндекс-Диске, почему бы этим и не воспользоваться? Итак пишем скрипт backup.sh
Забегая вперед - параметры вызова скрипта: backup.sh параметр1 параметр2 где
параметр1 - (обязательный параметр) папка общего доступа;
параметр2 - подпапка первого параметра, не обязательный параметр
Порядок действий:
1)Устанавливаем и настраиваем CloudSync
2) Создаем скрипт со следующим содержимым:
#!/bin/ash
if ! [ -n "$1" ]; then
echo "No parameters found. "
exit
fi
TO='/volume1/YAD/ARC' #пака для архивирования, синхронизирующаяся с облачным сервисом
WEB='/volume1/web' #каталог с сайтами
PHOTO='/volume1/photo' #каталог фотостанции
SQL='пароль_рута_BD'
PASS='пароль_на_ZIP_архив'
if [ $1 = "photo" ]; then
echo "Start backup photo"
if [ -d $PHOTO/$2/ ] | [ -n "$2" ]
then
PHOTO=$PHOTO/$2
TO=$TO/photo
fi
rsync -avP --delete --exclude @eaDir/ --exclude "Thumbs.db" $PHOTO $TO
exit
fi
#здесь предполагается, что ВСЕ сайты распределены по подкаталогам директории web (т.е. на виртуальных хостах), а имя базы данных равно его подкаталогу, если у вас не так - стоит пофантазировать
if [ $1 = "web" ]; then
echo "Start backup WWW"
if [ -d $WEB/$2/ ] | [ -n "$2" ]
then
dir=$2
rm $WEB/$dir/*.sql
rm $TO/web/$dir.zip
mysqldump -hlocalhost -uroot -p$SQL --default-character-set=utf8 -N $dir > $WEB/$dir/$dir.sql
zip -P $PASS -r -5 $TO/web/$dir.zip $WEB/$dir/ -x "*/@eaDir/*" -x "*Thumbs.db*"
exit
fi
rm $TO/web/*.sql
mysqldump -hlocalhost -uroot -p$SQL --default-character-set=utf8 -A > $TO/web/databases.sql #дамп всех баз
for dir in `ls -F1 $WEB/ | grep -e ./ | tr -d \/`
do
if [ -f $WEB/$dir/nobackup.txt ] || [ $dir = '@eaDir' ] #если в каталоге присутствует файл "nobackup.txt" не архивируем его
then
continue
fi
rm $WEB/$dir/*.sql
rm $TO/web/$dir.zip
mysqldump -hlocalhost -uroot -p$SQL --default-character-set=utf8 -N $dir > $WEB/$dir/$dir.sql #дамп конкретной базы
zip -P $PASS -r -5 $TO/web/$dir.zip $WEB/$dir/ -x "*/@eaDir/*" -x "*Thumbs.db*"
done
exit
fi
arc=$1.zip
dir=/volume1/$1
if [ -d $dir/ ]; then
if [ -d $dir/$2/ ] | [ -n "$2" ]
then
dir=/volume1/$1/$2
arc=$2.zip
fi
echo "Start backup directory "$dir
if [ -f $TO/$arc ]; then
rm $TO/$arc
fi
zip -P $PASS -r -5 $TO/$arc $dir/ -x "*/@eaDir/*" -x "*Thumbs.db*"
fi
Понятно что volume1 можно заменить на любой другой смонтированный раздел
3) выставляем права на скрипт
chmod +x backup.sh
Пример вызова скрипта:
DS> /volume1/homes/admin/backup.sh photo 2014