![如何删除 Vault(AWS Glacier)](https://linux22.com/image/1389461/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%20Vault%EF%BC%88AWS%20Glacier%EF%BC%89.png)
我正在使用 Mac OS X 上一个名为 Arq 的工具来备份我的数据,但我发现上传所有资料非常困难,因为我没有并且无法拥有足够快的互联网连接。
因此我决定删除所有备份,但每当我从软件本身尝试时,它都什么也不做。
我也在另一台 Windows 机器上尝试过 FastGlacier,但它挂断了并且占用了太多资源。
我想知道是否有简单的方法可以做到这一点。
PS 我的 glacier 中有 341907 个档案,大小约为 450 GB
答案1
该项目的 purge-vault 运行良好:https://github.com/vsespb/mt-aws-glacier
安装,然后运行这些命令(将 vault-name 替换为您的保管库的名称):
mtglacier retrieve-inventory --config glacier.cfg --vault vault-name
等待大约 2 小时,然后
mtglacier download-inventory --config glacier.cfg --vault vault-name --new-journal vault-name.log
mtglacier purge-vault --config glacier.cfg --vault vault-name --journal vault-name.log
答案2
https://github.com/leeroybrun/glacier-vault-remove就是为了这个目的而创建的。
要删除保管库,请首先安装依赖项:
$ git clone https://github.com/leeroybrun/glacier-vault-remove.git
$ cd glacier-vault-remove
$ python setup.py install
credentials.json
然后在同一目录中创建一个凭证文件:
{
"AWSAccessKeyId": "YOURACCESSKEY",
"AWSSecretKey": "YOURSECRETKEY"
}
然后像这样运行脚本
$ python removeVault.py REGION-NAME VAULT-NAME
例子 :
$ python removeVault.py us-east-1 my_vault
答案3
如果您在 Arq 中删除 Glacier 支持的文件夹,它将进入 Arq 的垃圾箱。如果您在 Arq 的垃圾箱中选择它并单击“永久删除”,Arq 将删除所有 Glacier 档案并尝试删除 Glacier 保险库。保险库删除可能会失败,因为亚马逊必须更新其“库存”,而它每天更新一次。第二天,在 Arq 中的“其他备份集”下浏览,找到该保险库,选择它并单击“删除”以将其删除。
如果您有一个与任何 Arq 备份均不关联的保险库,请从 Arq 的菜单中选择“Legacy Glacier Vaults”,选择该保险库,然后单击按钮进行删除。
答案4
如何删除 Vault(AWS Glacier)
这个 Gist 提供了一些使用 AWS CLI 删除的技巧AWS Glacier Vault
(即。https://aws.amazon.com/en/cli/)。
步骤 1/检索库存
$ aws glacier initiate-job --job-parameters "{\"Type\": \"inventory-retrieval\"}" --vault-name YOUR_VAULT_NAME --account-id YOUR_ACCOUNT_ID --region YOUR_REGION
等待 3/5 个小时… :-(
对于新步骤,您需要获取JobId
。检索清单完成后,您可以使用以下命令获取它:aws glacier list-jobs --vault-name YOUR_VAULT_NAME --region YOUR_REGION
第 2 步 / 获取 ArchivesIds
$ aws glacier get-job-output --job-id YOUR_JOB_ID --vault-name YOUR_VAULT_NAME --region YOUR_REGION ./output.json
您可以获取文件ArchiveId
中的所有内容./output.json
。
步骤 3 / 删除档案
电源外壳
$input_file_name = 'output.json'
$vault_name = 'my_vault'
# $account_id = 'AFDKFKEKF9EKALD' #not used. using - instead
$a = ConvertFrom-Json $(get-content $input_file_name)
$a.ArchiveList.archiveid | %{
write "executing: aws glacier delete-archive --archive-id=$_ --vault-name $vault_name --account-id -"
aws glacier delete-archive --archive-id=$_ --vault-name $vault_name --account-id - }
Python
檔案編輯,它将以流的形式读取文件。你可以使用 pip 安装它
import ijson, subprocess
input_file_name = 'output.json'
vault_name = ''
account_id = ''
f = open(input_file_name)
archive_list = ijson.items(f,'ArchiveList.item')
for archive in archive_list:
print("Deleting archive " + archive['ArchiveId'])
command = "aws glacier delete-archive --archive-id='" + archive['ArchiveId'] + "' --vault-name " + vault_name + " --acc$
subprocess.run(command, shell=True, check=True)
f.close()
PHP
<?php
$file = './output.json' ;
$accountId = 'YOUR_ACCOUNT_ID' ;
$region = 'YOUR_REGION' ;
$vaultName = 'YOUR_VAULT_NAME' ;
$string = file_get_contents ( $file ) ;
$json = json_decode($string, true ) ;
foreach ( $json [ 'ArchiveList' ] as $jsonArchives )
{
echo 'Delete Archive: ' . $jsonArchives [ 'ArchiveId' ] . "\n" ;
exec ( 'aws glacier delete-archive --archive-id="' . $jsonArchives [ 'ArchiveId' ] . '" --vault-name ' . $vaultName . ' --account-id ' . $accountId . ' --region ' . $region , $output ) ;
echo $output ;
}
马克:删除档案后,如果您立即下载保险库清单,则可能会将已删除的档案包含在列表中,因为 Amazon Glacier 每天仅准备一次保险库清单。
步骤 4 / 删除保险库
$ aws glacier delete-vault --vault-name YOUR_VAULT_NAME --account-id YOUR_ACCOUNT_ID --region YOUR_REGION
原文标题:@Remiii
好的,几年前我关闭了我的帐户,几个月前才重新打开它,猜猜亚马逊仍然在我的帐户上保留着 3TB 的数据,现在我已经为过去几个月支付了费用。
于是我又回过头来思考这个问题,发现:
- mt-aws-glacier 几乎无法在最新的 ubuntu 上设置,然后转到 12.04 awscli 不存在,然后当转到 14.04 时出现有关我的签名的错误......
- Arq 答案在 Arq 5 中不再相关
- 然后我发现以上要点并将其复制到这里,因为这对社区更有利
- 尝试了 cloudberry,看起来应该有用,我会在 4 到 10 小时后在这里更新