ti-enxame.com

Copie arquivos ao pular arquivos existentes - Unix

Gostaria de pegar uma pasta grande (~ 100 GB) e copiá-la para outra pasta. Gostaria de pular todos os arquivos que existem (não pastas), por isso, se /music/index.html não existe, ainda assim copiaria mesmo que o /music diretório já existe.

Encontrei this , mas meu Shell está dizendo -u não é um argumento válido.

Eu não sei como rsync funciona, então, deixe-me saber se essa é uma solução melhor.

Obrigado.

32
switz

Sempre use rsync para copiar arquivos, porque é ótimo.

Para ignorar arquivos existentes:

rsync --ignore-existing --recursive /src /dst

Leia o manual e pesquise muitos exemplos excelentes. Especialmente a combinação com o ssh faz com que rsync seja uma ótima ferramenta para conexões lentas e não confiáveis, devido à sua --partial opção. Adicionar --verbose para ver quais arquivos estão sendo copiados. Verifique também a infinidade de opções relacionadas à preservação de permissões, usuários e registros de data e hora.

54
Kerrek SB

rsync(1) brilha absolutamente quando a origem e o destino estão em dois computadores diferentes. Ainda é a melhor ferramenta para usar quando a origem e o destino estão no mesmo computador.

Um simples uso seria semelhante a:

rsync -av /path/to/source /path/to/destination

Se você tiver certeza de que os arquivos existentes nos dois locais são idênticos, use a opção --ignore-existing:

rsync -av --ignore-existing /path/to/source /path/to/destination

Apenas para completar, quando eu uso rsync(1) para fazer um backup em um sistema remoto, o comando que eu mais prefiro é:

rsync -avz -P /path/to/source hostname:/path/to/destination

O -z Pede compactação (eu não me incomodaria localmente, mas em um link de rede mais lento pode fazer uma grande diferença) e o -P Pede --partial E --progress - que reutilizará parcial as transferências de arquivos, se for necessário reiniciar, e mostrará um prático indicador da barra de progresso.

8
sarnold