PHP API を使用して、サブフォルダーとファイルを含むフォルダーを S3 バケット内の別のディレクトリにコピー/複製するにはどうすればよいですか?
$s3->copy_object
フォルダーのみをコピーしますが、内部のファイルとサブフォルダーはコピーしません。
$s3->list_objects
すべてのファイルとディレクトリを取得し、すべてのファイル/ディレクトリで実行するために使用する必要があります$s3->copy_object
か?
S3 はファイルシステムではなく、オブジェクト ストアです。フォルダは、具体的な意味で実際には存在しません。フォルダーは、共有プレフィックスと呼ぶことができるものです。別の言い方をすれば、path/to/one
andを作成すれば、 andpath/to/two
も存在しません。それらが表示される場合は、一部のコンポーネントがオブジェクトのリストを取得し、それらのキーを で分割し、そのリストを階層として表示することにしたためです。path
path/to
/
「フォルダーを別のフォルダーに複製」したい。これを S3 の用語に言い換えると、「同じプレフィックスを持つすべてのオブジェクトを別のプレフィックスを持つオブジェクトに複製する」必要があります。そのように言うと、メソッドが明確になります。1 つのプレフィックスを持つオブジェクトのリストを取得し、それぞれをコピーします。
これを行う 1 つの方法は、リスト オブジェクトを使用して、各オブジェクトを 1 つずつ移動することです。もう 1 つの方法は、s3fuse を使用することです。これにより、s3 バケットがローカル ディレクトリとして作成され、「mv」などの簡単なコマンドを適用してファイルを移動できます。