
我在 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/