Rotineiramente, tenho que copiar o conteúdo de uma pasta em um sistema de arquivos de rede para o meu computador local. Existem muitos arquivos (1000s) na pasta remota, todos relativamente pequenos, mas devido à sobrecarga da rede, uma cópia regular cp remote_folder/* ~/local_folder/
leva muito tempo (10 minutos).
Acredito que é porque os arquivos estão sendo copiados seqüencialmente - cada arquivo aguarda até que o anterior seja concluído antes do início da cópia.
Qual é a maneira mais simples de aumentar a velocidade dessa cópia? (Presumo que seja para executar a cópia em paralelo.)
O zíper dos arquivos antes da cópia não necessariamente acelera o processo, pois eles podem ser salvos em discos diferentes em servidores diferentes.
Respostas:
Contanto que você limite os comandos de cópia em execução, provavelmente poderá usar um script como o postado pelo Scrutinizer
fonte
&
final docp
comando permite que owhile
loop continue e inicie o próximo comando cp sem esperar. Oxargs
comando passa os nomes de arquivos em grupos de 4 (MAX_PARALLEL) para owhile
loop.cp
. Obviamente, você pode acelerar o cálculo através do multithreading. Mas não acho que o mesmo vale para o enfrentamento dos dados no disco rígido.Se você possui o GNU Parallel http://www.gnu.org/software/parallel/ instalado, você pode fazer isso:
Você pode instalar o GNU Parallel simplesmente:
Assista aos vídeos de introdução do GNU Parallel para saber mais: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
fonte
Uma maneira seria usar o rsync, que copiará apenas as alterações - novos arquivos e as partes alteradas de outros arquivos.
http://linux.die.net/man/1/rsync
A execução de qualquer forma de operação de cópia paralela provavelmente inundará sua rede e a operação de cópia será interrompida ou sofrerá gargalos no disco de origem ou de destino.
fonte
Honestamente, a melhor ferramenta é a gsutil do Google. Ele lida com cópias paralelas com recursão de diretório. A maioria dos outros métodos que eu já vi não consegue lidar com a recursão de diretório. Eles não mencionam especificamente o sistema de arquivos local para cópias do sistema de arquivos local em seus documentos, mas funciona como um encanto.
É outro binário para instalar, mas provavelmente um que você já pode executar considerando toda a adoção do serviço em nuvem atualmente.
fonte
Rsync paralelo usando find:
em uma LAN corporativa, o rsync único faz cerca de 800 Mbps; com 6-8 trabalhos, sou capaz de superar os 2,5 Gbps (às custas de alta carga). Limitado pelos discos.
fonte
Há muitas coisas que se deve considerar, dependendo da topologia que você possui. Mas antes de começar a pensar em soluções complexas, você pode simplesmente tentar dividir a tarefa em dois trabalhos e verificar se o tempo necessário reduzirá significativamente:
Na próxima vez, tente:
(você pode substituir [al] * por algo que corresponda a cerca da metade dos arquivos - talvez [0-4] * - dependendo do conteúdo da pasta)
Se o tempo não melhorar drasticamente, pode ser mais importante verificar se é necessário copiar todos os arquivos (qual é a proporção de arquivos alterados para todos os arquivos?)
fonte