wget alternativa ao download de arquivos

0

Eu preciso baixar 10.000 arquivos zip do FTP de um cliente que tem cerca de 40.000 itens nele. Eu tenho contemplado fazendo:

$ cat > files.txt
file1
file2
file3
file4

com

$ wget -i files.txt

Existe uma solução melhor para uma quantia tão grande no caso de eu expirar?

    
por DᴀʀᴛʜVᴀᴅᴇʀ 16.04.2013 / 16:26

3 respostas

2

A solução é boa e bastante sólida: com as opções adequadas, wget tentará novamente e baixará qualquer arquivo cuja transferência foi interrompida.

Você também pode criar scripts para a maioria dos clientes FTP de linha de comando (por exemplo, cliente BSD ftp). Mas wget é melhor que você pode configurá-lo para não baixar arquivos que você já possui, o que o torna muito conveniente para sincronizações.

wget suporta (no Linux pelo menos) também taxa de limitação, e é muito fácil distribuir a lista de arquivos entre vários arquivos para fazer o download em paralelo, ou você pode usar GNU paralelo .

    
por 16.04.2013 / 16:33
1

wget é bom e competente e provavelmente funcionará bem neste caso, como mencionado pela resposta de Iserni, se você procurar no manual as opções disponíveis. Vou apenas dizer algumas alternativas.

Eu uso LFTP para transferências e sincronização em FTP e SFTP. Ele tem um sistema interno de filas que funciona bem para o meu caso de uso, suporta espelhamento, espelhamento reverso, FXP, todas as funções regulares de FTP e muito mais (até Bittorrent atualmente).

Neste caso, parece simples o suficiente para usar apenas um script e wget , mas eu queria mencionar um programa que simplificou muito as transferências de FTP para mim.

Eu também usei o NcFTP que tem um sistema em lote muito bom, mas o disjuntor do negócio em favor do LFTP para mim foi que ele suportava FTP e SFTP.

Outra alternativa é rsync que também suporta FTP, e talvez você já esteja acostumado com isso. Ele também tem opções bastante avançadas prontas para filtragem e retomada de downloads quebrados.

Uma vantagem com um cliente FTP "real" em comparação ao lote wget use é que uma única conexão com o servidor pode ser reutilizada, o que pode aumentar o desempenho. Não tenho certeza se existe uma alternativa para wget , mas talvez haja. Se esta for uma operação única, provavelmente você poderia usar mais ou menos qualquer coisa.

    
por 16.04.2013 / 16:56
0

O lftp é muito bom nisso. Observe os continuar e expandnd wildcards OPTS.

lftp :~> help mirror
Usage: mirror [OPTS] [remote [local]]
Mirror specified remote directory to local directory

-c, --continue continue a mirror job if possible -e, --delete delete files not present at remote site --delete-first delete old files before transferring new ones -s, --allow-suid set suid/sgid bits according to remote site --allow-chown try to set owner and group on files --ignore-time ignore time when deciding whether to download -n, --only-newer download only newer files (-c won't work) -r, --no-recursion don't go to subdirectories -p, --no-perms don't set file permissions --no-umask don't apply umask to file modes -R, --reverse reverse mirror (put files) -L, --dereference download symbolic links as files -N, --newer-than=SPEC download only files newer than specified time -P, --parallel[=N] download N files in parallel -i RX, --include RX include matching files -x RX, --exclude RX exclude matching files RX is extended regular expression -v, --verbose[=N] verbose operation --log=FILE write lftp commands being executed to FILE --script=FILE write lftp commands to FILE, but don't execute them --just-print, --dry-run same as --script=-

When using -R, the first directory is local and the second is remote. If the second directory is omitted, basename of first directory is used. If both directories are omitted, current local and remote directories are used.

lftp :~> help mget
Usage: mget [OPTS] 
Gets selected files with expanded wildcards
 -c  continue, reget
 -d  create directories the same as in file names and get the
     files into them instead of current directory
 -E  delete remote files after successful transfer
 -a  use ascii mode (binary is the default)
 -O  specifies base directory or URL where files should be placed
    
por 16.04.2013 / 17:58

Tags