Copie 10 milhões de arquivos pequenos entre servidores remotos (via web), sistemas linux, sem SSH na fonte

0

Aqui está a situação:

Precisa copiar aproximadamente 10 milhões de arquivos pequenos (1k - 50k cada) de um único diretório, entre 2 servidores remotos pela web. Tentei com FTP e SCP, mas falhei, pois todos os arquivos estão no diretório único e de alguma forma congela a transferência.

O problema é que não é possível usar TAR como no servidor de origem O SSH não está disponível, apenas no servidor de destino, onde tenho controle total.

O número diário de arquivos está aumentando em 10-40k, então está ficando mais difícil fazer a cópia final, e qualquer sugestão será muito apreciada.

Obrigado R.

Editar: Para esclarecer a situação: servidor de origem (onde estão todos os arquivos localizados) é um servidor de hospedagem compartilhada normal com acesso a PHP / Mysql e outras coisas (o PHP pode executar comandos comuns de linux). O servidor de destino no qual desejo transferir os arquivos é um acesso root completo (SSH, etc.) em uma instância do VPS.

Agora, posso tar / zip etc, mas imagino quanto tempo demorará para arquivar todos os 10/20 milhões de arquivos que eu tenho (arquivos de tamanho pequeno). Se eu fizer isso via PHP em algum momento, um tempo limite irá aparecer ou eu posso enviar o shell exec com execução em modo background, ou algo assim?

Outra opção é puxar os arquivos do servidor de destino de alguma forma, em pequenas quantidades ou? Todas as sugestões serão bem-vindas, já que estou ficando frustrado. Muito obrigado por respostas já feitas.

    
por BookMaster 04.04.2013 / 20:43

2 respostas

0

Você disse: "O número diário de arquivos está aumentando". Se você puder pará-lo, recursivamente puxe todos os arquivos do servidor FTP usando wget :

wget -m ftp://username:[email protected]

Se você não puder interromper a adição de novos arquivos até que se mova totalmente para o novo servidor, use curlftpfs (no novo servidor) para montar o host FTP como diretório local. Em seguida, use cp com -u e r flags. Você pode usar isso em várias sessões após a interrupção da operação ( -u cuida disso).
Depois de montar o host FTP, você também pode usar rsync .

    
por 05.04.2013 / 19:18
0

Dependendo de como os arquivos são nomeados, você pode tentar tar / zip chunks e, em seguida, tentar SCP ou FTP. Você não especificou o tipo de arquivo, mas se eles são logs ou outro texto, então você deve obter uma compactação razoável. Use curingas para arquivar todos os arquivos, começando com a, foo, bar123 etc.
Por exemplo:
         tar -czvf chunk01.tar.gz a *
         tar -czvf chunk02.tar.gz b *
         tar -czvf chunk03.tar.gz c *
         tar -czvf chunk03.tar.gz d *
         tar -czvf chunk03.tar.gz e *
         ...

    
por 05.04.2013 / 18:29