Diretório de sincronização / espelho com o repositório de arquivos Rackspace Cloud

5

Qual ferramenta posso usar para sincronizar o conteúdo de um diretório local com o de um bucket do Rackspace Cloud Files?

Eu preciso de um aplicativo semelhante a rsync para fazer um espelho, não um aplicativo de backup. O que eu quero é a capacidade de fazer

rsync --update --delete /local/dir/ cloudfiles://bucket

para que o intervalo remoto contenha um espelho exato dos arquivos que estão em /local/dir/ .

Os metadados dos arquivos (proprietário, permissões) não são importantes e não há diretórios dentro do diretório principal.

    
por gioele 27.08.2012 / 12:09

5 respostas

5

A maneira mais fácil de sincronizar um diretório local com os arquivos em nuvem da Rackspace é através das ferramentas de console fornecidas pelo projeto openstack / swift . No Ubuntu, as ferramentas podem ser instaladas com apt-get install python-swiftclient

Então, supondo que você esteja no diretório que deseja carregar, execute o seguinte comando no terminal:

$ swift -A https://auth.api.rackspacecloud.com/v1.0 -U <username> -K <api-key> upload <containername> . --changed

Isso fará o upload recursivo dos arquivos do diretório atual para o contêiner <containername> , economizando tempo ao carregar apenas os arquivos alterados. Você precisa fornecer o <username> que você usa para fazer login no Cloud Control Panel e o <api-key> disponível em Account / Account Settings no mesmo painel de controle.

Atenção : Se você usar caminhos relativos ou absolutos, o swift fará o upload deles com o pseudo-caminho fornecido na linha de comando para o container. Portanto, se em vez de sincronizar . você sincronizar /var/www/test , os arquivos ficarão abaixo de /var/www/test pseudo-caminho do contêiner - muito provavelmente, isso não é o que você deseja.

    
por 13.01.2015 / 19:14
1

Para o Linux, encontrei este projeto antigo: link

Para o Windows, existe esta ferramenta GUI: link

Também encontrei essa ferramenta que pode permitir que você monte arquivos em nuvem: link

    
por 10.09.2012 / 19:43
1

Você pode usar o módulo FUSE da Rackspace Cloud Files ( link ) para criar um sistema de arquivos montável, mas cuidado com as seguintes ressalvas:

  • use algo como --size-only para determinar se o arquivo foi totalmente gravado, não -a ou algo assim, já que a configuração de permissões e horários não é suportada
  • usando --bwlimit não vai funcionar, porque o módulo armazena em cache escreve em um arquivo temporário na memória, então consome toda a largura de banda durante o upload; Estou conduzindo um experimento usando o utilitário trickle para ver se isso ajuda
por 01.05.2013 / 19:03
1

Outra opção em potencial, como uma alternativa ao CloudFuse para montar o Rackspace Cloud Files como um volume contra o qual você executa o rsync, pode executar o Caimito como uma ponte Cloud-Files-to_WebDAV.

link

Então, enquanto você poderia tentar empregar o plugin de sistema de arquivos Fuse DAV2 com rsync e um monte de opções de linha de comando especiais para obter arquivos até o Cloud Files via bridge, eu recomendo "sitecopy", que no seu núcleo não é muito diferente do Unison.

link

O Sitecopy faz um ótimo trabalho de enviar arquivos via WebDAV para o seu destino (mesmo que o nosso alvo seja uma camada de emulação fronteada para o Cloud Files). Isso ocorre porque "sitecopy" mantém um banco de dados local de metadados de arquivo de terminal remoto que faz comparações de lote rápidas em relação ao rsync.

O Caimito era surpreendentemente estável e fácil de instalar e configurar, apesar de suas raízes Java.

Você pode concluir que o uso de "swift" (mencionado acima) pode ser um vetor mais direto para a solução, mas essa solução oferece mais alguns locais para investigar, dissecar, depurar e controlar o fluxo de dados.

    
por 27.02.2015 / 22:04
0

Eu acho que você pode usar o rsync para isso, mas isso não funciona para você, por qualquer razão que tente também: Unison File Synchronizer , funciona muito bem!

    
por 27.08.2012 / 18:43