s3 に大量の画像 (数十万) を含むバケットがあります。各画像には非常にユニークなファイル名 (長いハッシュ名) があり、データベース内の対応するオブジェクト ID に従って名前が付けられたサブディレクトリに保存されます。
簡単な例:
/bucket/1/red-1.jpg
/bucket/1/red-2.jpg
/bucket/1/red-3.jpg
/bucket/2/blue-1.jpg
/bucket/2/blue-2.jpg
/bucket/2/blue-3.jpg
問題は、データベース内の ID が変更され、誤ってサブディレクトリの名前が変更されていないことです。これは、私のデータベースによると、画像red-1.jpg
は にあるはずです/bucket/2
が、実際にはまだ にあることを意味します/bucket/1
。red-1.jpg
したがって、すべてのサブディレクトリを検索し、 というファイルを見つけて、それを正しいディレクトリ (この場合は ) に移動できる必要があります/bucket/2
。
注:ファイルの移動に関する部分は非常に簡単です。最大の問題は、名前はわかっているが現在のディレクトリではない、これらの画像のパスを効果的に検索して見つける方法です。
私はルビーを使用していますが、何でも使用することにかなりオープンです。
PS。アマゾンのクラウド検索について何か見ましたが、それがこれに使用できるかどうかはわかりません..