Acredito que você não conseguirá fazer isso com scp
sozinho. Sua melhor aposta seria usar rsync
over ssh
com algo como as seguintes opções adicionais:
--backup --suffix=_'date +"%m%d%Y_%H%M"' --backup-dir=DIR
Algumas seções relevantes das man pages para 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.
--suffix=SUFFIX
This option allows you to override the default backup suffix used with the
--backup (-b) option. The default suffix is a ~ if no --backup-dir was speci-
fied, otherwise it is an empty string.
--backup-dir=DIR
In combination with the --backup option, this tells rsync to store all backups
in the specified directory on the receiving side. This can be used for incre-
mental backups. You can additionally specify a backup suffix using the --suf-
fix option (otherwise the files backed up in the specified directory will keep
their original filenames).
Isso deve ser capaz de ser massageado para atender às suas necessidades. Abaixo está um teste básico, você terá, sem dúvida, outras opções, incluindo o ssh, para adicionar:
rsync -av --backup --suffix=_'date +"%m%d%Y_%H%M"' --backup-dir=backup test1/ test2/
Então, com isso no lugar:
- Um arquivo é transferido de
test1
paratest2
- Se esse arquivo já existir em
test2
, mas o arquivo transferido for mais recente , o arquivo 'remoto' será atualizado e, mais importante: - É feito o backup do arquivo original em
test2
paratest2/backup
com um sufixo de data e hora incremental adicionado
Muito legal? E eu suspeito exatamente o que você está procurando. Note que eu usei um caminho relativo para o diretório de backup, um caminho absoluto também pode ser usado ...