
В настоящее время я запускаю скрипт в Leopard каждые несколько дней, чтобы убедиться, что я создал резервную копию своих данных на удаленном сервере, используя:
#!/bin/bash
rsync -avvz ~/Documents ~/Workspace -e ssh [email protected]:~/Backup/
У этого метода есть ограничения, например, я не могу просматривать файлы, которые были удалены несколько резервных копий назад. Каков наилучший способ автоматизировать этот процесс?
решение1
Можно ли настроить cron-задание в Leopard?
Примеры опций rsync (-avvz) не удаляют файлы в каталоге 'remote', которые были удалены из локального каталога с момента более раннего резервного копирования. Они должны все еще находиться в удаленном каталоге.
Но ваш пример сбивает с толку: вы копируете файлы из ~/Documents в ~/Workspace или в ~/Backup/ на myhost.com?
Это может быть особенностью Leopard, но похоже, что вы просто копируете из ~/Documents в ~/Workspace, в этом случае остальная часть строки может быть проигнорирована (и вам не нужно вызывать ssh)
Вам также следует рассмотреть возможность завершения спецификации исходного каталога символом /.
Я согласен с Питером, что ротация резервных копий — это хорошо, если у вас есть доступное место на диске.
решение2
Вы ищетеrdiff-резервное копирование. Это очень, очень хорошо.
решение3
Я обнаружил, что пакет rsnapshot очень хорош, он доступен во всех дистрибутивах, и только что установил его на свой Mac.
Это оболочка для rsync, которая обеспечивает инкрементальное резервное копирование, включая ежечасное, ежедневное, еженедельное и ежемесячное.
решение4
Я запускаю это задание cron каждый день в 5:30 утра:
#! /bin/bash
echo -n "cleaning remote database...";
ssh wf ./bin/mysql-clean;
echo "Done";
echo -n "running remote backup script...";
ssh wf ./bin/mysql-backup;
echo "Done";
scp wf:~/mysql-`date +%Y-%m-%d`.sql.bz2 /storage/mysql/;
Затем на моем веб-хостинге у меня есть скрипт mysql-clean, который очищает мою базу данных и удаляет весь хлам. mysql-backup по сути просто mysqldump, пропущенный через bzip2, затем именующий его в соответствии с датой. У меня также есть скрипт, который берет последний файл резервной копии, распаковывает его, очищает локальную базу данных mysql, затем вставляет все данные из файла резервной копии.