備份數據是每個人都需要定期執行的最重要的任務之一。本系列向您展示如何使用三個軟件工具來備份您的重要數據。
在規劃備份策略時考慮“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 創建備份配置文件,這是一個簡化原始重複調用的包裝器。