
1 億を超える画像ファイル (本の表紙) が、単一の「ディレクトリ」の下にファイルのフラット リストとして保存されています。
/images/000000093e7d1825b346e9fc01387c7e449e1ed7
/images/000000574c67d7b8c5726f7cfd7bb1c5b3ae2ddf
/images/0000005ae12097d69208f6548bf600bd7d270a6f
...
以前は、これらは Amazon S3 に保存されていましたが、現在は Backblaze B2 (S3 互換) に保存されています。
これまでのところ、これはうまく機能しました:
- 新しいファイルの保存は非常に高速です。
- 既存のファイルの取得は非常に高速です。
私は再び iDrive E2 (S3 にも対応) への移行を進めています。
私はそれらを動かす実験をしていますクローンしかし、開始を 30 分待った後rclone copy
、rclone はファイル リスト全体を受信するまでファイルの転送を開始しないことに気付きました。
問題は:
rclone ls
ディレクトリの簡単なベンチマークでは/images/
、ファイルリスト全体を転送するには約10時間かかることがわかります。- 転送中に問題が発生すると(数日かかる)、ゼロからやり直しとなり、rclone はファイルリスト全体を再度ダウンロードすることになります。
- ファイルの一覧表示お金がかかるB2以上
ファイルのバッチのみをコピーするように rclone を設定してみました:
rclone copy "backblaze:/images/0000*"
の有無にかかわらず*
、ファイルは見つかりませんrclone copy "backblaze:/images/" --include "/0000*"
ファイルリスト全体もダウンロードし、クライアントでフィルタリングするようです
不思議なことに、rclone は、たとえば という特定の「ディレクトリ」の下にあるファイルのリストをサーバーから取得するのには問題がないようです/images/
が、 などのプレフィックスの場合は同じことができないようです/images/0000
。
S3、さらにはS3互換ストレージはすべて、ファイルパスをフラットな構造で保存していると思っていました。、それは/
他のキャラクターと同じようなものであり、簡単に任意のプレフィックス(末尾が/
。
私が間違っているでしょうか?
私は次のストレージ(E2)ファイルをサブディレクトリに保存すべきかimages/0/0/0/0/
、、などimages/0/0/0/1
、従来のファイルシステムにファイルを保存していた古き良き時代と同じように、どのように保存すればよいのでしょうか?
答え1
rclone はファイル リスト全体を受信するまでファイルの転送を開始しないことに気付きました。
これは、ストレージ プロバイダーの問題というより、rclone 自体の問題であることを示しています。操作前にファイル リスト全体を必要とするソリューションよりも、リスト ストリームを開始し、到着したファイルをチャンク化するソリューションの方が適切です。
S3、さらにはS3互換のストレージは、ファイルパスをフラットな構造で保存していると思っていましたが、
これは間違いなく S3 のやり方であり、初めてこれに遭遇したとき、ファイル サーバー管理者としての私の頭は混乱しました。ここでの問題はファイル レイアウトではなくメタデータに関連するものであるように思われるため、おそらく問題にはなりません。