Download rápido de vários diretórios FTP

1

Eu tenho um servidor FTP com um número muito alto de diretórios aninhados. Eu tenho que baixar o diretório inteiro recursivo. Devido ao número muito elevado de diretórios (a maioria deles tem apenas um arquivo), o download parece ser limitado.

Minhas duas abordagens

  • Usando o FileZilla (com várias conexões paralelas)
  • Faça o download do diretório compactado diretamente do host

levando tudo para um download muito lento de alguns kb / s. Com essa velocidade eu preciso de 5 dias para baixar todos os arquivos ... isso não é uma opção.

Quais possibilidades eu tenho para baixar o diretório FTP inteiro o mais rápido possível?

    
por Fruchtzwerg 22.02.2017 / 22:00

2 respostas

0

Como o FTP não é o protocolo preferido para copiar diretórios aninhados em profundidade, tentei encontrar uma maneira de compactar todos os arquivos em um único arquivo no lado do servidor.

Uma possibilidade de empacotar os arquivos para usar um console SSH com um comando como

zip -r <username>/backup_29_08_12.zip<username>

Como o meu fornecido não permite essa conexão, no meu caso isso não foi possível.

Descobri que meu provedor permite usar o pacote PEAR Archive_Tar . O resultado é um scipt do PHP contendo os arquivos:

<?
    @error_reporting(E_ALL ^ E_WARNING);
    @ini_set("max_execution_time", 0);
    @ini_set("memory_limit", "-1");

    $directory = "";

    $ignore = array("*.sql.gz", "*.tar.gz");

    $path = preg_replace('/(\/www\/htdocs\/\w+\/).*/', '$1', realpath(__FILE__));
    include "Archive/Tar.php";
    $archivename = preg_replace('/.+\/(.+)\/$/', '$1', $path).date('_Y-m-d_His').".tar.gz";
    $archive = new Archive_Tar($archivname, true);
    $archive->setIgnoreList($ignore);
    $archive->createModify($path.$directory, "", $path);
    echo "Backup done";
?>

Chamar esse script em uma pasta com o CHMOD 0777 demorou cerca de meia hora. Depois disso, consegui baixar os arquivos compactados sem uma velocidade limitada de download.

    
por 24.02.2017 / 09:51
1

O FTP é um protocolo horrível - sua abordagem de compactação e download de arquivos é apropriada, pois é provável que seja muito mais rápido do que navegar pela árvore de diretórios inteira - de fato, se isso estiver indo apenas alguns kb por segundo, provavelmente tipo de limitação de taxa ou gargalo de largura de banda entre você e o servidor. (Ou possivelmente um problema de MTU)

Você não disse se precisa usar o FTP. Se você puder contorná-lo, tente usar o SCP ou até mesmo abra um servidor da Web e baixe o arquivo zip sobre ele. Ambos são executados em uma única conexão TCP e são muito mais simples que o FTP.

Se você tiver que usar o FTP, experimente cada um dos modos ativo e passivo e garanta que o host tenha o rastreamento de conexão apropriado habilitado ou use uma VPN diretamente para o servidor do qual você está tentando FTP, para evitar problemas de NAT / firewall .

(Tente configurar a MTU para a conexão ethernet um pouco menor no host, ou configure a fixação da MTU e veja se isso faz diferença)

    
por 22.02.2017 / 22:30