使用 rclone 同步 Google Drive 檔案
因為愈來愈多檔案存放在 Google Drive, 所以要考慮一個自動的機制將檔案同步回自己的電腦主機內.
安裝方式
Alpine 3
- 安裝環境 : Alpine Linux 3.18
- 設定 cifs 掛上 NAS 目錄 : Alpine 設定 CIFS(SAMBA) 方式
apk add rclone rclone version
CentOS 7
- 安裝環境 : CentOS Linux release 7.7.1908 (Core)
- 安裝相關套件
yum install curl unzip man-db
- 開始安裝 rclone
curl https://rclone.org/install.sh | bash
- 安裝成功後可以下以下指令確認版本
rclone version
設定 rclone 對 Google Drive / Photos Library API 的 config
- 依據 rclone 的說明, 如果使用量大, 最好申請自己 Google 帳號的 oAuth 方式來使用 rclone
- 申請 Google API oAuth 的方式 :
- 連上 Google Developer Console - https://console.developers.google.com/
- 選擇一個專案 (第一次使用請先建立專案) 看畫面
- 啟用 Google Drive API看畫面
- 啟用 Photos Library API看畫面
- 建立 oAuth 憑證看畫面
- 進行 rclone config 的建立
rclone config
- n) New Remote (建立一個新的遠端連結定義)
- name> (設定這個遠端連結定義名稱) Exp. JonathanGooglePhotos
- Storage> (選擇 Cloud Storage 類型)
- 如果是 Google Drive 就要選 → 15 Google Drive
- 如果是要同步 Google 相簿 就要選 → 16 Google Photos
- client_id> (就直接輸入 oAuth 申請的 用戶端 ID)
- client_secret> (就直接輸入 oAuth 申請的 用戶端密碼)
- scope> (如果想雙向同步就選可讀寫 1, 若指向備份回本地端就選唯讀 2)
- root_folder_id> (如果整個 Drive 都要讀取就留空白, 因我定義這遠端連結是 Google 相簿, 所以先在瀏覽器上 Drive 點入 Google 相簿, 看到網址的 folder id) Exp. 我的雲端硬碟 → Google 相簿 網址 - https://drive.google.com/drive/u/0/folders/1RxkXxxxxxxxxxxxxxxxxxxxxxxxq7F_45Fxxxxxgs , 所以 Folder id 就是 1RxkXxxxxxxxxxxxxxxxxxxxxxxxq7F_45Fxxxxxgs
- service_account_file> (空白就好)
- Edit advanced config? (y/n) n
- Remote config Use auto config? (y/n) n ← 因為直接在 Linux Console 無法本機端有瀏覽器, 所以要選 n 產生認證網址
- 登入 Google 帳號
- 允許 rclone 的授權
- 將產生的授權碼複製下來 Exp. 4/_wxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxp9bRJw
- Enter verification code> (輸入瀏覽器產生的授權碼)
- Configure this as a team drive? (y/n) (個人的 Drive 就選 n)
- y/e/d> (如果呈現的設定都沒問題就選 y)
- q (離開 config 選單)
使用 rclone 讀取 Google Drive 的語法
- 列出所有檔案
rclone ls JonathanGooglePhotos:/
- 只列出目錄
rclone lsd JonathanGooglePhotos:/
- 將所有檔案複製回本機 /nas_Photos/ 目錄內
rclone copy -v JonathanGooglePhotos:/ /nas_Photos/GooglePhotos/
設定每天 2:00 執行一次
- 設定到 crontab
vi /etc/crontab
: 0 2 * * * root rclone copy --max-age 48h --no-traverse -v JonathanGooglePhotos:/ /nas_Photos/GooglePhotos/ 2>&1 | tee /tmp/syncGooglePhotos.log
- 重新啟動 crond
systemctl restart crond
- 如果要設定可以自動寄出 log 內容, 可先參考 CentOS7 設定 mailx 寄出 log 方式
- 將 /etc/crontab 改成類似以下的語法, 將原本產生的 /tmp/syncGooglePhotos.log 內容寄給 [email protected]
: 0 2 * * * root rclone copy --max-age 48h --no-traverse -v JonathanGooglePhotos:/ /nas_Photos/GooglePhotos/ 2>&1 | tee /tmp/syncGooglePhotos.log ; cat /tmp/syncGooglePhotos.log | mail -s "RClone Sync Log" [email protected]
更新 rclone 方式
- 其實和開始安裝 rclone 的語法相同
curl https://rclone.org/install.sh | bash
- 更新後的結果
Processing manual pages under /usr/share/man/sk... Purging old database entries in /usr/share/man/tr... Processing manual pages under /usr/share/man/tr... Purging old database entries in /usr/share/man/da... Processing manual pages under /usr/share/man/da... Purging old database entries in /usr/local/share/man... Processing manual pages under /usr/local/share/man... 0 man subdirectories contained newer manual pages. 0 manual pages were added. 0 stray cats were added. 0 old database entries were purged. rclone v1.54.0 has successfully installed. Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.