sugestões sobre scripts de uma movimentação de muitos arquivos de um host linux para outro [closed]

1

Eu tenho vários TB e muitos milhares de arquivos que preciso mover pela rede de um host Linux para outro. Gostaria de receber sugestões sobre como criar scripts com os seguintes pontos em mente:

  • arquivos a serem movidos caberão em um perfil de data (ou seja, "mais antigo que" x anos)
  • falha de um arquivo não deve impedir que o restante seja movido (continue_on_error) e deve ser anotado em um arquivo de log
  • arquivos no host de origem devem ser excluídos automaticamente após serem movidos com êxito
  • a estrutura de diretórios no host de origem contém muitos arquivos que NÃO devem ser movidos porque não se ajustam ao perfil de data. esses arquivos não devem ser tocados
  • script deve ser executado continuamente sem intervenção do usuário até terminar
  • se os arquivos são movidos sequencialmente ou em paralelo não é importante

O xargs e o Rsync ficariam bem, a não ser que pareçam fornecer a capacidade de "excluir" o arquivo de origem depois de ter sido copiado com sucesso.

    
por 80skeys 24.07.2013 / 20:38

1 resposta

7

O Rsync tem uma opção para remover os arquivos de origem . Combinado com o sinalizador - checkeck , ele deve ser confiável o suficiente para isso tipo de operação.

No entanto, você pode usar o git-annex para a migração (ele usará rsync sob o capô para as transferências reais) .

No host A:

mkdir annex
git init
git annex init "host A"

No host B:

git clone ssh://A/path/to/annex annex
git annex init "host B"
git annex sync

Mais uma vez no host A:

git remote add b ssh://B/path/to/annex

Adicione os arquivos ao git-annex no host A, depois de copiá-los para a pasta do anexo:

git annex add .
git commit . -m "Added files"
find /path/to/files* -mtime +5 -exec git annex move {} --to b\;
git-annex sync

Veja o passo a passo para detalhes sobre o uso .

    
por 24.07.2013 / 21:03