Sendo breve (um pequeno livro poderia ser escrito sobre o tópico), talvez seja útil pensar assim:
-
cp
é para duplicar material e, por padrão, apenas assegura que os arquivos tenham nomes de caminhos completos exclusivos -
rsync
é para sincronizar o material e usa o tamanho e o registro de data e hora dos arquivos para decidir se eles devem ser substituídos. Tem muito mais opções e recursos do quecp
Usando suas várias opções, você pode usar qualquer uma delas para várias tarefas, por exemplo, cp -u
pode substituir apenas arquivos mais recentes, como rsync
é usado para fazer.
Mas existem algumas tarefas em que uma tem vantagens sobre a outra
Você também pode usar cp
quando quiser criar um arquivo ou diretório local duplicado. Por exemplo, você deseja editar um arquivo importante, portanto, faça um backup primeiro:
cp .bashrc bashrc-bak
Fazer com rsync
isso exigiria mais três pressionamentos de teclas, então por que incomodar? Se você quiser duplicar um diretório
cp -r ~/Desktop/cakes ~/Recipes/cakes
te serve bem. Por que se incomodar em digitar rsync -a
? Bem, você pode, desde que sua opção -v
verbose ofereça resultados mais interessantes e úteis.
No entanto, digamos que você esteja atualizando um backup de algum diretório em seu sistema em uma unidade flash. O diretório já existe no pen drive, e você só quer sincronizar os arquivos para que ele tenha a última versão do seu material. rsync
é muito mais rápido que cp
para isso, porque ele verifica os tamanhos dos arquivos e os registros de data e hora para ver quais precisam ser atualizados e você pode adicionar mais refinamentos. Você pode até fazer uma soma de verificação em vez da "verificação rápida" padrão, embora isso demore mais.
Você também pode usar rsync
para copiar ou sincronizar arquivos para uma máquina remota, ou o make é executado como um daemon . Humilde cp
não consegue fazer essas coisas extravagantes.
Para aprender as opções e a sintaxe ("estrutura"?) (que é muito similar) leia man
e info
páginas e pratique!