É meio engraçado, existem várias maneiras pelas quais as ferramentas de linha de comando do Linux são muito superiores às do Windows, mas uma coisa que eu não encontrei equivalente é a robocópia . Robocopy é muito mais versátil do que cp
, e não consigo descobrir como fazer o que quero com as ferramentas do Linux.
Um caso de uso específico é que eu tenho dois diretórios com arquivos semelhantes, mas um possui arquivos de origem mais novos e um possui arquivos de conteúdo que o outro diretório não possui e possivelmente arquivos de origem mais novos (para um site). Quero copiar os arquivos desse último diretório para o anterior, adicionando novos arquivos de conteúdo e outros, mas não substituindo os arquivos mais recentes no diretório de destino.
Tentei descobrir como fazer isso no Linux por talvez meia hora, decidi que provavelmente teria que aprender scripts bash ou algo para fazer o que queria e depois percebi que poderia usar apenas a robocópia. Eu também tinha alguns outros requisitos. Eu estava basicamente convertendo um site Python (Django) de um repositório SVN para um repositório Git, e queria ter certeza de que não havia alterações não confirmadas no SVN. No entanto, eu queria excluir condicionalmente os .svn
diretórios e os .pyc
arquivos Python 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? Examinei rsync
brevemente, mas parecia que eu teria que configurar um servidor rsync antes de tentar sincronizar as pastas.
Respostas:
Parece que o rsync é definitivamente o que você procura. Você não precisa configurar um 'servidor rsync' para copiar arquivos de uma máquina para outra. O Rsync suporta a cópia de arquivos por SFTP (SSH File Transfer), que a maioria das caixas Linux já ativou (se não for desativada manualmente).
Consulte os arquivos Mirror do Lifehacker nos sistemas com rsync para obter mais detalhes:
fonte
scp
sintaxe basicamente semelhante à transferência pelo ssh? Na verdade, eu estava tentando transferir arquivos em uma máquina, mas é bom saber.O rsync copiará arquivos de um diretório para outro diretório na mesma máquina como robocopy. Aqui está o comando rsync que é equivalente ao seu comando robocopy:
Isso copiará recursivamente a fonte para o destino e excluirá arquivos mais antigos, além dos diretórios / arquivos '.svn' e '* .pyc'.
fonte