Go 編寫的備份工具——Restic 體驗(yàn)筆記

restic 是一個(gè) Go 語(yǔ)言編寫的備份工具竞端,特點(diǎn)是快速被因、高效而且安全蝗蛙。

下載最新版本:release page

目前最新版本是 0.0.4,你可以下載回來(lái)解壓構(gòu)建使用敲长。但是郎嫁,我習(xí)慣使用 Docker,畢竟我懶得裝 Golang 到服務(wù)器編譯祈噪,所以我還是用 Docker 運(yùn)行吧泽铛。

上面 release 有已經(jīng)編譯好的版本,我寫完全文才發(fā)現(xiàn)辑鲤,打臉盔腔。
( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)

官方給了一份 Dockerfile,官方的鏡像自然是比較全面的月褥,但我基本用不上那些功能弛随,所以還是自己寫一份吧:

FROM alpine:edge
ENV RESTIC_VERSION=0.4.0

RUN apk add --no-cache go git musl-dev openssl ca-certificates && \
    wget https://github.com/restic/restic/releases/download/v${RESTIC_VERSION}/restic-${RESTIC_VERSION}.tar.gz && \
    tar -xzvf restic-${RESTIC_VERSION}.tar.gz && \
    cd restic-${RESTIC_VERSION} && \
    go build build.go && \
    ./build && \
    mv restic /bin/restic && \
    cd ../ && \
    rm -rf restic-* && \
    apk del -q go git musl-dev openssl && \
    rm -rf /var/cache/apk/*

上面從源代碼構(gòu)建整個(gè)程序,和官方那目測(cè)幾百 MB 的鏡像體積宁赤,我這個(gè) Dockerfile 僅有 14 MB舀透。

如果你需要的話可以使用 docker pull zuolan/restic 拉取鏡像,只有 6MB 的傳輸體積决左。

先運(yùn)行看一下說(shuō)明愕够,順便測(cè)試一下鏡像運(yùn)行時(shí)是否正常:

docker run --rm -it zuolan/restic restic --help

一般來(lái)說(shuō)沒(méi)什么問(wèn)題,畢竟都構(gòu)建成功了佛猛。

這個(gè)備份工具有點(diǎn)類似于 Git 這種版本控制工具惑芭,有著倉(cāng)庫(kù)(repository)的概念,所以我們先初始化倉(cāng)庫(kù):

$ docker run --rm -it -v ~/backup:/tmp/backup zuolan/restic restic init --repo /tmp/backup
enter password for new backend:
enter password again:
created restic backend 085b3c76b9 at /tmp/backup

Please note that knowledge of your password is required to access the repository.
Losing your password means that your data is irrecoverably lost.

記住密碼挚躯,不然你數(shù)據(jù)就無(wú)法恢復(fù)了强衡。

然后創(chuàng)建一個(gè)快照:

$ docker run --rm -it \
    -v ~/backup:/tmp/backup \
    -v ~/nginx:/tmp/nginx \
    zuolan/restic \
    restic -r /tmp/backup backup /tmp/nginx

enter password for repository:
scan [/tmp/work]
scanned 764 directories, 1816 files in 0:00
[0:29] 100.00%  54.732 MiB/s  1.582 GiB / 1.582 GiB  2580 / 2580 items  0 errors  ETA 0:00
duration: 0:29, 54.47MiB/s
snapshot 40dc1520 saved

這里面第一次索引可能會(huì)比較耗時(shí)間擦秽,但實(shí)際上也是挺快的码荔,幾GB的數(shù)據(jù)也是喝一杯水的功夫就搞定了。

查看一下倉(cāng)庫(kù)的快照:

$ docker run --rm -it \
    -v ~/backup:/tmp/backup \
    zuolan/restic \
    restic -r /tmp/backup snapshots
enter password for repository: 
ID        Date                 Host        Tags            Directory
----------------------------------------------------------------------
9236eead  2017-02-09 14:51:10  e1c6f61cb5e0                  /tmp/nginx

注意的是感挥,倉(cāng)庫(kù)和快照不是一對(duì)一的缩搅,你可以在一個(gè)倉(cāng)庫(kù)中存放不同目錄的多個(gè)快照,所以一般只用一個(gè)備份倉(cāng)庫(kù)就可以了触幼,除非你數(shù)據(jù)很多很復(fù)雜硼瓣。

例如給其他目錄也備份:

$ docker run --rm -it \
    -v ~/backup:/tmp/backup \
    -v ~/apache:/tmp/apache \
    zuolan/restic \
    restic -r /tmp/backup backup /tmp/apache

注意 -v 參數(shù)中原來(lái)的 nginx 改為了 apache,這樣在數(shù)據(jù)卷中也要相應(yīng)修改名稱,避免程序認(rèn)為是同一個(gè)目錄的變動(dòng)而修改了原有的快照堂鲤。

排除文件/夾自然也是老辦法:--exclude 或者 --exclude-file 之類的參數(shù)亿傅。


恢復(fù)快照:

$ docker run --rm -it \
    -v ~/backup:/tmp/backup \
    -v ~/nginx:/tmp/nginx \
    zuolan/restic \
    restic -r /tmp/backup restore 9236eead --target /tmp/nginx

restoring <Snapshot 9236eead of [/tmp/nginx] at 2017-02-09 14:51:10.376787233 +0000 UTC by @e1c6f61cb5e0> to /tmp/nginx

完美恢復(fù)!~


官方教程地址:
https://restic.readthedocs.io/en/stable/Manual/

詳細(xì)的我還要再看看瘟栖,我才剛接觸這個(gè)軟件兩個(gè)小時(shí)葵擎,有什么問(wèn)題可以留言,笑半哟。


寫在最后酬滤,為了使用愉快,你最好用 alias 把整個(gè) Docker 命令丟到 .bashrc 中:

alias restic="docker run --rm -v ~/data:/tmp/data zuolan/restic restic"

~/data 是你備份數(shù)據(jù)的地方寓涨,因?yàn)槲沂恰叭f(wàn)物皆容器”的原則盯串,所以服務(wù)器全部數(shù)據(jù)都統(tǒng)一放置在一個(gè)文件中,管理備份很輕松戒良。

這樣你使用 restic 命令時(shí)實(shí)際上就是調(diào)用這個(gè)鏡像運(yùn)行容器了体捏。總之使用方式隨機(jī)應(yīng)變糯崎。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末译打,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拇颅,更是在濱河造成了極大的恐慌奏司,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件樟插,死亡現(xiàn)場(chǎng)離奇詭異韵洋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)黄锤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門搪缨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鸵熟,你說(shuō)我怎么就攤上這事副编。” “怎么了流强?”我有些...
    開(kāi)封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵痹届,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我打月,道長(zhǎng)队腐,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任奏篙,我火速辦了婚禮柴淘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己为严,他們只是感情好敛熬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著第股,像睡著了一般荸型。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炸茧,一...
    開(kāi)封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天瑞妇,我揣著相機(jī)與錄音,去河邊找鬼梭冠。 笑死辕狰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的控漠。 我是一名探鬼主播蔓倍,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盐捷!你這毒婦竟也來(lái)了偶翅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碉渡,失蹤者是張志新(化名)和其女友劉穎聚谁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體滞诺,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡形导,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了习霹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朵耕。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖淋叶,靈堂內(nèi)的尸體忽然破棺而出阎曹,到底是詐尸還是另有隱情,我是刑警寧澤煞檩,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布处嫌,位于F島的核電站,受9級(jí)特大地震影響形娇,放射性物質(zhì)發(fā)生泄漏锰霜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一桐早、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦哄酝、人聲如沸友存。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)屡立。三九已至,卻和暖如春搀军,著一層夾襖步出監(jiān)牢的瞬間膨俐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工罩句, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留焚刺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓门烂,卻偏偏與公主長(zhǎng)得像乳愉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屯远,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件蔓姚?Google Compute Engi...
    ahohoho閱讀 15,547評(píng)論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,510評(píng)論 0 120
  • 0. 前言 docker是什么慨丐?docker是用GO語(yǔ)言開(kāi)發(fā)的應(yīng)用容器引擎坡脐,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)房揭“ご耄可...
    sessionboy閱讀 3,862評(píng)論 2 49
  • 人民的名義已經(jīng)大結(jié)局,說(shuō)實(shí)話崩溪,對(duì)于這樣的結(jié)局浅役,讓人充滿無(wú)盡遐想。比如說(shuō):陳海醒了伶唯,他究竟知道什么真相觉既;易學(xué)習(xí)的紀(jì)委...
    隨y風(fēng)閱讀 492評(píng)論 0 0
  • PORT,管理者第一思考模型 P:目的 1.參加訓(xùn)練營(yíng)是因?yàn)樗亲鲎约旱腃EO的前置課程乳幸,通過(guò)真自由訓(xùn)練營(yíng)瞪讼,得到C...
    淘淘的故事閱讀 223評(píng)論 0 0