NAS 如何自動控制 Dropbox 公有雲同步空間不爆掉

手機同步,是移動世代很受用的功能,攝錄作品能同步放在公有雲(例如 Dropbox),既是備分又可分享。再搭配 NAS 的雲端對雲端同步功能(以 Synology 為例,是 Cloud Sync),甚至能加入如 Photo Station 的電子相簿中即時分享。

唯一的問題,是公有雲空間往往不比手機含SD卡的總儲存空間,公有雲空間一旦爆掉,同步功能同時停擺,新的攝錄作品便不能即時備分即時分享了。這時若唯一留存新作品的手機又出事,壞掉了、被偷了、被撞下懸崖了、被猴子搶去了等等狀況,可能一輩子才有一次的攝錄作品、紀念畫面就此消失了,再怎麼扼腕、捶胸、頓足、燒香、拜佛、報警也沒用。因此維持公有雲有足夠空間,是一件重要事。

以往我都手動方式移動 NAS 私有雲同步資料夾的檔案,到另外的儲存地點,公有雲上會同步刪除清出空間,當然同時間手機上的也是同步刪除了,也清出空間(當然這可另外設定)。然而人皆有懶性,常做這事也會覺得繁瑣。

然而,誰說的「科技始終來自於懶性」,沒有實力也要練功力,沒有功力也要絞腦力。幾經思索,想著既然手動都做到了,就把它改成自動吧!於是決定用 shell script 從 NAS 端下手,讓個人的私有雲能定時自動幫我做這件事。(底下以 Linux 系統與 bash script 為例)

➡功能思索:

  • 在指定資料夾中搜尋所有期限前檔案;
  • 將之移至目標資料夾;
  • 定期自動執行。

➡指令需求:

  • 搜尋指定文件:find
  • 移動指定文件:mv
  • 定期自動執行:系統排程

➡參數需求:

  • 指定搜尋資料夾:要進行處理的資料夾
  • -mtime N:指定搜尋 N 天前的檔案

    ## man find 有關 -mtime n 參數說明:
    File’s data was last modified n*24 hours ago. See the comments for -atime to understand howrounding affects the interpretation of file modification times.

  • -exec command

    ## man find 有關 -exec command 參數說明:
    Execute command; true if 0 status is returned. All following arguments to find are taken tobe arguments to the command until an argument consisting of `;’ is encountered. The string`{}’ is replaced by the current file name being processed everywhere it occurs in the argu-ments to the command, …
    ## man find 有關 -exec command {} + 參數說明:
    This variant of the -exec action runs the specified command on the selected files, but thecommand line is built by appending each selected file name at the end; …

  • -t 指定目標資料夾:檔案移動的目標資料夾

    ## man find 有關 -t, –target-directory=DIRECTORY 參數說明:
    move all SOURCE arguments into DIRECTORY

➡指令結構:

find “搜尋資料夾” -mtime 天數 -exec mv -t “目標資料夾” {} +

➡完整指令:

find "/volume1/anyuser'sDropboxDIR/Camera Uploads" -mtime +30 -exec mv -t "/volume1/homes/anyuser'sDIR/photo/albumDIR" {} +

這樣就能達成搜尋並移動的功能了,把這行指令寫成一個 .sh 命令文件,再上傳到 NAS 某個資料夾中,只要加上系統排程便能自動運作,從此遺忘它的存在。


➡系統排程:(以 Synology 為例)

  • 控制臺 > 任務排程表 > 新增 > 任務排程 > 使用者定義指令碼
  • 先在一般設定給任務取個一看就懂的名稱,然後在排程設定裡定下執行周期
  • 最重要的就是在任務設定 > 使用者定義指令碼裡,告知要執行哪一個 shell script

這樣就大功告成了,過不久,你就會根本忘記有這一個自動指令文件存在,反正才只有幾GB大的公有雲端空間,永遠裝得下新攝錄的照片影片。但哪天疑惑為何手機儲存空間永遠裝不滿,而裡面的照片會每月一次自動消失時,別忘了查查任務排程表。

☆後記:
當然,這只是以「設定期限」來決定哪些檔案必須移出,以維持公有雲端空間足夠使用。若有興趣,可思考以「設定空間大小」來決定是否啟動此移出功能,這就必須是以整個資料夾的佔用空間大小來判斷了,例如「判斷當資料夾佔用空間超過多少GB時,就啟動功能」。Linux 系統有個 du 指令或可嘗試,想研究的人自行研究吧!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *