Estou tentando copiar um diretório grande de uma unidade para outra. Saí por engano antes de terminar, apenas 80% dos arquivos foram copiados. Existe alguma maneira de copiar os arquivos restantes sem começar do zero?
23
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 usarrsync
.)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:
(irá copiar
from/
para oto/
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"fonte
O que você provavelmente deseja e não
cp
neste caso érsync
.Apenas copie recursivamente uma estrutura de diretório para um novo local:
fonte
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ô.
fonte
Você também pode copiar todos os arquivos novamente, pedir confirmação para cada substituição e responder automaticamente não à pergunta:
(você provavelmente já usou mais opções,
-r
adicione apenas comocp -pri /source /dest
...)fonte
Use o comando
rsync
com as seguintes opções:fonte