3

Get-S3Object -BucketName パイロットを試していますが、サブディレクトリがたくさんあります。

4

3 に答える 3

14

実際のコピーには、代わりにCopy-S3Objectを使用することをお勧めします。Get-S3Object は、S3Object メタデータのコレクションを返します。Get-S3Object を使用して、コピーするオブジェクトを分離し、そこから重要な情報 (キー) を Copy-S3Object に渡します。

パラメータを使用してKeyPrefix、結果を特定のサブディレクトリに絞り込むことができます。例えば:

$srcBucketName = "myBucket"
$objects = get-s3object -bucketname $srcBucketName -KeyPrefix "mySubdirectory"

すべてのディレクトリからデータをコピーする必要がある場合は、バケット内のディレクトリごとに 1 回、get-s3object を個別に呼び出すことで、この操作全体を小さなチャンクに分割できます。

個々のディレクトリがまだ大きすぎる場合は、MaxKeysパラメーターを使用して操作をさらに分割できます。


コピーする準備ができたら、次のようなことができます。

$objects | 
% { copy-s3object -BucketName $srcBucketName -Key $_.Key -LocalFile "somePath" }

...ローカルパスを定義した場所。文字列内のキーを解決することで、サブディレクトリとキーをローカル パスに一致させることもできます。"C:/someDir/$($_.Key)"

于 2014-02-28T16:07:30.417 に答える
1

私が所有している Powershell 用の AWS のバージョンでは、copy-s3object. だから、あなたが使用することができますread-s3object

また、get-s3object奇妙なことに、バケット名パラメーターがありません。

Get-S3Object -BucketName mybucket -Key path/to/files | % { Read-S3Object -BucketName mybucket -Key $_.Key -File $("C:\"+$_.key)}
于 2014-03-06T17:59:45.687 に答える