cp ou rsync, o cp realmente vale a pena?

8

Espero que isso não conte como uma pergunta sem uma resposta real, pois não consigo encontrar uma boa razão para usar cp(1) over rsync(1) em praticamente todas as circunstâncias. Normalmente deveria favorecer rsync over cp ? Existe alguma boa diretriz para o seu uso?

  • rsync : Transfere os diffs, pode usar compactação, pode ser usado remotamente (e com segurança), pode ser reiniciado apesar de uma interrupção, mesmo durante a transferência de um único arquivo grande. '

  • cp : Talvez seja mais simples de usar? É mais rápido que o rsync?

por Soyuz 31.07.2012 / 16:39

4 respostas

8

cp é uma parte dos coreutils, portanto, está presente em todos os lugares. além disso, foi projetado principalmente para copiar arquivos dentro de um computador.

rsync não faz parte do coreutils, não está presente nem no ambiente padrão. Além disso, foi projetado principalmente para transferir arquivos pela rede. Além disso, rsync tem mais dependências em relação aos coreutils, no entanto, essa diferença não faz muito sentido.

ps. A propósito, o uso da CPU ainda é importante nos sistemas embarcados.

    
por 31.07.2012 / 17:07
5

A principal razão pela qual você não deseja usar rsync para cada operação de cópia é porque rsync tem uma sobrecarga de calulação. Antes de iniciar a transferência de dados, rsync verifica todos os arquivos. Então, antes de cada arquivo, uma comparação é feita. Essa sobrecarga não é insignificante, mesmo com o rápido CPU disponível em 2012. Eu faço esse tipo de transferência o tempo todo, e em servidores de tamanho decente, quando você começa a lidar com gigs de dados, a sobrecarga pode ser demorada.

Eu não estou dizendo não use rsync , não em todos, use rsync sempre que você pode economizar algum tempo de transferência. Apenas não use rsync quando cp poderia realizar a mesma coisa.

O que geralmente faço, primeiro trago os dados usando métodos de cópia regulares. Então rsync para mudanças subseqüentes, que é quando esses diffs podem ser aproveitados.

    
por 31.07.2012 / 16:44
3

Espero que cp use menos CPU ao copiar localmente porque não usa diffs, enquanto rsync pode reduzir gravações ao usar diffs. A compactação deve ser evitada localmente porque você precisa ler e gravar todo o arquivo / diff de qualquer forma e isso requer cálculos adicionais.

    
por 31.07.2012 / 16:46
3
Muito além dos overheads no caso de um diff grande ou inexistente, rsync não parece ter um equivalente de cp --reflink=always , o que pode salvar uma enorme quantidade de dados se copiando dentro de um sistema de arquivos que o suporta (it cria cópias copy-on-write, portanto os dados em comum entre o original e a cópia (que é, obviamente, inicialmente tudo) são armazenados apenas uma vez). O rsync é, no entanto, melhor em atualizar cópias CoW, usando --inplace .

    
por 11.06.2013 / 12:53