几天前,我正在试验S3和Glacier,并且我的数据已存档,因此要恢复它,我必须使用他们的快速服务(这需要很多钱)。我想将我所有的内容从一个存储桶移到同一帐户中同一区域的另一个存储桶。
当我尝试同步数据时,出现以下错误 已完成10.9 MiB /〜10.9 MiB(30.0 KiB / s),剩余〜0个文件(计算警告:正在跳过文件s3://bucket/zzz0dllquplo1515993694.mp4。对象属于存储类GLACIER。无法在GLACIER上执行复制操作对象。必须还原该对象才能执行该操作。有关忽略或强制执行这些传输的其他参数选项,请参见aws s3复制帮助。
我正在使用以下命令,我想知道美元将花费我多少钱?因为我所有的文件存储类都从“标准”更改为“冰川”。因此,我不得不使用--force-glacier-transfer标志
aws s3 sync s3://bucketname1 s3://bucketname2 --force-glacier-transfer --storage-class STANDARD
答案 0 :(得分:2)
如果您已还原它们并且在到期日期之前,则应该能够同步它们而无需进行其他还原。对于所有递归命令,您都会遇到Glacier错误,因为它们使用的API不会检查是否已还原。您可以在他们添加了--force-glacier-transfer
的票证中对其进行阅读。
https://github.com/aws/aws-cli/issues/1699
使用--force-glacier-transfer
标志时,它不会再进行其他还原,只会忽略该API,表明该对象位于Glacier中,并且仍会尝试。如果未还原该对象,它将失败(它不会尝试还原它)。
请注意,这仅适用于递归命令(例如,使用--recursive进行sync和cp / mv命令),如果仅复制1个文件,它将不带force标志。
答案 1 :(得分:0)
BUCKET=my-bucket
DATE=$1
BPATH=/pathInBucket/FolderPartitioDate=$DATE
DAYS=5
for x in `aws s3 ls s3://$BUCKET$BPATH --recursive | awk '{print $4}'`;
do
echo "1:Restore $x"
aws s3api --profile sriAthena restore-object --bucket $BUCKET --key $x --restore-request Days=$DAYS,GlacierJobParam
eters={"Tier"="Standard"};
echo "2:Monitor $x"
aws s3api head-object --bucket $BUCKET --key $x;
done
https://aws.amazon.com/premiumsupport/knowledge-center/restore-s3-object-glacier-storage-class/