Script para copiar um arquivo para um host remoto e renomeá-lo

0

Estou tentando criar um script Shell que possa tarar um arquivo e copiá-lo (scp?) do Host A para um host B remoto em um destino específico /foo e renomeá-lo para um formato de hora específico. use digamos YYYY-MM-DD.

Agora, para adicionar a essa funcionalidade, digamos que há um arquivo foo.txt que é copiado do Host A para um caminho no Host B em uma data específica, isso é claro, realizado pelo script. Agora, caso esse script seja executado duas vezes no mesmo dia, em vez de sobrescrever o arquivo existente no Host B remoto, esse script precisa identificar que uma versão já existe no Host B e, em vez de sobrescrevê-lo, anexar o timestamp no arquivo sendo copiado por digamos "1" e, portanto, copiá-lo como um arquivo diferente.

Por exemplo, se foo.txt já existir no Host B remoto, o script executado a partir do Host A deve renomear o arquivo para foo.txt.1 e copiá-lo para o mesmo caminho no host remoto B.

Por favor, informe como isso pode ser feito. Como é apenas um arquivo, estou bem usando SCP em rsync.

    
por S K Kumar 14.09.2016 / 20:27

1 resposta

2

Se eu entendi bem sua solicitação, você só precisa de uma opção de rsync: --backup (ou -b ).

Dando uma olhada no manpage do rsync:

-b, --backup
With this option, preexisting destination files are renamed as each file is transferred or deleted. You can control where the backup file goes and what (if any) suffix gets appended using the --backup-dir and --suffix options.

Portanto, se você estiver planejando transferir o arquivo foo.txt para a pasta /foo , de Host1 para Host2 , seu comando pode ser:

rsync -b --suffix=".$(date +%Y-%m-%d)" -e "ssh -p $SSH_SERVER_PORT" foo.txt remoteuser@Host2:/foo/foo.txt  

Cada vez que você copiar o arquivo " foo.txt " no Host2 , você receberá um novo arquivo " foo.txt.YYYY-MM-DD ".
Considere usar a opção --backup-dir para manter todas as versões de backup do arquivo no mesmo lugar.

  • Preste atenção: você terá apenas 1 cópia de backup por dia para cada arquivo, devido à sua escolha de sufixo. Se você quiser manter "todas" as cópias de backup, considere usar outra opção de sufixo (data +%Y-%m-%d_%H%M%s poderia ser uma ideia)
por 14.09.2016 / 21:26