Como faço para copiar apenas arquivos para uma pasta remota em outro servidor que ainda não exista na pasta… a partir da linha de comando no linux?

5

Eu tenho duas pastas em dois servidores diferentes.

Eu quero sincronizar arquivos entre A e B, no entanto, eu só quero copiar arquivos que ainda não existem na pasta B porque esses arquivos são enormes. Eu não me importo com a atualização de arquivos. Eu simplesmente quero uma cópia de cada na pasta B.

Como faço isso no Linux? (Eu suponho que seria bom saber como atualizar arquivos que foram alterados também)

    
por T. Brian Jones 10.07.2011 / 17:31

3 respostas

10

O rsync é capaz de fazer isso.

rsync --ignore-existing <src> <dest>

Você também pode executar vários tipos de atualizações. Basta dar uma olhada na página do manual.

    
por 10.07.2011 / 17:37
5

Use rsync e especifique --ignore-existing se você não quiser atualizar os arquivos existentes:

rsync -e ssh -av --ignore-existing /my/source/directory [email protected]:/data/

Uma opção adicional popular que eu geralmente adiciono é --progress para você ver o que está acontecendo. Se você espera interrupções, diga também --partial , mas não tenho certeza de como mixar "partial" e "ignore-existing" se você for cortado durante uma transmissão.

    
por 10.07.2011 / 17:38
1

Aqui está um truque que quase faz isso , mas esse truque só funciona quando você está copiando para pastas no mesmo servidor. Abaixo está o conteúdo relevante do link incluído.

[jonesy@cranford testing]$ ls
bar  foo

[jonesy@cranford testing]$ ls foo
1  2  3

[jonesy@cranford testing]$ ls bar
1  2  3  4  5  6

[jonesy@cranford testing]$ yes n | cp -i bar/* foo 2>/dev/null

[jonesy@cranford testing]$ ls foo
1  2  3  4  5  6

[jonesy@cranford testing]$ ls bar
1  2  3  4  5  6

"Estou direcionando uma constante" não "para o comando" cp -i ", que pergunta se você deseja sobrescrever (ou não) quaisquer arquivos que já existam no diretório de destino. Você não precisa envie STDERR para / dev / null - se você apenas enviar STDERR para / dev / null - o resultado final é que o comando copy copiará os arquivos para o diretório de destino, se eles ainda não existirem. em ambos os diretórios (Bem, tecnicamente o comando copy não, mas a operação será quando você o fizer desta forma). "

"Claro, eu poderia sobrescrever o conteúdo do diretório, mas não sei se os arquivos que existem em ambos os diretórios são idênticos. Ou eu poderia mover um para o lado e o outro para o lugar, mas o mesmo problema existe "

    
por 10.07.2011 / 17:38