![口是心非全卷恢复,丢失一些文件和服务](https://linux22.com/image/154350/%E5%8F%A3%E6%98%AF%E5%BF%83%E9%9D%9E%E5%85%A8%E5%8D%B7%E6%81%A2%E5%A4%8D%EF%BC%8C%E4%B8%A2%E5%A4%B1%E4%B8%80%E4%BA%9B%E6%96%87%E4%BB%B6%E5%92%8C%E6%9C%8D%E5%8A%A1.png)
我在 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):
- /tmp
- /进程
- /系统
- /启动
- /dev
- /mnt
- /丢失+找到
- /光盘
- /交换文件
- /vmlinuz
- /vmlinuz.old
- /initrd.img
- /initrd.img.old
我想要完整备份,因此我将其设置/
为 .scw-configrc 中的源:
export SOURCE="/"
我对 GPG 密钥或连接到存储桶没有任何问题。我遇到的问题是,即使我使用 运行备份脚本sudo
,它似乎也没有备份某些文件,因此当我在新服务器实例上进行完全恢复时,某些服务会丢失。
当我尝试使用 进行从源服务器到新实例的完整复制时rsync
,这些相同的服务复制并成功运行。其中一个例子是postgres
和。我可以知道的是,所有三个服务都在不同的用户而不是 root 下运行。 postgresql 和 postfix 都位于 下,似乎缺少很多文件,而 jenkins 运行于,也缺少文件。jenkins
postfix
/usr/lib
/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/