備份數據是每個人都需要定期執行的最重要的任務之一。本系列向您展示如何使用三個軟件工具來備份您的重要數據。

在規劃備份策略時考慮“3 R 備份”。

  • 添加: 備份必須是冗餘的。備份媒體可能會失敗。備份存儲站點可能被損壞(火災、盜竊、洪水等)。擁有多個備份數據目的地總是一個好主意。
  • 一般來說:備份僅在您經常運行時才有用。定期安排它們並運行它們以繼續添加新數據和刪除舊數據。
  • 在寸草不生之地: 至少一份備份副本必須保存在異地。如果站點發生物理損壞(火災、盜竊、洪水等),遠程備份是故障安全的。

表裡不一 基於 庫同步 什麼時候 GnuPG.. 通過生成 tar 格式的 GPG 加密備份卷,它提供了安全的增量歸檔(特別是在備份到 S3 和 FTP 服務器等遠程服務時可顯著節省空間)。

首先,安裝副本。

dnf install duplicity

選擇後端

duplicity 支持多種後端服務,這些服務分為兩類:託管存儲提供商和本地媒體。選擇一個後端幾乎總是個人喜好,但至少選擇兩個(冗餘)。本文使用 Amazon S3 存儲桶作為後端服務的示例。

GnuPG 設置

duplicity 在使用 GnuPG 密鑰將捲上傳到指定的後端之前對其進行加密。 如果您尚未創建 GPG 密鑰,請按照 GPG 密鑰管理的第 1 部分來創建它。找到長密鑰 ID 並將其存儲在附近。

gpg2 --list-keys --keyid-format long [email protected]

亞馬遜 AWS 設置

AWS 建議您使用單獨的賬戶來分離對您賬戶的編程訪問。登錄 AWSIAM 控制台.. 如果您沒有 AWS 賬戶,系統會要求您創建一個。

單擊左側部分列表中的用戶。藍色的[ユーザーの追加]單擊按鈕。選擇一個描述性的用戶名並將訪問類型設置為程序訪問 要是..無需備份帳戶即可訪問控制台。

然後將 AmazonS3FullAccess 策略直接附加到您的賬戶。重複項要求此策略在首次運行時自動創建存儲桶。


創建用戶後,保存訪問密鑰 ID 和秘密訪問密鑰。 連接到 S3 時需要復制。

選擇備份數據

選擇要備份的數據時的經驗法則是備份已備份的數據。 創造 它不能從互聯網上重新下載。符合這個標準的好候選人是~/文檔和~/圖片。如果源代碼和“點文件”不受版本控制,它們也是不錯的選擇。

進行完整備份

執行複制的一般形式是:

duplicity [OPTIONS] SRC DEST

~ / 要備份 Documents 並將 Documents 文件夾保留在備份卷上,請使用 $ HOME 作為源運行副本並指定 -include 選項 ~ / include only Documents, -exclude’** Exclude using ‘Everything else You can combine –include 和 –exclude 選項以不同的方式創建特定的文件匹配模式。在進行初始備份之前嘗試這些選項。 –dry-run 選項模擬運行的可重複性。這是預覽特定常規調用將做什麼的好方法。

副本會自動確定您需要完整備份還是增量備份。首次運行源/目標時,迭代會創建完整備份。請務必先將訪問密鑰 ID 和秘密訪問密鑰導出為環境變量。 –name 選項可以向上兼容 duply(在第 2 部分中提供)。 使用 –encrypt-sign-key 指定用於簽名和加密備份卷的長 GPG 密鑰 ID。

$  AWS_ACCESS_KEY_ID=********************
$  AWS_SECRET_ACCESS_KEY=****************************************
$ duplicity --dry-run --name duply_documents --encrypt-sign-key **************** --include $HOME/Documents --exclude '**' $HOME s3+https://**********-backup-docs
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase: 
GnuPG passphrase for signing key: 
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1499399355.05 (Thu Jul 6 20:49:15 2017)
EndTime 1499399355.09 (Thu Jul 6 20:49:15 2017)
ElapsedTime 0.05 (0.05 seconds)
SourceFiles 102
SourceFileSize 40845801 (39.0 MB)
NewFiles 59
NewFileSize 40845801 (39.0 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 59
RawDeltaSize 0 (0 bytes)
TotalDestinationSizeChange 0 (0 bytes)
Errors 0
-------------------------------------------------

準備好後,刪除 -dry-run 選項以開始備份。提前計劃初始備份。根據您的互聯網連接,它通常包含大量數據並且可能需要幾個小時才能上傳。

備份完成後,AWS S3 控制台將列出新的完整備份卷。

進行增量備份

再次運行相同的命令以創建增量備份。

$  AWS_ACCESS_KEY_ID=********************
$  AWS_SECRET_ACCESS_KEY=****************************************
$ duplicity --dry-run --name duply_documents --encrypt-sign-key **************** --include $HOME/Documents --exclude '**' $HOME s3+https://**********-backup-docs
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Thu Jul 6 20:50:20 2017
GnuPG passphrase: 
GnuPG passphrase for signing key: 
--------------[ Backup Statistics ]--------------
StartTime 1499399964.77 (Thu Jul 6 20:59:24 2017)
EndTime 1499399964.79 (Thu Jul 6 20:59:24 2017)
ElapsedTime 0.02 (0.02 seconds)
SourceFiles 60
SourceFileSize 40845801 (39.0 MB)
NewFiles 3
NewFileSize 8192 (8.00 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 3
RawDeltaSize 0 (0 bytes)
TotalDestinationSizeChange 845 (845 bytes)
Errors 0
-------------------------------------------------

同樣,AWS S3 控制台將列出新的增量備份卷。

恢復文件

如果沒有從備份中恢復的能力,備份將毫無用處。通過簡單地以一般格式反轉 SRC 和 DEST,再現性使恢復變得容易。再現性 [OPTIONS] 目標 SRC。

$  AWS_ACCESS_KEY_ID=********************
$  AWS_SECRET_ACCESS_KEY=****************************************
$ duplicity --name duply_documents s3+https://**********-backup-docs $HOME/Restore
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Thu Jul 6 21:46:01 2017
GnuPG passphrase:
$ du -sh Restore/
783M Restore/

這將恢復整個備份卷。 使用 –file-to-restore 選項通過指定備份根的相對路徑來恢復特定文件或目錄。例如:

$  AWS_ACCESS_KEY_ID=********************
$  AWS_SECRET_ACCESS_KEY=****************************************
$ duplicity --name duply_documents --file-to-restore Documents/post_install s3+https://**********-backup-docs $HOME/Restore
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Tue Jul 4 14:16:00 2017
GnuPG passphrase: 
$ tree Restore/
Restore/
├── files
│ ├── 10-doxie-scanner.rules
│ ├── 99-superdrive.rules
│ └── simple-scan.dconf
└── post_install.sh

1 directory, 4 files

用定時器自動

上面的例子顯然是一個手動過程。 Triple R 哲學的“例行程序”要求重複執行這個重複的命令。編寫一個簡單的 shell 腳本來包裝這些環境變量和命令調用。

#!/bin/bash

 AWS_ACCESS_KEY_ID=********************
 AWS_SECRET_ACCESS_KEY=****************************************
 PASSPHRASE=************

duplicity --name duply_documents --encrypt-sign-key **************** --include $HOME/Documents --exclude '**' $HOME s3+https://**********-backup-docs

請注意,已添加 PASSPHRASE 變量。這使您可以重複運行它而不會提示您輸入 GPG 密碼。將此文件保存在您的主目錄中的某個位置。 它不必在 $ PATH 中。 一定 為用戶讀/寫/執行設置的權限 要是 保護明文 GPG 密碼。

然後創建一個計時器和一個服務單元以每天運行。

$ cat $HOME/.config/systemd/user/backup.timer
[Unit]
Description=Run duplicity backup timer

[Timer]
OnCalendar=daily
Unit=backup.service

[Install]
WantedBy=default.target
$ cat $HOME/.config/systemd/user/backup.service
[Service]
Type=oneshot
ExecStart=/home/link/backup.sh

[Unit]
Description=Run duplicity backup
$ systemctl --user enable --now backup.timer
Created symlink /home/link/.config/systemd/user/default.target.wants/backup.timer → /home/link/.config/systemd/user/backup.timer.

結論是

本文介紹了手動過程。但是,創建特定自定義備份目標的靈活性是複制最強大的功能之一。這個 重複的手冊頁 有各種選項的詳細信息。在下一篇文章中,我們將在此基礎上使用 duply 創建備份配置文件,這是一個簡化原始重複調用的包裝器。