O rsync é uma boa opção para o meu projeto?
Eu tenho que:
- copiar arquivos da fonte para a pasta de destino via SSH,
- garantir que todos os arquivos sejam copiados,
- excluir arquivos de origem após a cópia.
- se eu tiver um nome de conflito, tenho que renomear arquivos.
Parece que eu posso usar a opção: --remove-source-files (para excluir arquivos de origem)
Mas como o rsync gerencia o conflito, posso ter regras?
Caso de uso no meu projeto:
Eu corro o cálculo científico no servidor A e os resultados são inseridos na pasta "processo", para cada cálculo eu tenho um repositório como este: / process / calc1.
Agora eu gostaria de transferir o repositório "/ calc1" para o servidor B (recebo / process / calc1) e excluir "calc1" do servidor A.
... Durante outro cálculo, obtive "/ process / calc2" no servidor A, a idéia é também mover "calc2" no diretório "/ process /" no servidor B, então agora tenho no servidor B:
- / process / calc1
- / process / calc2
(e / process / no servidor A está vazio).
Como o rsync gerenciará conflitos (no servidor B) se eu tiver outra pasta como "/ process / calc1" no servidor A após um novo cálculo (se "/ process / calc1" já existir no servidor B)?
É possível adicionar regras com o rsync e renomear "/ process / calc1" por "process / calc1R2" no servidor B? E assim por diante (ex: calc1R3)?
Obrigado.
fonte
Como o nome indica, o rsync é usado para sincronizar arquivos. Quando "sincronizado", isso significa que os arquivos na origem e no destino são os mesmos. Isso não parece o que você quer fazer.
Parece que você deseja apenas mover alguns arquivos. Você não precisa usar o rsync para isso. Parece que você está usando um linux ou BSD. Você pode usar mv -n sobre ssh. A opção -n não substitui os arquivos existentes. Isso não é 100% automático. No entanto, não vejo como o arquivo já poderia existir no seu caso. Os arquivos serão copiados da fonte para o destino e depois removidos da fonte. Deseja executar os mesmos cálculos novamente? É por isso que você terminará com arquivos com o mesmo nome? Sugiro acrescentar um número de execução ou lote ao nome da pasta. Você quer que isso fique claro de qualquer maneira. Você tem algum controle sobre como a pasta é nomeada? Mais detalhes? Eu recomendo colocar os comandos em um script bash ou similar.
fonte
Para SSH, em resumo, use o seguinte:
Está tudo explicado no rsync (1).
Quanto ao script para um cronjob, para sincronizar automaticamente com o ssh sem exigir uma senha, consulte também o ssh-agent (1).
fonte