京寵展信息指南
1143
2022-05-29
一 背景
Restic 是一款 GO 語言開發的開源免費且快速、高效和安全的跨平臺備份工具。Restic 使用加密技術來保證你的數據安全性和完整性,可以將本地數據加密后傳輸到指定的存儲。
Restic 同樣支持增量備份,可隨時備份和恢復備份。Restic 支持大多數主流操作系統,比如:Linux、macOS、Windows 以及一些較小眾的操作系統 FreeBSD 和 OpenBSD 等。
二 restic簡介
2.1 restic 支持類型
本地存儲
SFTP
REST Server
Amazon S3
Minio Server
OpenStack Swift
Backblaze B2
Microsoft Azure Blob Storage
Google Cloud Storage
通過 Rclone 掛載的存儲 (比如:Google Drive、OneDrive 等)
2.2 Restic 與 Rclone 區別
2.2.1 相同點
兩者都是基于命令行的開源文件同步和備份工具。
兩者都支持將文件備份到本地、遠程服務器或對象存儲。
2.2.2 異同
Rclone 面向的是文件同步,即保證兩端文件的一致,也可以增量備份。
Restic 面向的是文件備份和加密,文件先加密再傳輸備份,而且是增量備份,即每次只備份變化的部分。
Rclone 倉庫配置保存在本地,備份的文件會保持原樣的同步于存儲倉庫中。
Restic 配置信息直接寫在倉庫,只要有倉庫密碼,在任何安裝了 Restic 的計算機上都可以操作倉庫。
Rclone 不記錄文件版本,無法根據某一次備份找回特定時間點上的文件。
Restic 每次備份都會生成一個快照,記錄當前時間點的文件結構,可以找回特定時間點的文件。
Rclone 可以在配置的多個存儲端之間傳輸文件。
總的來說,Rclone 和 Restic 各有所長,要根據不同的業務需求選擇使用。比如:網站數據的增量備份,用 Resitc 就比較合適。而常規文件的遠程備份歸檔,用 Rclone 就很合適。
2.3 Restic設計原則
Restic 是一個可以正確進行備份的程序,其設計遵循以下原則:
簡單:備份應該是一個順暢的過程,否則您可能會想跳過它。 Restic 應該易于配置和使用,以便在數據丟失的情況下,您可以直接恢復它。同樣,恢復數據不應該很復雜。
快速:用restic備份你的數據應該只受你的網絡或硬盤帶寬的限制,這樣你就可以每天備份你的文件。如果需要太多時間,沒有人會進行備份。恢復備份應該只傳輸要恢復的文件所需的數據,這樣這個過程也很快。
可驗證:比備份更重要的是恢復,因此restic使您可以輕松驗證所有數據是否可以恢復。
安全:Restic 使用加密技術來保證您數據的機密性和完整性。假設存儲備份數據的位置不是受信任的環境(例如,系統管理員等其他人能夠訪問您的備份的共享空間)。 Restic 旨在保護您的數據免受此類攻擊者的侵害。
高效:隨著數據的增長,額外的快照應該只占用實際增量的存儲。更重要的是,在將重復數據實際寫入存儲后端之前,應該對其進行去重,以節省寶貴的備份空間。
2.4 相關術語
Repository:備份期間產生的所有數據都以結構化形式發送并存儲在存儲庫中,例如在具有多個子目錄的文件系統層次結構中。存儲庫實現必須能夠完成許多操作,例如列出內容。v0.12.0中已支持的存儲服務包括:aws s3,minio server,Wasabi, Aliyun OSS, OpenStack Swift,Backlbaze B2,Azure Blob Storage,Google Cloud Storage,rclone*
Blob:Blob 將多個數據字節與識別信息(如數據的 SHA-256 哈希及其長度),加密的數據塊及元數據,其中元數據包括長度,SHA-256 哈希信息。數據塊可以存放文件數據(data),也可以存放目錄結構數據(tree)。Blob的大小在512KiB到8MiB之間,因此小于512KB的文件不會被拆分。Restic的實現目標是讓Blob平均大小為1MiB。
Pack:一個包結合了一個或多個 Blob,例如在單個文件中。Restic中的單個數據文件,包括一個或多個Blob,一旦創建不再修改。
一般只創建不刪除,僅prune操作會刪除不再被引用的數據。
Snapshot:快照代表在某個時間點已備份的文件或目錄的狀態。這里的狀態是指內容和元數據,如文件或目錄及其內容的名稱和修改時間。
Storage ID:Pack文件的SHA256哈希值,通過這個ID可以在倉庫中加載需要的數據文件。Restic將這個ID作為Pack的文件名,也就是文件的SHA256哈希值。Pack文件名即哈希值的設計也可以方便的檢驗數據文件是否被改動過。
三 安裝restic
3.1 yum安裝
yum install yum-plugin-copr yum copr enable copart/restic yum install restic
3.2 docker安裝
docker pull restic/restic
更多信息可參考:https://github.com/Lobaro/restic-backup-docker
3.3 源碼安裝
$ git clone https://github.com/restic/restic $ cd restic $ go run build.go
3.4 配置自動補全
$ sudo ./restic generate --bash-completion /etc/bash_completion.d/restic
四 實戰
將保存備份的地方稱為“存儲庫”。本章解釋了如何創建(“ init”)這樣的存儲庫。存儲庫可以存儲在本地,也可以存儲在遠程服務器或服務器上。
4.1 sftp主機間備份
4.1.1 主機間免密鑰互信
從主機A備份數據到主機B,需要主機A到主機B免密鑰和互信
ssh-keygen -t rsa ssh-copy-id -i /root/.ssh/id_rsa.pub root@106.53.117.41
4.1.2 在服務器A創建備份
初始化備份,/data為 B服務器目錄。
查看B服務器
4.1.3 備份操作
執行數據備份
restic -r sftp:root@106.53.117.41:/data backup ./
查看備份
restic -r sftp:root@106.53.117.41:/data snapshots
查看備份內容
restic -r sftp:root@106.53.117.41:/data ls 875a2a32
恢復快照
restic -r sftp:root@106.53.117.41:/data restore 875a2a32 -t ./ restic -r sftp:root@106.53.117.41:/data restore 875a2a32 --target ./
刪除備份
restic -r sftp:root@106.53.117.41:/data forget 875a2a32
4.1.4 免密碼
上面備份的時候,都需要輸入密碼,肯定不適合腳本自動備份,所以我們還需要使用--password-file參數來達到自動讀取密碼的步驟。
#先將密碼,比如moerats保存在/root/resticpasswd文本中 echo 'xxzx@789' > /root/resticpasswd #然后在備份命令中加--password-file參數來讀取文本中的密碼,這里以sftp為例 restic -r sftp:root@106.53.117.41:/data --verbose backup ./ --password-file /root/resticpasswd
4.2 對象存儲備份
支持基于s3協議的后端對象存儲,例如minio或者騰訊/阿里對象存儲
4.2.1 阿里云對象存儲
$ export AWS_ACCESS_KEY_ID=
創建repository
export AWS_ACCESS_KEY_ID=LTAIxxxxxxxdZa9 export AWS_SECRET_ACCESS_KEY=XvHxxxxxxxxxxxxxxxxxJt3wb7 restic -o s3.bucket-lookup=dns -o s3.region=oss-cn-beijing.aliyuncs.com -r s3:https://xueltestoss.oss-cn-beijing.aliyuncs.com/xueltestoss init
對象存儲上文件
免密鑰
#先將密碼,比如moerats保存在/root/resticpasswd文本中 echo 'xxzx@789' > /root/resticpasswd #然后在備份命令中加--password-file參數來讀取文本中的密碼,這里以sftp為例
執行備份
restic -r s3:https://oss-cn-beijing.aliyuncs.com/xueltestoss --password-file /root/resticpasswd backup /data/
其他恢復操作基本上和sftp的一致。
其他
restic 是一個很不錯的數據備份方案,rclone是一個不錯的數據同步方案,以及minio作為數據存儲,集成在一起真的很不錯。
參考文章
https://restic.readthedocs.io/en/v0.12.0/design.html
https://github.com/restic/restic
https://restic.net/
數據庫 通用安全
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。