跨平臺(tái)數(shù)據(jù)備份工具之restic

      網(wǎng)友投稿 1179 2022-05-29

      一 背景

      Restic 是一款 GO 語(yǔ)言開(kāi)發(fā)的開(kāi)源免費(fèi)且快速、高效和安全的跨平臺(tái)備份工具。Restic 使用加密技術(shù)來(lái)保證你的數(shù)據(jù)安全性和完整性,可以將本地?cái)?shù)據(jù)加密后傳輸?shù)街付ǖ拇鎯?chǔ)。

      Restic 同樣支持增量備份,可隨時(shí)備份和恢復(fù)備份。Restic 支持大多數(shù)主流操作系統(tǒng),比如:Linux、macOS、Windows 以及一些較小眾的操作系統(tǒng) FreeBSD 和 OpenBSD 等。

      二 restic簡(jiǎn)介

      2.1 restic 支持類型

      本地存儲(chǔ)

      SFTP

      REST Server

      Amazon S3

      Minio Server

      OpenStack Swift

      Backblaze B2

      Microsoft Azure Blob Storage

      Google Cloud Storage

      通過(guò) Rclone 掛載的存儲(chǔ) (比如:Google Drive、OneDrive 等)

      2.2 Restic 與 Rclone 區(qū)別

      2.2.1 相同點(diǎn)

      兩者都是基于命令行的開(kāi)源文件同步和備份工具。

      兩者都支持將文件備份到本地、遠(yuǎn)程服務(wù)器或?qū)ο蟠鎯?chǔ)。

      2.2.2 異同

      Rclone 面向的是文件同步,即保證兩端文件的一致,也可以增量備份。

      Restic 面向的是文件備份和加密,文件先加密再傳輸備份,而且是增量備份,即每次只備份變化的部分。

      Rclone 倉(cāng)庫(kù)配置保存在本地,備份的文件會(huì)保持原樣的同步于存儲(chǔ)倉(cāng)庫(kù)中。

      Restic 配置信息直接寫(xiě)在倉(cāng)庫(kù),只要有倉(cāng)庫(kù)密碼,在任何安裝了 Restic 的計(jì)算機(jī)上都可以操作倉(cāng)庫(kù)。

      Rclone 不記錄文件版本,無(wú)法根據(jù)某一次備份找回特定時(shí)間點(diǎn)上的文件。

      Restic 每次備份都會(huì)生成一個(gè)快照,記錄當(dāng)前時(shí)間點(diǎn)的文件結(jié)構(gòu),可以找回特定時(shí)間點(diǎn)的文件。

      Rclone 可以在配置的多個(gè)存儲(chǔ)端之間傳輸文件。

      總的來(lái)說(shuō),Rclone 和 Restic 各有所長(zhǎng),要根據(jù)不同的業(yè)務(wù)需求選擇使用。比如:網(wǎng)站數(shù)據(jù)的增量備份,用 Resitc 就比較合適。而常規(guī)文件的遠(yuǎn)程備份歸檔,用 Rclone 就很合適。

      2.3 Restic設(shè)計(jì)原則

      Restic 是一個(gè)可以正確進(jìn)行備份的程序,其設(shè)計(jì)遵循以下原則:

      簡(jiǎn)單:備份應(yīng)該是一個(gè)順暢的過(guò)程,否則您可能會(huì)想跳過(guò)它。 Restic 應(yīng)該易于配置和使用,以便在數(shù)據(jù)丟失的情況下,您可以直接恢復(fù)它。同樣,恢復(fù)數(shù)據(jù)不應(yīng)該很復(fù)雜。

      快速:用restic備份你的數(shù)據(jù)應(yīng)該只受你的網(wǎng)絡(luò)或硬盤帶寬的限制,這樣你就可以每天備份你的文件。如果需要太多時(shí)間,沒(méi)有人會(huì)進(jìn)行備份?;謴?fù)備份應(yīng)該只傳輸要恢復(fù)的文件所需的數(shù)據(jù),這樣這個(gè)過(guò)程也很快。

      可驗(yàn)證:比備份更重要的是恢復(fù),因此restic使您可以輕松驗(yàn)證所有數(shù)據(jù)是否可以恢復(fù)。

      跨平臺(tái)數(shù)據(jù)備份工具之restic

      安全:Restic 使用加密技術(shù)來(lái)保證您數(shù)據(jù)的機(jī)密性和完整性。假設(shè)存儲(chǔ)備份數(shù)據(jù)的位置不是受信任的環(huán)境(例如,系統(tǒng)管理員等其他人能夠訪問(wèn)您的備份的共享空間)。 Restic 旨在保護(hù)您的數(shù)據(jù)免受此類攻擊者的侵害。

      高效:隨著數(shù)據(jù)的增長(zhǎng),額外的快照應(yīng)該只占用實(shí)際增量的存儲(chǔ)。更重要的是,在將重復(fù)數(shù)據(jù)實(shí)際寫(xiě)入存儲(chǔ)后端之前,應(yīng)該對(duì)其進(jìn)行去重,以節(jié)省寶貴的備份空間。

      2.4 相關(guān)術(shù)語(yǔ)

      Repository:備份期間產(chǎn)生的所有數(shù)據(jù)都以結(jié)構(gòu)化形式發(fā)送并存儲(chǔ)在存儲(chǔ)庫(kù)中,例如在具有多個(gè)子目錄的文件系統(tǒng)層次結(jié)構(gòu)中。存儲(chǔ)庫(kù)實(shí)現(xiàn)必須能夠完成許多操作,例如列出內(nèi)容。v0.12.0中已支持的存儲(chǔ)服務(wù)包括:aws s3,minio server,Wasabi, Aliyun OSS, OpenStack Swift,Backlbaze B2,Azure Blob Storage,Google Cloud Storage,rclone*

      Blob:Blob 將多個(gè)數(shù)據(jù)字節(jié)與識(shí)別信息(如數(shù)據(jù)的 SHA-256 哈希及其長(zhǎng)度),加密的數(shù)據(jù)塊及元數(shù)據(jù),其中元數(shù)據(jù)包括長(zhǎng)度,SHA-256 哈希信息。數(shù)據(jù)塊可以存放文件數(shù)據(jù)(data),也可以存放目錄結(jié)構(gòu)數(shù)據(jù)(tree)。Blob的大小在512KiB到8MiB之間,因此小于512KB的文件不會(huì)被拆分。Restic的實(shí)現(xiàn)目標(biāo)是讓Blob平均大小為1MiB。

      Pack:一個(gè)包結(jié)合了一個(gè)或多個(gè) Blob,例如在單個(gè)文件中。Restic中的單個(gè)數(shù)據(jù)文件,包括一個(gè)或多個(gè)Blob,一旦創(chuàng)建不再修改。

      一般只創(chuàng)建不刪除,僅prune操作會(huì)刪除不再被引用的數(shù)據(jù)。

      Snapshot:快照代表在某個(gè)時(shí)間點(diǎn)已備份的文件或目錄的狀態(tài)。這里的狀態(tài)是指內(nèi)容和元數(shù)據(jù),如文件或目錄及其內(nèi)容的名稱和修改時(shí)間。

      Storage ID:Pack文件的SHA256哈希值,通過(guò)這個(gè)ID可以在倉(cāng)庫(kù)中加載需要的數(shù)據(jù)文件。Restic將這個(gè)ID作為Pack的文件名,也就是文件的SHA256哈希值。Pack文件名即哈希值的設(shè)計(jì)也可以方便的檢驗(yàn)數(shù)據(jù)文件是否被改動(dòng)過(guò)。

      三 安裝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 配置自動(dòng)補(bǔ)全

      $ sudo ./restic generate --bash-completion /etc/bash_completion.d/restic

      四 實(shí)戰(zhàn)

      將保存?zhèn)浞莸牡胤椒Q為“存儲(chǔ)庫(kù)”。本章解釋了如何創(chuàng)建(“ init”)這樣的存儲(chǔ)庫(kù)。存儲(chǔ)庫(kù)可以存儲(chǔ)在本地,也可以存儲(chǔ)在遠(yuǎn)程服務(wù)器或服務(wù)器上。

      4.1 sftp主機(jī)間備份

      4.1.1 主機(jī)間免密鑰互信

      從主機(jī)A備份數(shù)據(jù)到主機(jī)B,需要主機(jī)A到主機(jī)B免密鑰和互信

      ssh-keygen -t rsa ssh-copy-id -i /root/.ssh/id_rsa.pub root@106.53.117.41

      4.1.2 在服務(wù)器A創(chuàng)建備份

      初始化備份,/data為 B服務(wù)器目錄。

      查看B服務(wù)器

      4.1.3 備份操作

      執(zhí)行數(shù)據(jù)備份

      restic -r sftp:root@106.53.117.41:/data backup ./

      查看備份

      restic -r sftp:root@106.53.117.41:/data snapshots

      查看備份內(nèi)容

      restic -r sftp:root@106.53.117.41:/data ls 875a2a32

      恢復(fù)快照

      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 免密碼

      上面?zhèn)浞莸臅r(shí)候,都需要輸入密碼,肯定不適合腳本自動(dòng)備份,所以我們還需要使用--password-file參數(shù)來(lái)達(dá)到自動(dòng)讀取密碼的步驟。

      #先將密碼,比如moerats保存在/root/resticpasswd文本中 echo 'xxzxxxxxx' > /root/resticpasswd #然后在備份命令中加--password-file參數(shù)來(lái)讀取文本中的密碼,這里以sftp為例 restic -r sftp:root@106.53.117.41:/data --verbose backup ./ --password-file /root/resticpasswd

      4.2 對(duì)象存儲(chǔ)備份

      支持基于s3協(xié)議的后端對(duì)象存儲(chǔ),例如minio或者騰訊/阿里對(duì)象存儲(chǔ)

      4.2.1 阿里云對(duì)象存儲(chǔ)

      $ export AWS_ACCESS_KEY_ID= $ export AWS_SECRET_ACCESS_KEY= $ ./restic -o s3.bucket-lookup=dns -o s3.region= -r s3:https:/// init $ restic -o s3.bucket-lookup=dns -o s3.region=oss-eu-west-1 -r s3:https://oss-eu-west-1.aliyuncs.com/bucketname init restic -o s3.bucket-lookup=dns -o oss-cn-beijing.aliyuncs.com -r s3:https:/oss.oss-cn-beijing.aliyuncs.com init

      創(chuàng)建repository

      export AWS_ACCESS_KEY_ID=LTAIxxxxxxxxxxxxxx9 export AWS_SECRET_ACCESS_KEY=XvHxxxxxxxxxxxxxxxJt3wb7 restic -o s3.bucket-lookup=dns -o s3.region=oss-cn-beijing.aliyuncs.com -r s3:https://xueltestoss.oss-cn-beijing.aliyuncs.com/oss init

      對(duì)象存儲(chǔ)上文件

      免密鑰

      #先將密碼,比如moerats保存在/root/resticpasswd文本中 echo 'xxzxxxxx' > /root/resticpasswd #然后在備份命令中加--password-file參數(shù)來(lái)讀取文本中的密碼,這里以sftp為例

      執(zhí)行備份

      restic -r s3:https://oss-cn-beijing.aliyuncs.com/oss --password-file /root/resticpasswd backup /data/

      其他恢復(fù)操作基本上和sftp的一致。

      其他

      restic 是一個(gè)很不錯(cuò)的數(shù)據(jù)備份方案,rclone是一個(gè)不錯(cuò)的數(shù)據(jù)同步方案,以及minio作為數(shù)據(jù)存儲(chǔ),集成在一起真的很不錯(cuò)。

      參考文章

      https://restic.readthedocs.io/en/v0.12.0/design.html

      https://github.com/restic/restic

      https://restic.net/

      數(shù)據(jù)庫(kù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Android之Launcher分析和修改1——Launcher默認(rèn)界面配置(default_workspace)
      下一篇:二進(jìn)制安裝數(shù)據(jù)庫(kù)MariaDB
      相關(guān)文章
      亚洲AV色欲色欲WWW| 亚洲国产福利精品一区二区| 亚洲中文字幕无码av永久| 亚洲黄色在线观看| 日韩精品一区二区亚洲AV观看| 亚洲最大av无码网址| 国产亚洲综合精品一区二区三区| 亚洲中文无码卡通动漫野外 | 亚洲精品无码专区在线播放| 一本色道久久88—综合亚洲精品| 狠狠色香婷婷久久亚洲精品| 亚洲人成激情在线播放| 亚洲一级毛片免观看| 亚洲中文无码a∨在线观看| 亚洲依依成人精品| 亚洲精品天堂在线观看| 在线观看亚洲AV每日更新无码| 亚洲日本在线电影| 久久亚洲中文无码咪咪爱| 丁香亚洲综合五月天婷婷| 亚洲一区二区三区在线视频| 久久久久亚洲AV成人网| 国产成A人亚洲精V品无码性色| 亚洲国产精品一区第二页 | 亚洲爆乳无码专区www| MM1313亚洲国产精品| 亚洲精品在线视频| 国产成人亚洲精品狼色在线| 国产av无码专区亚洲av桃花庵| 无码乱人伦一区二区亚洲一 | 日本中文一区二区三区亚洲| 亚洲精品综合久久| 亚洲精品无码永久中文字幕| 亚洲AV人无码激艳猛片| 亚洲精品资源在线| 久久久久亚洲国产| 亚洲AⅤ优女AV综合久久久| 国产亚洲精品a在线观看| 久久精品国产亚洲av麻豆 | 亚洲成a人片77777群色| 在线观看亚洲AV日韩A∨|