Eu tenho um host remoto com um arquivo que desejo substituir com scp. isso é simples
scp 'myfile.ext' '[email protected]:/bar/baz'
Eu também gostaria de "renomear" o original "/bar/baz/myfile.xt" em um arquivo, e não substituí-lo pela nova versão. Um simples "/bar/baz/myfile.xt~" é suficiente, mas o melhor seria um contador ou a data atual.
existe alguma maneira de fazer isso com scp?
Gostaria de minimizar as chamadas "scp", pois preciso sempre colocar uma senha interativa (não, não posso alterar o método de autenticação)
Você deseja renomear o original
/bar/baz/myfile.xt
como/bar/baz/myfile.xt~
ou, melhor ainda, com um contador ou sufixo de data.Você não pode fazer isso diretamente com
scp
, mas aqui estão algumas alternativas ao seu comando original.Usando
rsync
O
-b
sinalizador dizrsync
para fazer um backup se houver uma alteração no arquivo de destino. O padrão é anexar~
, mas você pode alterar esse padrão. Por exemplo, isso usará a data de hoje (conforme definido na máquina de origem):Usando
ssh
comscp
. Presumi quebaz
seja o nome do arquivo de destino, em vez de um diretório no qual o arquivo de origem deve ser copiado:Você poderia usar
mv
em vez decp
se preferir, mas isso perderia todas as permissões não padrão e links de arquivo físicos no arquivo de destino verdadeiro.A
rsync
opção é mais limpa, mas nem sempre está instalada.Tem que ser
scp
? Não acho que ele possa renomear arquivos para você (além de copiar de remoto para remoto, mas nunca tive certeza de como isso funciona).sftp
seria bastante simplesE você também pode fazer isso com
ssh
, embora observe que isso não copia nada além dos dados detest
(sem permissões, carimbos de data e hora ...)Você pode usar
mirrordir