Como copiar apenas novos arquivos usando o comando “scp”?

19

Eu estava copiando centenas de arquivos para outro computador usando o comando scp que recebi o erro stalled . Agora vou copiar os arquivos novamente. Existe alguma maneira de evitar copiar os arquivos já copiados?

    
por Meysam 14.12.2013 / 13:17

3 respostas

31

Você pode usar rsync para isso. rsync é realmente projetado para esse tipo de operação.

Sintaxe:

rsync -avh /source/path/ host:/destination/path

ou

rsync -a --ignore-existing /local/directory/ host:/remote/directory/

Quando você o executar pela primeira vez, copiará todo o conteúdo e copiará apenas os novos arquivos.

Se você precisar encapsular o tráfego por meio de uma conexão SSH (por exemplo, para fins de confidencialidade), conforme indicado originalmente por uma solução baseada em SCP, basta adicionar -e ssh aos parâmetros em rsync . Por exemplo:

rsync -avh -e ssh /source/path/ host:/destination/path
    
por 14.12.2013 / 13:29
5

Se você quiser ficar com o scp por algum motivo, você pode remover as permissões w nos seus dados locais (se você tiver o direito de fazê-lo) e o scp não irá tocá-lo. Para ser mais preciso:

  1. chmod a-w local/*.tar.gz (no seu diretório local)
  2. scp remote/*.tar.gz local

Isso não é muito eficiente, legal, mas pode ajudar se você precisar de uma solução temporária rápida sem mudar para algo além de scp. (Kudos: scp sem substituir os arquivos existentes no destino )

    
por 22.05.2015 / 11:42
2

Não houve resposta exata sobre como fazer isso com o SCP, pois era isso que a pergunta original estava perguntando.

sudo find /files/ -type f -exec chmod a-w {} \;

scp -r [email protected]:/file/location/* /files

Quando terminar de copiar os arquivos, altere as permissões de volta:

sudo chmod a+w -R /files

    
por 27.05.2015 / 21:28

Tags