retomar cópia de arquivo linux

9

Como retomo uma cópia de um arquivo grande no linux? Eu tenho um arquivo enorme (gigabyes de servidor) parcialmente copiado para uma unidade de rede e demorou muito tempo, e isso foi feito principalmente antes da operação de cópia parar devido a um problema de rede que foi corrigido. Como faço para retomar a cópia do arquivo. Não quero um script ineficiente e o ecp não funcionou (não parece funcionar para arquivos grandes).


fonte

Respostas:

4

Eu tentaria rsync -a /from/file /dest/file.

Gonzalo
fonte
1
e enquanto falamos sobre rsync, observe que você pode copiar diretamente para qualquer máquina remota [suportando SSH] usando rsync -az -e ssh / de / file [email protected]: / full / dest / path
Mikeage
2
Uau. executar o rsync assim sem nenhuma opção excluirá / dest / file e retransmitirá a coisa toda. Como isso foi votado?
23710 Justin
1
Como a preservação de atributos de arquivo (-a) ajuda? Isso deveria ser --append?
Malvineous 6/10/12
3

Se você sabe que simplesmente precisa anexar ao arquivo local e não deseja usar o rsync (que pode levar muito tempo calculando as somas de verificação), você pode usar curl. Por exemplo, se você tiver um arquivo grande em um pendrive removível lento /media/CORSAIR/somefile.date montado em apenas metade dele no diretório atual, continue:

curl -C - -O "file:///media/CORSAIR/somefile.dat"

user48985
fonte
Obrigado pela dica, eu tive que usá-la porque estava copiando de um servidor Windows SMB (portanto, sem rsync) quando a conexão lenta foi perdida e não queria baixar os 500 MB desde o início.
MiKy 25/11
2

Sim, o rsync é o caminho a percorrer. Para mim, transferimos dados de mais de 100 GB sobre o rsync + ssh. Se você estiver procurando por uma cópia de backup verdadeira, use a -aopção (archive) para preservar os atributos do arquivo (horas, proprietários, permissões, etc.)

host1> rsync -aP file user@host2:/path/to/new/dir/

Também é útil para copiar arquivos grandes que podem mudar durante o curso de uma migração. Você pode pré-carregar os dados no destino e, uma vez pronto para a cópia final, faça-o novamente, mas apenas por uma fração do tempo. Você pode economizar tempo de inatividade real usando o rsync em todo o seu potencial.

PS O uso v(detalhado) pode retardar a transferência de muitos arquivos.

Peixe voador
fonte
2

O comando que você deseja será algo como

rsync -v --append /path/to/afile /mnt/server/dest/afile

a menos que você possa acessar o servidor pelo ssh e executar o rsync dessa maneira, nesse caso, o comando que o FlyingFish deu é o melhor.

Justin
fonte
0

O rsync só é bom se você tiver o rsync no servidor de destino. Nesse caso, é realmente a melhor solução.

Mas não de outra forma. Como o ponto do rsync é apenas copiar partes alteradas em arquivos grandes, ele assume que essas partes alteradas podem estar em qualquer lugar do arquivo. Isso significa que irá somar todos os blocos que já foram copiados. Se você não possui o rsync na extremidade remota, o rsync local começará lendo novamente tudo o que já foi transferido.

Se a sua máquina de origem tiver um servidor Web ou FTP, você poderá usar o wget no servidor de destino com a opção "--continue". (ou enrole com a opção "--continuar no [- | tamanho]").

Se a sua máquina de destino tiver um servidor FTP, você poderá usar a curvatura na máquina de origem com a opção --append.

Como último recurso, você pode usar dd com os argumentos "bs =" (tamanho do bloco), "skip =" e "seek =". Por exemplo:

Vamos supor que você poderá usar blocos de 2048 bytes. Se o seu arquivo de destino tiver atualmente 2'048'000'000 bytes (2 GB), ou seja, 1'000'000 blocos de 2048 bytes. Para anexar o restante do seu arquivo de origem ao destino, você pode

dd if = arquivo de origem de = arquivo de destino bs = 2048 pular = 1000000 procurar = 1000000

Você pode usar um tamanho de bloco maior para melhorar a velocidade de transferência. Lembre-se de especificar o tamanho do bloco com bs = e que o valor dado para pular e procurar está em blocos, não em bytes.


fonte
O que você disse sobre o rsync é falso. man rsync, leia o que a opção --append faz.
23710 Justin justin