Linux equivalente a robocopy?

29

É meio engraçado, existem muitas maneiras nas quais as ferramentas de linha de comando do Linux são muito superiores às do Windows, mas uma coisa que eu não encontrei como equivalente é robocopy . O Robocopy é muito mais versátil do que o cp e não consigo descobrir como fazer o que eu quero com as ferramentas do Linux.

Um caso de uso específico é que eu tenho dois diretórios com arquivos quase iguais, mas um tem arquivos de origem mais novos e um tem arquivos de conteúdo que o outro diretório não possui e possivelmente arquivos de origem mais recentes (para um site). Eu quero copiar os arquivos do último diretório para o primeiro, adicionando novos arquivos de conteúdo e tal, mas não sobrescrevendo arquivos mais novos no diretório de destino.

Eu tentei descobrir como fazer isso no Linux por talvez meia hora, decidi que provavelmente teria que aprender scripts de bash ou algo para fazer o que eu queria, e então percebi que poderia usar apenas o robocopy. Eu também tive alguns outros requisitos. Eu estava basicamente convertendo um site em Python (Django) de um repositório SVN para um repositório Git, e queria ter certeza de que eu não tinha alterações não confirmadas no SVN. No entanto, eu queria excluir condicionalmente os diretórios .svn e os arquivos Python .pyc compilados. O seguinte comando robocopy faz exatamente o que eu quero:

robocopy source destination /XO /E /XD .svn /XF *.pyc

Existe algum equivalente ao Robocopy no Linux? Analisei rsync rapidamente, mas parecia que precisaria configurar um servidor rsync antes de tentar sincronizar as pastas.

    
por Ibrahim 25.08.2009 / 09:28

2 respostas

14

O rsync copia arquivos de um diretório para outro diretório na mesma máquina, como o robocopy. Aqui está o comando rsync que é equivalente ao seu comando robocopy:

rsync -auv --exclude '.svn' --exclude '*.pyc' source destination

Isso copiará recursivamente a origem para o destino e excluirá arquivos mais antigos, bem como os diretórios / arquivos '.svn' e '* .pyc'.

    
por 25.08.2009 / 15:53