Espero que isso não conta como uma pergunta sem uma resposta real, como eu não consigo encontrar uma boa razão para usar cp(1)
ao longo rsync(1)
de praticamente todas as circunstâncias. Se um normalmente favorecem rsync
mais cp
? Existe alguma boa orientação para 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 apenas mais simples de usar? É mais rápido que o rsync?
Respostas:
cp
faz parte dos coreutils, portanto, está presente em todos os lugares. Além disso, ele 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. Tambémrsync
possui mais dependências em comparação com os coreutils, porém essa diferença não faz muito sentido.PS: A propósito, o uso da CPU ainda é importante nos sistemas embarcados.
fonte
O principal motivo que você não deseja usar
rsync
para todas as operações de cópia é porque arsync
sobrecarga de cálculo é calculada. Antes que a transferência de dados realmente comece,rsync
varre todos os arquivos. Antes de cada arquivo, é feita uma comparação. Essa sobrecarga não é insignificante, mesmo com as rápidas CPUs disponíveis em 2012. Eu faço esse tipo de transferência o tempo todo e em servidores de tamanho bastante decente, quando você começa a lidar com gigs de dados, a sobrecarga pode ser demorada.Não estou dizendo que não use
rsync
, de modo algum, use arsync
qualquer momento para economizar algum tempo de transferência. Só não usersync
quandocp
poderia fazer a mesma coisa.O que geralmente faço, primeiro traga os dados usando métodos de cópia regulares. Em seguida,
rsync
para alterações subseqüentes, que é quando essas diferenças podem ser aproveitadas.fonte
Eu esperaria
cp
usar menos CPU ao copiar localmente, porque ele não usa diffs, ao passo quersync
pode reduzir as gravações ao usar diffs. A compactação deve ser evitada localmente porque você precisa ler e escrever o arquivo / diff inteiro de qualquer maneira e isso requer cálculos adicionais.fonte
rsync
é preferido. Mas quando o seu não é diferente,rsync
está apenas trazendo sobrecarga sem benefício extra.rsync
ter o dobro da sobrecarga de E / S para dois arquivos idênticos em comparação aos cegoscp
: um tempo de modificação alterado. Você teria que dar--size-only
para consertar isso. A única outra maneira de ver isso seriarsync
confiar nas somas de verificação do sistema de arquivos, mas para a maioria dos sistemas de arquivos eles não são muito bons preditores estatísticos de identidade.Além das despesas gerais, no caso de um diff grande ou inexistente,
rsync
não parece ter um equivalentecp --reflink=always
, o que pode salvar uma enorme quantidade de dados se copiar em um sistema de arquivos que o suporta (cria cópias copy-on-write, portanto os dados em comum entre o original e a cópia (que é, é claro, inicialmente tudo isso) são armazenados apenas uma vez).rsync
é, no entanto, melhor na atualização de cópias CoW, usando--inplace
.fonte