SCP transfere apenas arquivos modificados

SCP transfere apenas arquivos modificados

Estou usando o comando abaixo para transferir arquivos entre servidores

scp -rc blowfish /source/directory/* [email protected]:/destination/directory

Existe uma maneira de transferir apenas arquivos modificados como updatecomando para cp?

Responder1

rsyncé seu amigo.

rsync -ru /source/directory/* [email protected]:/destination/directory

Se você deseja excluir no destino arquivos que não existem mais na origem, adicione a --deleteopção.

Responder2

Geralmente pede-se scp porque há um motivo. Ou seja, não é possível instalar o rsyncd no destino.

files=`find . -newermt "-3600 secs"`

for file in $files
do
       sshpass -p "" scp "$file" "root@$IP://usr/local/www/current/$file"
done

Responder3

Outra opção:

remote_sum=$(ssh ${remote} sha256sum ${dest_filename})
remote_sum=${remote_sum%% *}
local_sum=$(sha256sum ${local_filename})
local_sum=${local_sum%% *}
if [[ ${local_sum} != ${remote_sum} ]]; then
  scp ${local_filename} ${remote}:${remote_filename}
fi

Isso é aceitável para um arquivo, mas será um pouco lento para muitos arquivos, dependendo da rapidez com que o SSH pode fazer conexões repetidas. Se você tiver controlmasters configurados em sua conexão SSH, pode não ser tão ruim. Se você precisar copiar uma árvore de diretórios while recursivamente, poderá executar um único comando SSH que soma todos os arquivos, colocar o resultado em uma matriz associativa bash, fazer o mesmo no host local e comparar as somas dos arquivos para decidir se para fazer a cópia. Mas é quase certo que é mais fácil instalar o rsync no controle remoto.

informação relacionada