Я хотел бы отразить каталог резервных копий, используемый rsnapshot, во втором месте для большей безопасности. В идеале решение должно использовать rsync с ssh. Какие аргументы мне нужно предоставить rsync для сохранения жестких ссылок (созданных rsnapshot) и символических ссылок, для удаления файлов, рекурсивного копирования, удаления файлов в цели и т. д.? Все файлы находятся в файловой системе ext3. Кроме того, что я могу сделать, чтобы избежать возможности того, что, если источник поврежден, дефекты будут синхронизированы с зеркалом?
Зеркальное отображение каталога резервных копий rsnapshot
Ответы (2)
Я думаю, что варианты делать то, что вы хотите, в основном задокументированы на странице руководства rsync
. В частности, параметр -H
(--hard-links
) включает обнаружение жесткой связи, а --delete
заставит rsync удалить в месте назначения то, чего нет в источнике. Так что, может быть, что-то вроде:
rsync -aH --delete /path/to/src/ /path/to/destination
Кроме того, что я могу сделать, чтобы избежать возможности того, что, если источник поврежден, дефекты будут синхронизированы с зеркалом?
Ну, это сложно. Как обнаружить коррупцию? Я думаю, что единственное реальное решение состоит в том, чтобы разбить резервную копию вашей резервной копии (то есть выполнить фактические резервные копии в основное место назначения, а затем выполнить rsync во вторичное место назначения непосредственно перед следующим запуском резервного копирования). Таким образом, если вы обнаружите проблему, у вас есть время до следующего запуска резервного копирования, чтобы вернуть все обратно.
Другим решением может быть rsnapshot
резервное копирование в несколько мест назначения, чтобы вы фактически создавали резервные копии из исходного источника в двух разных местах. Таким образом, если один будет поврежден, второй не будет затронут.
Чтобы предотвратить копирование поврежденных данных, вы можете еженедельно делать резервную копию и надеяться, что вы заметите повреждение в источнике до того, как потеряете все свои резервные копии. Лучшим способом было бы использовать -c, а затем он сравнит контрольные суммы как источника, так и получателя, чтобы определить, следует ли копировать файл. Единственным недостатком является то, что он должен читать весь файл, что делает резервное копирование более медленным процессом.
#!/bin/sh
# Create a Backup of Today
# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)
# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago
mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username
rsync -aHvz /storage/`date --date=yesterday +\%Y-\%m-\%d`-`date --date=yesterday +\%A`/$host/$user/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/
rsync -acHvz -e ssh --delete --exclude='logs' [email protected]:/home/tim/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/
rsnapshot-copy currently is not designed for incremental mirroring of a snapshot root (though an incremental mode may be added in the future).
Есть идеи, как это поддержать? - person highsciguy   schedule 07.09.2012