Запустил несколько сайтов на своем сервере. Куда же без систематического бэкапа?
Можно конечно делать его каждый день/неделю руками, но это не для нас
Задача:
— Ежедневный полный бэкап БД и всех файлов сайтов.
— Отправка бэкапов на удаленный ftp сервер.
— Удалять старые бэкапы.
Конечно будем выполнять все через консоль.
Сразу покажу итоговый файл в котором в комментариях всё описано:
#!/bin/bash # данные для подключения к БД MyUSER="root" MyPASS="password" MyHOST="127.0.0.1" # Локальный каталог, куда будем складывать бэкапы DEST="/home/backup" #генерируем дату DATE=`/bin/date '+%Y.%m.%d'` #Генерируем путь и имя бэкапа БД FILE="$DEST/$DATE.sql.gz" # оптимизация(если не нужна - комментируем) #mysqlcheck -u $MyUSER -p$MyPASS --auto-repair --check --optimize --all-databases >/dev/null 2>&1 # сохраняем дамп mysql (Я юэкаплю БД полностью --all-databases) mysqldump -u $MyUSER -p$MyPASS --all-databases --single-transaction | gzip -9 > $FILE # архивируем все каталоги /bin/tar -czvf $DEST/$DATE.tar.gz /var/www/sites/ # удаляем архивы, которым уже больше семи дней /usr/bin/find $DEST -type f -name *.gz -atime +7 -exec rm -f \{\} \; >/dev/null 2>&1 #Отправка бэкапа на ftp хранилище ftp -n 192.168.200.97 << INPUT_END quote user userlogin quote pass password cd backup/web put $DATE.tar.gz put $DATE.sql.gz exit INPUT_END |