備份數據是每個人都應該定期做的最重要的任務之一。本系列將向您展示如何使用三個軟件工具備份重要數據。
在規劃備份策略時考慮“三個 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 建議使用個人賬戶來隔離對賬戶的編程訪問。登錄 AWS IAM 控制台如果您沒有 AWS 賬戶,系統將提示您創建一個。
單擊左側部分列表中的用戶。藍色的[ユーザーの追加]單擊按鈕。選擇一個友好的用戶名並將訪問類型設置為程序訪問 如果無需備份帳戶即可訪問控制台。
然後將 AmazonS3FullAccess 策略直接附加到您的賬戶。重複要求此策略在第一次運行時自動創建存儲桶。
創建用戶後,保存 Access Key ID 和 Secret Access Key。這些是連接到 S3 時復制所必需的。
選擇備份數據
選擇要備份的數據時,建議備份自己備份的數據 創造 它不能從 Internet 重新下載。符合此標準的優秀候選人是 ~/Documents 和 ~/Pictures。如果沒有版本控制,源代碼和“點文件”也是不錯的候選者。
創建完整備份
運行重複的一般格式是:
duplicity [OPTIONS] SRC DEST
要備份 ~/Documents 並將 Documents 文件夾保留在備份卷上,請使用 $HOME 作為源運行 duplicity 並使用 –include 選項僅包含 ~/Documents 和 –exclude ‘ **’ 以排除 –include 和–exclude 選項可以以各種方式組合以創建特定的文件匹配模式。在進行初始備份之前嘗試這些選項。 –dry-run 選項模擬執行的可重複性。這是預覽特定重複調用將做什麼的好方法。
duplicity 自動確定是否需要完整備份或增量備份。重複將在第一次運行源/目標時創建完整備份。首先,將您的訪問密鑰 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.
結論是
本文介紹了手動過程。但是,創建特定自定義備份目標的靈活性是 duplicity 最強大的功能之一。這個 手冊頁重複 有各種選項的詳細信息。下一篇文章在此基礎上使用 duply 創建備份配置文件。 duply 是一個用於簡化原始雙重調用的包裝器。