## 前言
之所以寫這篇,是因為有關 rclone 的資料,不知為何很少,大部分的資料都是英文圈或是簡體的比較多,且有時候遇到的問題,也找不太到,所以寫這篇來整理資料
## 使用原因
目前備份資料的方式有很多種,不外乎就是隨身硬碟做冷儲存,或是自建 NAS,但隨身硬碟可能會面臨意外而沒有察覺,導致備份遺失等較多不確定的因素,而 NAS 的部分,可能受限於價格,若要備份建議 4Bay 以上,且使用 Synology,應該是最穩定的了,當然也可以自架,但自架問題不少,需有一定知識
因此撇除以上部分,剩下只有公有雲了(指 Google Drive、OneDrive 等),然而公有雲會有個問題,雖然都說強調隱私,但是其實為了法律等原因,其實都會做掃描,這邊的掃描當然不是指員工去看,而是用 AI 之類的工具去掃,確保你沒有放違反它們政策的東西,但有時候就很容易出錯,案例不外乎以下這些:
[Google雲端相簿「帳戶被停用」!他踩紅線崩潰:直接被判死](https://tw.news.yahoo.com/google%E9%9B%B2%E7%AB%AF%E7%9B%B8%E7%B0%BF-%E5%B8%B3%E6%88%B6%E8%A2%AB%E5%81%9C%E7%94%A8-%E4%BB%96%E8%B8%A9%E7%B4%85%E7%B7%9A%E5%B4%A9%E6%BD%B0-%E7%9B%B4%E6%8E%A5%E8%A2%AB%E5%88%A4%E6%AD%BB-020831372.html)
[Google相簿帳戶突遭停用!「照片恐全被刪除」他超崩潰,官方曝原因](https://supertaste.tvbs.com.tw/hot/350804)
[你的檔案不是你的檔案?Google 隱私政策更新,我該自建NAS 嗎? #雲端硬碟(172612)](https://www.cool3c.com/article/172612)
當然可能會有人說,不要違反條款不就好,重點是,你不知它條款的紅線在哪,你可能也沒那個時間去翻條款,甚至有時候會不小心就碰到,所以理論上最好的方法,應該是使用 NAS 這種私有雲,確保資料只有自己可見,問題是原因就像上面說的那樣,成本較高
綜上所述,如果要使用公有雲的話,對於一些不能見人的檔案,你可以加密後上傳,而一般的資料則照一般上傳即可,倒也不用太擔心,公有雲的安全性還是有的,只是對於隱私的部分,不能太相信,當然,除非你是商業用戶,那另當別論
後面介紹會使用的雲端平台為 OneDrive,其實沒有什麼特別的原因,單純是因為我有買 Microsoft 365,內附 1TB 的雲端空間,本來沒什麼在用,但因為近期微軟宣布要漲訂閱費,感覺不用太浪費,因此就想說拿來備份一些重要資料好了,但我的這些重要資料包含「~~學術資料~~」,要是沒用好,我的帳號就會被 Ban 了,因此鐵定是需要加密的,故以下介紹 rclone 這套軟體
## rclone 介紹
根據 rclone 官網的介紹,是這樣的
> Rclone is a command-line program to manage files on cloud storage. It is a feature-rich alternative to cloud vendors' web storage interfaces. Over 70 cloud storage products support rclone including S3 object stores, business & consumer file storage services, as well as standard transfer protocols.
基本上就是幫助你把資料放上雲端的軟體,且支援 70 種的雲端平台,你聽過的大概都有
功能的部分則是
> Rclone helps you:
Backup (and encrypt) files to cloud storage
Restore (and decrypt) files from cloud storage
Mirror cloud data to other cloud services or locally
Migrate data to the cloud, or between cloud storage vendors
Mount multiple, encrypted, cached or diverse cloud storage as a disk
Analyse and account for data held on cloud storage using lsf, ljson, size, ncdu
Union file systems together to present multiple local and/or cloud file systems as one
翻成中文就是
> Rclone 可以幫你:
備份(並加密)文件到雲端存儲
從雲端存儲還原(並解密)文件
將雲端數據鏡像到其他雲端服務或本地
將數據遷移至雲端,或在不同雲端存儲供應商之間進行遷移
將多個加密、快取或多樣化的雲端存儲掛載為本地磁碟
使用 lsf、ljson、size、ncdu 等指令分析和統計雲端存儲上的數據
將多個本地和/或雲端文件系統聯合起來,呈現為單一文件系統
說了這麼多,簡單說就是幫助你把資料快速上傳到雲端,且也支援掛載,可以把雲端掛到自己電腦的檔案系統上,並且可以加密
這套軟體的多功能性,甚至有以下的美名
> Users call rclone "The Swiss army knife of cloud storage", and "Technology indistinguishable from magic".
就是指雲端儲存的瑞士刀,技術與魔法無異
簡單介紹到這邊,其他可以去他們官網看
[rclone](https://rclone.org/)
## 使用平台與環境
Windows 11 家用版
OneDrive 1TB
rclone Intel/AMD - 64 Bit(Windows)
WinFsp
## rclone 教學部分
### 下載
首先,要使用這套軟體,第一步當然就是下載軟體了
先到他們官網,可以用下面連結
[rclone](https://rclone.org/)
或是自己 google 搜尋 `rclone`
但請確認官網是
```url
https://rclone.org/
```
一進去畫面是這樣

請點紅框處的下載

進去後長這樣

請往下滑,看到版本並選擇紅框處的(僅限 Windows 11 or Windows 10 並使用 Intel/AMD 64-bit 處理器)
我的意思是,這是配合我的環境選的,不代表每次都在這個位置,有可能之後網頁更新,下載的選項不在是同一個位置
簡言之,請依照你的環境選擇

下載後解壓縮,解壓縮這裡就不詳述
解完後,你想丟哪就丟哪,因為這個軟體是不用安裝的,只是先確定解壓縮完後裡面有這些內容

而這時候我放這些資料的資料夾名稱如圖

簡單說,就是這個資料夾你想放在哪顆硬碟都可以,反正你記得就好
接下來,先不要急著打開那個 `exe`,這是一個 command line 的工具,我們先把他加入系統變數
我不確定其他電腦怎麼樣
但在 Win 11 中,底下搜尋列 打 `系統變數` 就可以了

點開後長這樣

請點紅框處

進去後,請在紅框處往下拉,直到看到 `Path`

如下圖

對它點兩下

進來後,應該如上圖這樣
接著依序點紅框,再點綠框的地方,系統應該會讓你選位置
請選擇你放 rclone 的資料夾,例如你剛上面解壓縮完的東西放在 rclone_2024 這個資料夾,那你就點這個資料夾,選完後,按確定
接著你剛怎麼點進來的,點進來的每一頁都按下確定即可
如果要測試是否加入了,請按 `win+R`,並輸入 `cmd`

接著輸入 `rclone --version`

如果要跳出類似以上畫面,則表示設定完成
### 配置設定檔(config)
上面的動作完成後,接著要正式開始設定這個工具了
首先,打開 CMD,打開的方式就像之前說的那樣,這裡不再說明
輸入以下指令
```
rclone config
```

應該會出現以下畫面

這邊請輸入你想要為這個設定檔取的名稱,建議取簡單易懂且不要太長,因為這會是你之後上傳或是其他操作時會一直用到的名稱
按下 Enter 後,應該會跳出下圖這樣,有一堆名稱

這裡是要選擇你要使用的雲端供應商,在此次案例中,我們需要選擇 OneDrive,因此輸入 35(請注意,這些號碼不一定是固定的,請確定後再輸入),確定後,按下 Enter

下一步應該會跳出這個選項

這裡的話,如果不想設定可以暫時跳過,但如果你想設定可以參考後面的教學,這裡是否設定與否取決於你是否在乎傳輸速度,因為預設會使用 rclone 官方設定的 key,因此額度可能會與其他人共用,如果你沒有特別需求,倒也不用設定就是了,除非你覺得速度太慢等原因,再設定即可
因此,此處我們先跳過
按下 Enter 即可跳過(代表不設定)

這個跟上面那個 `clent_id` 是一組的
因此也先跳過,按下 Enter(代表不設定)
出現下圖畫面後,請選擇選項 1,`Microsoft Cloud Global`

輸入 1 後,按下 Enter 繼續
會詢問你要不要編輯進階的設定,這裡不用,因此選擇 `No`

輸入 n 後,按下 Enter
出現以下畫面

這裡是問你要不要自動幫你驗證,會使用瀏覽器幫你驗證,一般狀況或一般使用者,輸入 y 即可,代表使用瀏覽器驗證
按下 Enter 後,應該會跳出瀏覽器要你登入 OneDrive,依照指示登入以及授權即可,授權完後應該會跳到以下畫面

這裡要注意,因為 rclone 會使用一個本地的伺服器來接收從 Microsoft 授權的 token,這個伺服器開在 port `53682`,因此,如果驗證失敗,請確定你的這個 port 沒有被占用
如果一切正常,你應該會看到以下選項出現

這裡請選擇 1,`OneDrive Personal or Business`,代表個人版或商業版 OneDrive,除非你是其他版本,不然一般人就是 1 就好
按下 Enter 繼續
接著會出現下圖,原則上應該是一個選項而已,輸入 1 後按下 Enter,或是直接按 Enter 即可

出現以下畫面,輸入 y 後按下 Enter 即可

之後應該會出現一堆字串,應該是 token 之類的,會顯示成類似下面這樣
```shell
Configuration complete.
Options:
- type: onedrive
- token: {"access_token":"youraccesstoken","token_type":"Bearer","refresh_token":"yourrefreshtoken","expiry":"2018-08-26T22:39:52.486512262+08:00"}
- drive_id: b!Eqwertyuiopasdfghjklzxcvbnm-7mnbvcxzlkjhgfdsapoiuytrewqk
- drive_type: businessConfiguration complete.
```
接著應該會跳出以下問題
```shell
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
```
這裡輸入 y 後,按下 Enter 即完成設定
接著再輸入一次
```
rclone config
```
應該會出現你剛用好的設定檔
確認完後,輸入 q 後,按 Enter 離開
### 設定 client id 及 client secret
接著單獨說明一下這兩個東西要怎麼設定
首先,你要有一張信用卡,因為他要使用到 Azure,另外,一開始輸入信用卡時,會扣 1 美金驗證,但不會請款,不用擔心,只要你後續不要開啟所謂的「隨用隨付」的選項,理論上不用擔心會有收費問題,至少我目前沒有
Google 搜尋 Azure
或是點以下連結前往
[Azure](https://azure.microsoft.com/zh-tw)
進來後應該長這樣

接著請點紅框處 `開始使用 Azure`

會跳到以下畫面

請點紅框處 `免費使用 Azure`

如果你沒有註冊過 Azure,應該會要求你登入 Microsoft 帳戶,這裡登入你自己的微軟帳戶即可
接著會出現以下畫面

就照他要求填寫即可
因為我已經註冊過了,所以沒辦法再提供截圖說明這裡如何操作,只能以文字說明
底下會要求填一些基本資料,就照你的資料填即可,地址那邊不一定要填完整地址,你可以只填一半也可以,然後後面會要填你有沒有稅務資訊,就是需不需要發票之類的,照你需求填寫即可,以及最後會要填信用卡,都填完之後,註冊完帳號,你應該會進到以下畫面

右上角應該還會有你的帳戶名稱等,這張圖中沒有顯示出來
接著點選左上角紅框處

點開後,請往下拉,選擇紅框這的選項 `Microsoft Entra 識別碼`

進來後,可能長這樣

點紅框處

進來的頁面可能是這樣

接著左邊欄位往下滑滑到紅框處,點選 `應用程式`

接著應該會出現一些選單
點選綠框處 `應用程式註冊`
畫面應該會出現下圖這樣的畫面

點選紅框處 `新增註冊`

進來後長這樣

以下說明如何設定

名稱部分,隨便你怎麼設定,一般取容易辨識的名稱
像我這邊可能取 `rclone_use`
接下來

支援的帳戶類型,請選取綠框處的選項
`組織目錄中的帳戶 (Microsoft Entra ID 租用戶 - 多租用戶) 和個人 Microsoft 帳戶 (例如 Skype、Xbox)`
選完後,往下滑,


紅框處,請選擇 `Web`
綠框處,請輸入以下網址 `http://localhost:53682/`
這是 rclone 指定的
確定後,請點選最下面的 `註冊`

註冊完後
請點選左側欄位紅框處

之後應該會出現這樣的畫面

請點選紅框處的 `用戶端密碼`

再點選綠框處的 `新增用戶端密碼`
會出現以下視窗

描述請自行輸入,我這裡打 api key
到期,請選 `24個月`
之後點選紅框處的新增

接著是最重要的一部分
請複製 `值`,按下紅框,可以複製該值,但請記得複製後,將值先存起來

<font style="color:red;">**注意:"值"是之後無法再看到的**</font>
<font style="color:red;">**注意:"值"是之後無法再看到的**</font>
<font style="color:red;">**注意:"值"是之後無法再看到的**</font>
`值` 對應到 rclone 的設定是 `client_secret`
接著我們需要新增權限,一樣看到左邊選單

選擇 `API 權限`,點進去
點進去後應該長這樣

請點選紅框處,點選 `新增權限`
接著應該會看到以下畫面

並點選紅框處 `Microsoft Graph`
進入後長這樣

接著點選紅框處 `委派的權限`
接著會看到 `選取權限`

請輸入以下內容,並依序確定
`Files.Read`

選擇圖片中打勾的選項,先不需要按下 `新增權限`,待需要的選項都打勾後再按即可
以下每一個都是這樣的步驟,僅以圖片說明
`Files.ReadWrite`

`Files.Read.All`

`Files.ReadWrite.All`

`offline_access`

`User.Read`

`Sites.Read.All`

接著需要的東西都打勾後,按下 `新增權限`
應該會跳出以下畫面

確定後,請點選紅框處的 `代表預設目錄授予管理員同意`
出現以下通知

請選 `是`
都用完後,一樣看到左側選單

請選擇紅框處 `概觀`

接著請將畫面中的 `應用程式 (用戶端) 識別碼` 內的值複製下來
這是 rlcone 設定中的 `client_id`
至此,API 相關設定完成
總結
rclone 設定中的 `client_id` 是 `概觀` 中的 `應用程式 (用戶端) 識別碼`
rclone 設定中的 `client_secret` 是前述設定 `憑證及秘密` 時,`值` 的內容
OneDrive 這邊設定完後
就輪到 rclone 做設定
其實也沒有什麼問題
一樣輸入
```shell
rclone config
```
會看到下面這些選項

請輸入 `e` 來更改你之前設定的 remote,基本上設定與一開始的一樣,照著說明即可完成,只是 在 `client_id` 及 `client_secret` 填入我們上面剛設定完的資料,之後就與一開始一樣即可,照著程式的步驟就好
### 將 config 加密
在設定完上面的東西後,我認為我們需要將整個設定檔加密,原因是,前面設定好的加密專用設定檔,以及 `client_id` 及 `client_secret`,現在都是使用明文儲存在副檔名 `conf` 的檔案中,屬實有點不安全
因此,接下來介紹加密
一樣輸入
```
rclone config
```

請選擇 `s` 來幫設定檔加密,接著照系統說明輸入即可,若日後有機會我再補說明
### command 介紹
接著,介紹一下常用的 command,大概有以下這些
```
rclone copy
rclone lsf
rclone mkdir
rclone purge
rclone delete
rclone checksum
rclone cryptcheck
rclone mount
```
以下介紹順序單純是隨便放,沒什麼特別的意思
所謂的設定檔,指的就是一開始你用 `rclone config` 設定的東西,而設定檔名稱,就是那時候說要設定的名稱,那時候說不要太複雜就是因為這邊會一直用到,如果忘記了可以往前面看
#### rclone copy
這是最常使用到的指令之一
官網的 document 是寫這樣用的
```
rclone copy source:sourcepath dest:destpath
```
基本上,就是把 `source` 的東西丟到 `dest` 去,可以當成上傳或下載,那使用方法就是,雲端空間需要使用 remote 的名稱,本地這邊使用路徑
remote 指的就是你剛 rclone 設定檔的名稱
例如:
如果我今天有
本地 F 槽的某個資料夾(假設資料夾名稱是 `test_2024`)
OneDrive 的某個資料夾(假設資料夾名稱是 `test_2024_OD`)
rclone 設定檔的名稱是 `rclone_OD`
然後我要從本地上傳檔案到 OneDrive
那指令如下
```
rclone copy "F:test_2024" "rclone_OD:test_2024_OD"
```
請注意,`:` 的後面表示你的路徑
也就是說,上面這條指令的意思是
將 `F` 槽中的 `test_2024` 這個資料夾的**內容**,上傳到 `rclone_OD` 中的 `test_2024_OD` 這個資料夾,另外,這裡設定檔預設是使用最上層的目錄,若是你有另外指定在某個目錄的話,請小心不要用錯了
例如,如果你在設定檔中有設定某個目錄,假設你一開始時設定 OneDrive 中的 `2023` 這個資料夾是你的初始位置
那你之後使用這個設定檔時,會從 `2023` 這個資料夾開始,又另外假設你的設定檔叫做 `OD_remote`,那你使用這名稱時,其實是處在 `2023` 這個資料夾內,還請注意(尤其是使用加密的設定檔時,通常會指定一個資料夾做初始位置,而不會指定在最上層目錄)
回到一開始的指令,上面這條指令會將該資料夾的**所有內容**上傳到指定資料夾內,也就是說,如果你有單檔要上傳,記得加檔案名稱
例如,我在資料夾內的檔名叫做 `2024.txt`
那麼,指令應該要像下面這樣
```
rclone copy "F:test_2024\2024.txt" "rclone_OD:test_2024_OD"
```
這樣就可以將這個 txt 檔案丟到 OneDrive 的指定資料夾內,另外,若一開始沒有這個資料夾名稱,rclone 會幫你自動建一個
把 `resource` 與 `dest` 換位置的話,就變成下載檔案到本地的指定位置了,這裡不再贅述
#### rclone lsf
指令用法如下
```shell
rclone lsf yuor_remote:your_folder
```
這裡介紹一下用法
`your_remote`,請填你設定檔的名稱
`your_folder`,請填你要查詢的資料夾名稱
這條指令會列出你要查詢的資料夾底下的檔案名稱及資料夾
若只打 `yuor_remote`,則會列出根目錄底下的東西(預設)
例如
```shell
rclone lsf OD_cloud:test
test1.txt
test2.txt
test3.txt
test_folder/
test_folder2/
```
其他參數請參考
[官網](https://rclone.org/commands/rclone_lsf/)
#### rclone mkdir
使用方法如下
```
rclone mkdir remote:path
```
以下說明參數
`remote`,代表的是你的設定檔
`path`,代表你要的資料夾名稱
一樣,預設的 path 位置會是你雲端的根目錄,因此,如果你要在根目錄建立一個資料夾,舉例如下
```
rclone mkdir your_remote:test
```
這樣就會在根目錄建一個叫 test 的資料夾
如果想要在 test 中,再建立一個資料夾
可以這樣用
```
rclone mkdir your_remote:test\in_test_folder
```
大概是這樣,這樣可以建立資料夾
#### rclone purge
待補充
#### rclone delete
待補充
#### rclone checksum
待補充
#### rclone cryptcheck
待補充
#### rclone mount
這個指令是拿來將雲端硬碟掛載到本地
意思是,你可以把雲端硬碟當成自己電腦上的硬碟來用
那在 windows 中,掛載可以掛載成**一般硬碟**,或是**網路磁碟**
### 測試檔案上傳(command)
待補充
### 配置加密檔案上傳設定檔
待補充
### 測試掛載
待補充
### 測試檔案上傳(掛載)
待補充
### 使用 cryptcheck 確定加密檔案完整性
待補充