
Я использую Duplicity в Ubuntu Xenial для создания и шифрования резервных копий и хранения их на S3-хранилище (Scaleway).
Вот скрипт резервного копирования, который я использую:
#!/bin/bash
source ./.scw-configrc
HOST=`hostname`
DATE=`date +%Y-%m-%d`
TODAY=$(date +%d%m%Y)
currently_backuping=$(ps -ef | grep duplicity | grep python | wc -l)
if [ $currently_backuping -eq 0 ]; then
# Clear the recent log file
cat /dev/null > ${LOGFILE_RECENT}
log ">>> removing old backups"
duplicity remove-older-than ${KEEP_BACKUP_TIME} ${SCW_BUCKET} >> ${LOGFILE_RECENT} 2>&1
log ">>> creating and uploading backup"
duplicity \
incr --full-if-older-than ${FULL_BACKUP_TIME} \
--asynchronous-upload \
--exclude-globbing-filelist exclude-list.txt \
--encrypt-key=${GPG_FINGERPRINT} \
--sign-key=${GPG_FINGERPRINT} \
${SOURCE} ${SCW_BUCKET} >> ${LOGFILE_RECENT} 2>&1
cat ${LOGFILE_RECENT} >> ${LOGFILE}
fi
Я исключаю эти файлы из резервной копии (exclude-list.txt):
- /тмп
- /проц
- /сис
- /ботинок
- /dev
- /мнт
- /потерян+найден
- /компакт-диск
- /файл_подкачки
- /vmlinuz
- /vmlinuz.old
- /initrd.img
- /initrd.img.old
Мне нужна полная резервная копия, поэтому я указываю /
в качестве источника в .scw-configrc:
export SOURCE="/"
У меня нет проблем с ключами GPG или подключением к бакету. Проблема в том, что даже при запуске скрипта резервного копирования с sudo
, он, похоже, не создает резервные копии определенных файлов, и поэтому, когда я делаю полное восстановление на новом экземпляре сервера, некоторые службы отсутствуют.
Когда я попытался сделать полную копию с исходного сервера на новый экземпляр с помощью rsync
, те же самые службы скопировались и успешно запустились. Одним из примеров этого является postgres
, jenkins
и postfix
. Я могу сказать, что все три службы работают под разными пользователями, а не под root. И postgresql, и postfix находятся под , в /usr/lib
котором, похоже, отсутствует множество файлов, в то время как jenkins запускается из /usr/bin/
, в котором также отсутствуют файлы.
Вот скрипт восстановления (хотя я почти уверен, что файлы, о которых я говорю, изначально не резервируются):
#!/bin/bash
source ./.scw-configrc
if [ $# -lt 2 ]; then
echo -e "Usage $0 <time or delta> [file to restore] <restore to>
Exemple:
\t$ $0 2018-7-21 recovery/ ## recovers * from closest backup to date
\t$ $0 0D secret data/ ## recovers most recent file nammed 'secret'";
exit; fi
if [ $# -eq 2 ]; then
duplicity -vd --force \
--rsync-options="--super --del --recursive --force --ignore-errors" \
--time $1 \
${SCW_BUCKET} $2
fi
if [ $# -eq 3 ]; then
duplicity -vd --force \
--rsync-options="--super --del --recursive --force --ignore-errors" \
--time $1 \
--file-to-restore $2 \
${SCW_BUCKET} $3
fi
Проблемы с владельцами файлов? Или я что-то делаю не так? Службы, которые, похоже, не работают, все работают из подкаталогов/usr/