Автоматическое резервное копирование вашего сайта (блоги, форум и т. д.)

  • Автор темы GameAgregator
  • 23
  • Обновлено
  • 17, May 2024
  • #1
Вероятно, я учу вас всех сосать яйца, но вот как я делаю резервные копии своих серверов без присмотра, в том числе за пределами площадки.

Надеюсь, некоторые найдут это полезным.

Я использую этот метод на форумах WordPress и IPS/VB. Первый шаг — определить, какой режим резервного копирования вы бы хотели использовать.

Я делаю ежедневное, еженедельное и ежемесячное резервное копирование, поэтому у меня есть 3 файла php (по одному для каждого типа). Вот как выглядит мой daily_backup.php:
 #Sync to Dev

0 2 * * * localuser /usr/bin/rsync -avz -e "ssh -p 4001 -i /localuser/.ssh/id_rsa" /user/backup/ [email protected]:/home/remoteuser/backup

0 2 * * * localuser /usr/bin/rsync -avz -e "ssh -p 4001 -i /localuser/.ssh/id_rsa" /nonssddisk/backup/ [email protected]:/home/remoteuser/backup
PHP: Там много чего происходит, так что давайте разберемся.... Я использую хост на базе SSD с подключенным диском без SSD большего размера.

Когда мои последние резервные копии устареют на пару дней, я перемещаю их на диск без SSD.
 # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed #Daily Backup 0 1 * * * user /usr/bin/php /user/backup/daily_backup.php
PHP: Далее идет сброс и архивирование базы данных сайта.

Я всегда добавлял время и дату к имени файла.
  $command = "find /nonssddisk/backup/daily/ -mtime +3 -exec rm -r {} \;"; system($command); 
PHP: Теперь мы архивируем файлы сайта, то есть все, что не хранится в базе данных.
  $backupFile = '/user/backup/daily/site_daily-' . date("Y-m-d-H-i") . '.tgz'; $command = "tar -czf $backupFile /path/to/html/files/"; system($command); 
PHP: Наконец, мы удаляем все старые резервные копии.
  $backupFile = '/user/backup/daily/sql_daily-' . date("Y-m-d-H-i") . '.gz'; $command = "mysqldump --defaults-extra-file=/user/.my.cnf -u user -h localhost DatabaseName | gzip > $backupFile"; system($command); 
PHP: PHP-скрипт резервного копирования готов, теперь нам нужно обеспечить его запуск каждый день.

Для этого создайте задание cron:
  $command = "find /user/backup/daily/ -mtime +2 -exec mv {} /nonssddisk/backup/daily/ \;"; system($command); 
Код (разметка): теперь он обеспечивает автоматическое ежедневное резервное копирование вашего сайта, которое хранится локально на этом сайте.

Сделайте то же самое для еженедельных и ежемесячных сценариев.

Последняя часть головоломки — создать внешнюю копию.

Этого можно добиться множеством способов, например, используя Amazon S3, FTP или, в этом примере, Rsync с другим сервером.
 <?php date_default_timezone_set("Australia/Brisbane"); $command = "find /user/backup/daily/ -mtime +2 -exec mv {} /nonssddisk/backup/daily/ \;"; system($command); $backupFile = '/user/backup/daily/sql_daily-' . date("Y-m-d-H-i") . '.gz'; $command = "mysqldump --defaults-extra-file=/user/.my.cnf -u user -h localhost DatabaseName | gzip > $backupFile"; system($command); $backupFile = '/user/backup/daily/site_daily-' . date("Y-m-d-H-i") . '.tgz'; $command = "tar -czf $backupFile /path/to/html/files/"; system($command); $command = "find /nonssddisk/backup/daily/ -mtime +3 -exec rm -r {} \;"; system($command); ?>
Код (разметка):

GameAgregator


Рег
05 Mar, 2014

Тем
1

Постов
2

Баллов
12