rclone超強雲端備份軟體NAS可排程,各平台適用,大家一起來學習

其實先前已經有froce大介紹過這個軟體了,但是當時我qnap的nas雲端備份的功能還沒爛掉,所以就沒有多研究,最近QTS升到最新的4.3.3後雲端備份功能整個不對勁,又想起這篇,然後研究了一下,發現rclone根本神器,我就以在QTS上使用rclone的一點心得跟大家討論討論。

rclone官網

==介紹==
簡單介紹一下rclone,
1.它用命令列執行,所以要有一點點基礎(在ubuntu之類的發行版有gui,但有點陽春)。
2.它可以複製、同步(鏡像)、移動本地檔案到雲端,或是雲端到雲端,不過雲端到雲端還是會需要本地電腦中繼。
3.它有許多篩選功能,還可以限速。

rclone現在支援的雲端如下,比起froce大介紹時多了一項sftp,
●Google Drive → 大家都有,有支援就是棒!
●Amazon S3 → 專業備份也支援。
●Openstack Swift / Rackspace cloud files / Memset Memstore
●Dropbox
●Google Cloud Storage
●Amazon Drive → 好棒!
●Microsoft OneDrive
●Hubic
●Backblaze B2
●Yandex Disk
●SFTP → 不信任雲端?自己堆也可以。
●The local filesystem → 這也是我覺得神功能之一,以前要寫shell處理的事用rclone就可以搞定。

==安裝==
首先要下載rclone,不過我要在qnap的nas上用,要到qnapclub下載qpkg檔進app center手動安裝,不過我想直接用官網的amd64 -64bit版也可以,rclone就只是一個二進位執行檔。

先前說過,rclone要用命令列下指令,安裝完後要ssh進nas,我是用qpkg安裝的,所以不用擔心路徑問題,[~]下直接打rclone就可以了,要備份到雲端首先要讓你的雲端空間授權讓rclone存取,請參考froce大的介紹,就不再贅述一遍了,以下有幾個在新增設定時可能會遇到的問題:
1.client id是什麼,為什麼空白就好?
google drive或是amazon cloud drive有雲端硬碟的api,rclone是呼叫api來處理的,你可以用自己的client id來存取,實際上google drive api存取有每日額度(其實很額度很大),超過額度的話就無法再存取,留空白的話就是用作者本身預設的client id,等於所有在client id留空白的人在共享這個額度,有可能會爆掉。
2.Use auto config?要選哪個?有兩個選項:
* Say Y if not sure
* Say N if you are working on a remote or headless machine
雲端授權需要透過網頁連結,選Y的話就會直接開啟一個網頁,點授權就可以了,但是我是在nas上使用,沒辦法直接打開一個網頁,所以要選N,它會給你一個網址,複製網址然後到可以開網頁的電腦打開,把網頁上的代碼回填就可以了,或者是先在可以開網頁的電腦完成所有的帳號設定,然後再把rclone的設定檔複製回nas,它的設定檔的是全平台通用的。
3.我的nas重開機後為什麼設定好的帳號不見了?
因為rclone的設定檔在qts裡預設的路徑是在/root/.config/rclone/rclone.conf,/root下的東西每次重開機都會被還原,所以第一次設定好後要先備份,開機後再複製回去,不然就是用--config參數指定路徑。

==開始使用==
舉例:我要把nas中/share/Photo這個資料夾備份到amazon cloud drive(ACD)的Backup目錄下。
rclone copy /share/Photo acd:Backup

基本上就是
rclone 動作 來源位置 目的位置


然後,我想看上傳後雲端硬碟的檔案
rclone ls acd:Backup


問題來了,怎麼連隱藏資料夾內的東西都上傳了?都是一些不重要的縮圖,這時後就可以篩選不要包含隱藏檔
rclone copy /share/Photo acd:Backup --exclude '.*{/**}'


哇靠,上傳頻寬被吃光了,小水管限一下速,
rclone copy /share/Photo acd:Backup --exclude '.*{/**}' --bwlimit 2M


大致上就是這樣用,然後動作指令有一些想說明一下,
copy:會檢查已上傳檔案,已上傳過的不會再上傳,很像rsync,但是無法處理相同檔名的檔案,這個在雲端複製到雲端的時候會發生,因為google drive允許在同一個資料夾有相同的檔名。

dedupe:檢查重複,像上述在google drive有同檔名的情況,就可以在copy先用這個做除重,它不只是檢查檔名,而是檢查checksum,所以若用把這個指令用在本地端,就可以很有效率的除重。

rsync:單向同步,加參數可以變鏡像同步。

mount:把雲端硬碟掛載成本地資料夾,太神啦!不過目前是實驗階段可能有些問題。

官網有非常詳細的參數說明,有興趣的同學可以自行學習。

==排程==
已經學會怎麼使用rclone了,但在nas上用總不能每次都手動備份吧?
所以我們可以透過兩個步驟來完成排程功能。
1.寫一個可執行的shell檔名為sync_photo,像這樣,建議用--config指定設定檔位置,這樣就不用開機後再把設定檔複製回去,
rclone --config /share/homes/admin/rclone.conf copy /share/Multimedia/Photos acd:Photos --exclude '.*{/**}' --exclude '@*/**'


2.把這個shell加進nas的排程中,這個部份沒基礎的同學可能要google一下相關說明,
因為qts也是linux base,所以實際上就是把shell加進linux的crontab排程,qts的crontab放在/etc/config/crontab,
編輯/etc/config/crontab,會長這樣,
[~刪]
4 3 * * 3 /etc/init.d/backup_conf.sh
0 0 * * * /etc/init.d/antivirus.sh archive_log
[~刪]

每一行前面有5個*號,然後接執行檔,*號的意義就請google一下吧,
我想要每2小時整點就備份一次的話可以加入一行,
0 */2 * * * /share/homes/admin/sync_photo

存檔後退出編輯器,輸入
crontab /etc/config/crontab && /etc/init.d/crond.sh restart

以後就會定時每2小時備份一次了。

==討論==
rclone很強大,不過有一些備份方式我做不出來,像是在qts的備份時間中有一個選項叫持續,只要排定的本地資料夾有變動就會開始備份變動的部份。


2017-05-01 16:25 發佈
QNAP從昨天就沒回應我的問題~~看來是把我放生了
只好來研究這個囉~~~
V1.36已經加入 --backup-dir 的option
可以做到revision control

team drive的 api也放出來了
比較期待rclone 把team drive加入
這樣搭配drive file stream 就很方便了

boren wrote:
rsync:單向同步,加參數可以變鏡像同步。

您好,這邊是不是有錯誤?因為參數只有sync沒有rsync喔。
https://rclone.org/commands/
另外,想請教一下,加參數可以變鏡像同步?因為rclone只有單向同步而已,
不知道是加什麼參數呢?可否指點一下。
小弟能想到的就是加一個-u參數,然後雙向各做一次sync -u,保留最新版本,
不過這樣子好像有點麻煩,因為要花二次的時間檢查。
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?