Preciso de uma maneira simples de fazer backup de arquivos no Amazon Glacier a partir da linha de comando?

19

Eu tenho um servidor CentOS on-line com um diretório de arquivos cPmove que preciso fazer backup no Amazon Glacier. Eu só tenho acesso à linha de comando, sem GUI.

Preciso de um cliente de linha de comando que seja relativamente fácil de usar para carregar os arquivos. Por exemplo, eu usei dropbox_uploader.sh antes ( https://github.com/andreafabrizi/Dropbox-Uploader ) com este script simples do bash:

#!/bin/bash
find /backup_folder -maxdepth 1 -name "cpmove-*.tar.gz" | while read CPMOVE
do
   ./dropbox_uploader.sh upload ${CPMOVE}
done

Eu vi este: https://github.com/carlossg/glacier-cli, mas não tenho o java instalado no servidor e estou um pouco hesitante em instalá-lo, devido a todos os problemas de segurança recentemente.

Eu tenho python e ruby:

me@server [/home]# python -V
Python 2.4.3
root@server [/home]# ruby --version
ruby 1.8.7 (2012-06-29 patchlevel 370) [i686-linux]
me@server [/home]#

Existe um cliente de linha de comando do Ruby (preferível) ou python ou outra linguagem (menos preferível) da Amazon Glacier?)

Ivan
fonte
Desculpe, eu não tinha examinado o Glacier em profundidade, pensei que você tivesse acesso ssh normal. Resposta excluída.
terdon
Desde então, descobri que posso fazer o upload para o s3 com a gema de nevoeiro do rubi. Em seguida, no console de gerenciamento aws do s3, posso definir uma política de expiração e arquivar os arquivos no glaciar. Trabalho. Além disso, o nevoeiro suporta o Glacier diretamente, mas ainda não examinei isso. Para quem está curioso, aqui está o meu script ruby ​​para fazer o upload para o s3: gist.github.com/ivanoats/4712421
Ivan

Respostas:

9

A biblioteca canônica para interface com a AWS via Python é Boto . Embora se destine a ser usado como uma biblioteca em um script Python, é simples o suficiente para ser usado independentemente. Você pode folhear a documentação , e esta página tem uma visão geral de como usar o Boto, mas aqui estão as partes importantes:

Coloque suas credenciais da AWS em ~/.boto:

[Credentials]
aws_access_key_id = FOO
aws_secret_access_key = BAR

Liste seus cofres:

$ glacier vaults

Enviar um arquivo:

$ glacier upload foo-vault foo.zip

Listar trabalhos pendentes em um cofre específico:

$ glacier jobs foo-vault

Embora realmente não seja mais fácil de usar do que o próprio Boto, o Amazon Glacier CLI Interface é baseado no Boto e, de fato, foi projetado para usuários finais. Aqui está um tutorial para isso.

Por fim, a AWS-CLI oficial é bastante fácil de usar. Coloque as credenciais em ~/.aws/credentialse depois simplesmente usar esses comandos:

Crie um cofre:

$ aws glacier create-vault --account-id - --vault-name foo-vault

Carregar um arquivo:

$ aws glacier upload-archive --account-id - --vault-name foo-vault --body foo.zip
dotancohen
fonte
1
O engraçado é que sua etapa upload-archivenem sequer é abordada na documentação de má qualidade em docs.aws.amazon.com/cli/latest/userguide/…
cryanbhu
Essas instruções só funcionarão se o seu cofre estiver na região padrão para boto (us-east-1). Caso contrário, você precisará especificar a região. Por exemplo, se o seu cofre está na CA, o comando deve estar aws glacier vaults --region us-west-1.
foobarbecue
4

Experimente vsespb / mt-aws-glacier - Sincronização multiparte multithreaded Perl para o Amazon Glacier com instruções fáceis de implantação para o CentOS.

vsespb
fonte
3

O github.com/numblr/glaciertools fornece scripts bash que orquestram o upload de várias partes de um arquivo grande com o cliente de linha de comando oficial da AWS ( AWS CLI ). Isso é útil no caso em que seus dados excedem o limite de 4 GB para fazer upload de um arquivo morto em uma única operação com a CLI da AWS.

Para usar os scripts, é necessário ter a CLI da AWS instalada e configurada, o que requer python. O link contém informações adicionais sobre a instalação.

Em seguida, você pode criar um arquivo do seu backup e enviá-lo para um cofre no glaciar com

> ./glacierupload -v myvault /path/to/my/archive

Informações mais detalhadas estão contidas na documentação .

user1587520
fonte