私はこれを少し探していましたが、Drupal 7では、D7がストリームラッパーをサポートし、フィールドがコアの一部であるため、比較的簡単です...しかし、私はドキュメントが見つかりません。
ノードに数千のファイルが添付されたファイルフィールドがあり、現在public://を使用しています。
AmazonS モジュールもインストールしてあり、他のいくつかのファイルフィールドはすでにs3://ストリームラッパーを使用するように設定されています。
次に、public://
を使用してファイルフィールドをs3://
に移行し、サイトのファイルフォルダーに既にアップロードされているすべてのファイルをs3に切り替えます。ファイルを手動でS3のバケットにコピーできますが、パブリックではなくs3を介してファイルをロードするには、Drupal /データベースで正確に何をする必要がありますか?
file_managed
でpublic://custom/path
テーブルのすべての行を更新してs3://custom/path
に変更するカスタムクエリを作成することを考えましたが、(a)異なるパスで移行された古いファイルがいくつかありますcustom/path
より(b)これがS3を使用するDrupal)を取得する正しい方法であるかどうかはわかりません。
[Edit:APIのfile_move()関数に気づきました—これを使用してファイルを移動できます(フィールドのフィールドストレージを切り替えた後) UI)ファイルを手動でコピーしてデータベースを更新する代わりに?]。
2つのサーバー間で一致するパスの場合、file_managed
のパスをs3://
で始まるように変更し、キャッシュをクリアすると、S3モジュールが残りを処理します。
このモジュール は本当に役立つはずです。あなたがやろうとしていることとかなり似ている誰かのためのモジュールを書いたところです(ただし、ファイルがローカルファイルシステムからS3にプルーニングされている場合を除く)。 cron)とそのリンクのモジュールは素晴らしい出発点でした。
S3モジュールは完全に機能するストリームラッパーを実装しているため、通常のすべてのファイル関数(file_copy
、file_move
、file_delete
など)を通常どおり使用できます。ファイルがあります。