UPX 同步本地檔案到又拍雲儲存
上週趁 U-File 開放註冊的時候註冊了一個帳戶,白嫖了一個無限儲存 2T 流量的空間,等了許久終於審核通過後上控制台看了下,應該使用的是又拍雲物件儲存,我測試了幾款又拍雲提供的工具,都是可以正常使用的。
唯一有點遺憾的是,又拍雲儲存暫未支援映像回源,說來也奇怪,阿里 OSS、騰訊 COS、百度 BOS 三個大廠的物件儲存以及七牛雲這類小廠都能支援映像回源,又拍雲居然不跟進。
既然不支援映像回源,而我又需要 U-File 來映像加速我的圖床,只能採取另外的方案了。所以我在又拍雲的文件裡找到了 UPX 命令列工具,其中有一個 sync 可以用來同步本地路徑到又拍雲物件儲存上面,雖然無法實現映像回源,但是雲端儲存的資料能和本地同步,也算是映像的另一種形式。
專案介紹
UPX 是專為開發者設計的,基於命令列的雲端儲存管理工具。它可以實現檔案上下傳、增量檔案同步、目錄建立刪除、檔案刪除(包括非同步檔案批次刪除)等。
開源專案:https://github.com/upyun/upx
詳細介紹可以查看專案的 README
這裡主要寫一下如何在 CentOS 上面使用 upx 同步本地檔案到又拍雲儲存。
安裝 UPX
# 64 位系统下载
wget -O /usr/local/bin/upx http://collection.b0.upaiyun.com/softwares/upx/upx-linux-amd64-v0.2.6
# 32 位系统下载
wget -O /usr/local/bin/upx http://collection.b0.upaiyun.com/softwares/upx/upx-linux-386-v0.2.6
# 给予权限
chmod +x /usr/local/bin/upx
安裝好之後可以直接輸入 upx 查看是否安裝成功

命令介紹
所有命令都支援
-h查看使用方法
| 命令 | 說明 |
|---|---|
| login | 登入又拍雲儲存 |
| logout | 登出帳號 |
| sessions | 查看所有的工作階段 |
| switch | 切換工作階段 |
| info | 顯示服務名稱、使用者名稱等資訊 |
| cd | 改變工作目錄(進入一個目錄) |
| pwd | 顯示目前所在目錄 |
| mkdir | 建立目錄 |
| ls | 顯示目前目錄下檔案和目錄資訊 |
| tree | 顯示目錄結構 |
| get | 下載一個檔案或目錄 |
| put | 上傳一個檔案或目錄 |
| rm | 刪除目錄或檔案 |
| sync | 目錄增量同步,類似 rsync |
| auth | 產生包含空間名稱、操作員密碼資訊的 auth 字串 |
| post | 提交非同步處理任務 |
| purge | 提交 CDN 快取刷新任務 |
| global options | 說明 |
|---|---|
| --quiet, -q | 不顯示資訊 |
| --auth value | auth 字串 |
| --help, -h | 顯示說明資訊 |
| --version, -v | 顯示版本號 |
登入又拍雲
輸入 upx login 命令,依次輸入服務名稱、操作員、操作員密碼後按 Enter 登入,看到 Welcome to 即表示登入成功。
可以輸入 upx info 查看資訊,CurrentDir 為目前所在目錄,Usage 為已使用空間。

UPX 還支援多帳戶登入,可以使用 upx sessions 來查看所有登入工作階段,使用 upx switch 來切換工作階段,由於我沒有多餘的帳戶,這裡就不進行演示。
同步檔案
首先使用 cd 開啟要同步的目錄,然後使用 upx sync 來進行同步。
比如我輸入的 upx sync 2020/ /2020/,就是將目前目錄下的 2020 資料夾同步到又拍雲儲存上面根目錄下的 2020 資料夾。

同步完成之後會有以上提示,使用 FTP 工具連線上 U-File 可以看到 2020 目錄已經完整地同步過來了。

此方法也可以用於同步其他網站程式的靜態資源
WordPress
upx sync wp-content/uploads/ /wp-content/uploads/
Typecho
upx sync usr/uploads/ /usr/uploads/
Flarum
upx sync public/assets/ /public/assets/
千萬不要直接同步網站的根目錄,因為根目錄下面可能包含 config 設定檔,例如 WordPress 的 wp-config.php 檔案,裡面包含了資料庫等重要資訊,而上傳到又拍雲儲存之後可以被任何人下載,嚴重影響安全性。
定時同步
目前 upx sync 使用的是增量同步的方式,暫不支援即時同步,所以只能選擇計畫任務的方式來實現定時同步。
這裡使用的是寶塔面板的計畫任務,比 Crontab 使用起來簡單一些。
需要注意一下,在計畫任務裡面執行 upx sync 要把同步的目錄改成以系統為根目錄。

我設定的是一分鐘同步一次,一分鐘後來看一下日誌,可以看到同步是正常的
+=============+=========+===========+================+===========+=============+
| SYNC_EXISTS | SYNC_OK | SYNC_FAIL | SYNC_NOT_FOUND | DELETE_OK | DELETE_FAIL |
+-------------+---------+-----------+----------------+-----------+-------------+
| 571 | 0 | 0 | 0 | 0 | 0 |
+-------------+---------+-----------+----------------+-----------+-------------+
----------------------------------------------------------------------------
★[2020-05-30 13:50:04] Successful
----------------------------------------------------------------------------
評論
(1)感觉贵站非常不错,希望与贵站友情链接! 我的网站:建站知道网-http://wozhidaole.com.cn 如果同意互换友情链接,请回复!