Respostas:
Eu tentaria,
rsync -a /from/file /dest/file
você pode usar outras opções como --append
, -P (--partial --progress)
. Veja man rsync para mais informações.
Ou se você estiver usando cp
, use cp -u
.
de man cp
:
-u, --update
copy only when the SOURCE file is newer than the destination file or when the destination file is missing.
cp -u
pode não se importar, pois apenas verifica os carimbos de data e hora, e não o tamanho ... Portanto, você precisará touch
primeiro dos arquivos de origem, se precisar usá-lo . (Ou simplesmente usar rsync
.)
Para transferências parciais de arquivos, cp
pode não ser o que você precisa.
Sugiro usar em seu rsync
lugar. Mesmo quando a transferência falhar, você pode simplesmente executar novamente o comando posteriormente, e ele copiará apenas os arquivos ausentes.
Exemplo:
$ rsync -aPEmivvz from/ to/
(irá copiar from/
para o to/
diretório)
Como rsync
sincronizar e verificar após cada transferência, garantir que os arquivos foram copiados corretamente é trivial.
O conjunto swich -aPEmivvz
é o meu padrão de go-to seleção, sempre que copiar arquivos através de redes ou unidades externas, incluindo plug-in dispositivos, como SD-Cards, etc.
Estes são os switches que eu uso quase sempre:
-a
: "arquivo", inclui -rlptgo
(recursivo, links simbólicos como links simbólicos, permissões, horários, grupo, proprietário)
-P
: "progresso parcial" mostra uma barra de progresso agradável para cada arquivo
-E
: "executability" preserva se executável ou não
-m
: "noempty" apaga dirs vazios
-i
: "summary" imprime o resumo das alterações para todas as atualizações
-vv
: "mais detalhado"
-z
: "compressão"
Você não deve usar cp
para isso. Como outros já declararam, não é a ferramenta certa para o trabalho. A ferramenta correta vai depender dos seus objetivos.
Se você quiser apenas uma cópia direta:
rsync /source /destination
com algum nível de sinalizadores. Veja as outras respostas para alguns exemplos realmente bons.
Se você deseja ter atualizações bidirecionais
unison
é o caminho a percorrer. O Rsync não se sai muito bem na resolução de conflitos com sincronizações bidirecionais. Exclui especialmente. Então você deseja que cópias bidirecionais sejam acionadasunison
Se você deseja backups e os arquivos são baseados em texto, tente usar git
. O Git pode ser executado localmente, não há necessidade de um "servidor". De fato, os servidores git são apenas métodos de compartilhamento de arquivos. Você poderia totalmente ter um repositório Git na unidade de backup e "empurrá-lo" para ele. Novamente, isso realmente funciona se os arquivos forem baseados em texto e você estiver tentando obter um backup unidirecional.
Novamente, se você estiver procurando por um backup (e não apenas uma vez), consulte deja-dupe, BackIntime ou opções semelhantes. Eles tiram instantâneos dos dados em um determinado momento. Todos eles rodam o rsync sob o capô.