Benno MailArchiv хранит свои данные по разным путям.
/srv/benno/archive/repo /srv/benno/archive/index/srv/benno/inbox/var/lib/benno-web Электронные письма хранятся в сжатом виде в репозитории. Репозиторий занимает значительно больше места в файловой системе архива. Из репозитория не удаляются никакие электронные письма, поэтому резервная копия должна сохранять только те файлы, которые были добавлены с момента последнего резервного копирования.
В данном случае хорошим вариантом будет простое инкрементальное резервное копирование сети с использованием системных инструментов.
Простую инкрементальную резервную копию локально смонтированной сетевой папки можно реализовать с помощью простого скрипта.
#!/bin/sh # # BACKUPDIR = / backup / benno-mailarchiv ARCHIVE_DIR = / srv / benno TS_FILE = $ARCHIVE_DIR / .last_backup START_DATE = ` date + % Y % m % d % H % M. %S` if [ ! -f $ TS_FILE ] ; then touch -t 200001010000 $ TS_FILE fi / usr / bin / find $ ARCHIVE_DIR -depth -newer $ TS_FILE -print | \ tar -T --cf $ { BACKUPDIR } / benno-backup_$ ( date + % Y- % m- % d_ % H- % M- % S ) .tar touch -t $START_DATE $TS_FILE
#!/bin/sh # # BACKUPDIR = / mnt / backup / $hostname ARCHIVE_DIR = / srv / benno TS_FILE = $ARCHIVE_DIR / .last_backup START_DATE = ` date + % Y % m % d % H % M. % S` if [ ! -f $ TS_FILE ] ; then touch -t 200001010000 $TS_FILE fi / usr / bin / find $ARCHIVE_DIR -depth -newer $TS_FILE -print | \ / bin / cpio --pass-through --preserve-modification-time --make-directories \ $BACKUPDIR touch -t $START_DATE $TS_FILE
Резервная машина запускает скрипт на машине, которую необходимо скопировать, через SSH, который создает архив cpio из всех новых файлов (benno2-create_cpio). Затем этот архив передается через SSH на хост резервного копирования и обрабатывается там другим скриптом.
# Резервное копирование почтового архива Benno с удаленного хоста # # Резервное копирование Benno 20 1 * * * root ssh benno.lw-systems.net '/usr/local/sbin/benno2-create_cpio' | sh /usr/local/sbin/benno2-extract_cpio
Этот скрипт копируется в каталог «/usr/local/sbin» на резервной машине.
#!/bin/sh # # cd /rsnapshot/benno-backups /bin/cpio -i \ --make-directories \ --no-absolute-filenames \ --preserve-modification-time
На машине, резервная копия которой будет создана, скрипт для генерации потока данных CPIO создается в каталоге "/usr/local/sbin".
#!/bin/sh # # ARCHIVE_DIR=/srv/benno TS_FILE=$ARCHIVE_DIR/.last_backup START_DATE=`date +%Y%m%d%H%M.%S` /usr/bin/find $ARCHIVE_DIR -newer $TS_FILE | \ /bin/cpio -o touch -t $START_DATE $TS_FILE
Внимание : Для инициализации необходимо создать файл .last_backup.
touch -t 200001010000 /srv/benno/.last_backup
Индексные данные проиндексированных электронных писем хранятся в каталоге индекса.
Запись индексных файлов происходит только в процессе фиксации изменений. Индекс фиксируется не позднее чем через 10 секунд после записи в него последнего электронного письма.
Таким образом, резервное копирование может быть выполнено на основе снимка жесткой ссылки.
/etc/init.d/benno-archive stop sleep 10 cp -al /srv/benno/index /srv/benno/index_backup /etc/init.d/benno-archive start
Теперь можно безопасно создать резервную копию каталога /srv/benno/index_backup.
Здесь легко можно создать резервную копию файла.