нужно бэкапить большой сайт на VDS . Что можете посоветовать из своего опыта.
пока делаю вручную через drush. но думаю подключить duplicity.
7ми дневный бэкап БД как организовать?
Главные вкладки
Лучший ответ
а теперь правильный ответ для 5 файлов:
ls -tp | grep -v '/$' | tail -n +6 | xargs -d '\n' -r rm --
или
rm `ls -t | awk 'NR>5'`
или
(ls -t|head -n 5;ls)|sort|uniq -u|sed -e 's,.*,"&",g'|xargs rm
там есть и другие варианты. мне нравится более короткий.
источник ответа https://stackoverflow.com/questions/25785/delete-all-but-the-most-recent...
Комментарии
Сколько террабайт БД?
8 гигов примерно. имена экспорта файлов БД делаю из даты и времени создания.
А после drush cr тоже 8 ГБ? Если да - большой сайт. Но не настолько чтоб скрипт бекапа писать
сайт весит 180гиг. drush cr потом попробую. бэкап нужен всегда.
Backup and Migrate
я знаю этот модуль но он мне не поможет ввиду огромного размера сайта.
для себя я поставил задачу 7 дней бэкап БД и инкрементальный бэкап файлов.
"7 дней бэкап БД" - в смысле? марафон желаний?
Делаем скрипт, который запускаем по крону:
suffix=$(date +%w%a)
rm /var/www/backup/$suffix.sql.gz
mysqldump -uuser -ppass db | gzip > /var/www/backup/$suffix.sql.gz
mysqldump можно заменить на drush sql-dump --result-file=... если угодно. Дампы создаются каждый день и старые удаляются
не совсем понятно. скрипт выдает имя которое удаляется и потом генерируется снова.
по 7ми дневным бэкапом я имею ввиду что есть файлы 1 2 3 4 5 6 7 а после герерации 8го удаляется 1й.
скрипт каждый день удаляет архив с текущим днем в названии, а потом создает новый архив с текущим днем. Таким образом у вас есть архив за неделю
а теперь правильный ответ для 5 файлов:
ls -tp | grep -v '/$' | tail -n +6 | xargs -d '\n' -r rm --
или
rm `ls -t | awk 'NR>5'`
или
(ls -t|head -n 5;ls)|sort|uniq -u|sed -e 's,.*,"&",g'|xargs rm
там есть и другие варианты. мне нравится более короткий.
источник ответа https://stackoverflow.com/questions/25785/delete-all-but-the-most-recent...
а само копирование файлов на другой сервер выглядит так:
#to get and send db
filename=$( date +%H.%M_%d.%m.%Y ).sql
tmpfolder="tmp"
tmppath="/var/www/mysite.com"
cd /var/www/mysite.com
vendor/bin/drush state:set system.maintenance_mode 1 --input-format=integer
vendor/bin/drush sql:dump --result-file=../$tmpfolder/$filename
scp $tmppath/$tmpfolder/$filename username@1.1.1.1:/var/mybackup/db
if [ $? -ne 0 ]
then
echo "Error while transfer db."
echo "Error while transfer db. getandsenddb.sh" | mail -s "Error while transfer db" user@yandex.ru
fi
rm $tmppath/$tmpfolder/$filename
vendor/bin/drush state:set system.maintenance_mode 0 --input-format=integer