先週 U-File が登録受付を開始したタイミングでアカウントを登録し、容量無制限・2T のトラフィックを利用できるストレージを無料で手に入れました。しばらく待ってようやく審査に通過した後、コンソールを確認してみると、使用しているのはおそらく又拍雲のオブジェクトストレージのようでした。又拍雲が提供しているツールをいくつか試してみましたが、どれも正常に使用できました。

唯一少し残念なのは、又拍雲ストレージがまだミラーリングによるオリジン取得に対応していないことです。アリババの OSS、テンセントの COS、百度の BOS という大手 3 社のオブジェクトストレージや、七牛雲のような小規模プロバイダーでさえミラーリングによるオリジン取得に対応しているのに、又拍雲が対応していないのは不思議な話です。

ミラーリングによるオリジン取得に対応しておらず、しかも 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非同期処理タスクを送信
purgeCDN キャッシュ更新タスクを送信
global options説明
--quiet, -q情報を表示しない
--auth valueauth 文字列
--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 ディレクトリが完全に同期されていることを確認できます。

この方法は、他の Web サイトプログラムの静的リソースの同期にも使用できます。

WordPress

upx sync wp-content/uploads/ /wp-content/uploads/

Typecho

upx sync usr/uploads/ /usr/uploads/

Flarum

upx sync public/assets/ /public/assets/

Web サイトのルートディレクトリを直接同期することは絶対に避けてください。ルートディレクトリには、WordPress の wp-config.php ファイルのような config 設定ファイルが含まれている可能性があり、そこにはデータベースなどの重要な情報が含まれています。又拍雲ストレージにアップロードすると誰でもダウンロードできるため、安全性に重大な影響を及ぼします。

定期同期

現在、upx sync は増分同期方式を使用しており、リアルタイム同期にはまだ対応していません。そのため、定期同期を実現するにはスケジュールタスク方式を選択するしかありません。

ここでは宝塔パネルのスケジュールタスクを使用します。Crontab よりも簡単に使用できます。

注意が必要なのは、スケジュールタスク内で upx sync を実行する場合、同期するディレクトリをシステムルート基準のパスに変更する必要があることです。

1 分ごとに同期するよう設定しました。1 分後にログを確認すると、同期が正常に行われていることがわかります。

+=============+=========+===========+================+===========+=============+
| 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
----------------------------------------------------------------------------