O comando wput em 5 exemplos

O comando wput é uma versão do wget — só que ele faz o contrário: em vez de downloads, o wput faz uploads de arquivos pro servidor FTP, com a mesma eficiência e simplicidade. Se você já usa o wget para agilizar os seus downloads, vale a pena conhecer e usar o wput para fazer os seus uploads.
feat rede network-grayEu incluo o wput entre as ferramentas essenciais para quem trabalha com atualização de páginas na Internet — seja webdesigner ou programador web.
O wput é um cliente robusto para conexões FTP. Trabalha sem a necessidade de interação do usuário e pode rodar em background. Pode subir de um simples arquivo a diretórios inteiros pro servidor.
Se você tem problemas com a estabilidade de suas conexões, o wput foi feito pra você — ele tem suporte a retomada de downloads (resuming), ou seja, ele continua o trabalho, de onde parou.
Você pode, ainda, restringir a taxa de transferência dos arquivos, para evitar sobrecarga na sua rede. Ele é um excelente aplicativo para estar dentro de um script que transfira seus backups de um servidor a outro.

Como usar o wput

A sintaxe do comando é simples e intuitiva. Você deve informar os arquivos ou diretórios que serão enviados, nome do usuário ftp, sua senha, endereço do servidor e o diretório que irá receber os arquivos. Veja um exemplo da sintaxe:

wput arquivos_de_origem ftp://nome_de_usario:senha_de_usuario@meuservidor.com.br/diretorio_destino/

Vamos supor que eu deseje enviar os arquivos da pasta /var/www/html/ para a pasta /public_html, pro servidor fordlandau.net. Veja como fica:

wput /var/www/html/ ftp://a1308311:Grujz437@fordlandau.net/public_html/

Note que no exemplo acima, o nome do usuário é a1308311 e sua senha é Grujz437.
Faça um teste, para ver como funciona para você, alterando os nomes para aqueles que se adequam à sua situação.

Verbosidade

Embora eu use o wput para atualizar sites e transferir arquivos de backup, nem sempre sinto necessidade de conferir o que está sendo feito o tempo todo.
Deixar uma janela, em um canto da tela, em um dos monitores, mostrando o upload é uma boa opção. Neste caso, gosto de usar o parâmetro --less-verbose, desta forma:

wput --less-verbose * ftp://a1308311:Grujz437@fordlandau.net/public_html/

Use os coringas

Note que o *, no exemplo anterior, significa “todos os arquivos dentro do diretório atual”.
Você pode usar livremente os coringas. Se quiser subir apenas os arquivos PHP, use *.php.
O comando admite a flexibilidade de transferir vários tipos de arquivos, assim:

wput *.php *.html *.css ./includes/*.php ftp://a1308311:Grujz437@fordlandau.net/public_html/

Pra quem já está acostumado a usar coringas, é simples assim.

Faça a transferência com mais discrição

Se você não deseja obter qualquer atualização visual do andamento dos uploads, pode usar a opção --quiet e, ainda pode jogar o comando “pros bastidores”, com a opção &, do Linux, ao final da linha de comando. Veja como:

wput --quiet * ftp://a1308311:Grujz437@fordlandau.net/public_html/ &

O wput tem uma opção melhor do que esta, com a opção --background — que joga a execução “pros fundos” e grava os resultados no arquivo de log ./wputlog, onde você pode verificar o que ocorreu (ou está ocorrendo) durante a transferência. Veja um exemplo:

wput --background * ftp://a1308311:Grujz437@fordlandau.net/public_html/

A qualquer momento você pode ler o arquivo de log da transferência:

less ./wputlog

Como retomar uploads incompletos

Você pode interromper o envio de arquivos a qualquer momento — basta teclar Ctrl + C — e retomar o trabalho no ponto em que ele parou, mais tarde.
O resuming é o comportamento padrão do wput. Contudo, se quiser, você pode pedir para ele começar o trabalho todo de novo. A opção --reupload faz a transferência dos dados, mesmo que já tenham sido transferidos:

wput --reupload --less-verbose * ftp://a1308311:Grujz437@fordlandau.net/public_html/

Limite o uso de banda nos uploads

Para evitar “incomodar” outros usuários e aplicativos na rede, você pode limitar o consumo de banda do wput com a opção de comando --limit-rate.
Se você quiser limitar o uso da banda para 14 mil bytes, pode usar o comando assim: --limit-rate=14K. Veja um exemplo:

wput --limit-rate=15K --reupload --less-verbose * ftp://a1308311:Grujz437@fordlandau.net/public_html/

É importante frisar que o controle do uso da banda é feito pela média do uso. Ou seja, se você estabelecer um limite de 5K e, por conta da lentidão na rede, o wput só conseguir usar 2K, assim que lhe for possível, ele vai usar mais do que o limite de 5K, até restabelecer a média de 5K.
Portanto, não se espante com uma provável oscilação nestes números.

Parâmetros mais comuns de uso do wput

Agora que você já sabe usar o wput, caso precise, pode voltar a esta página e ir direto pra tabela abaixo, onde vou dar uma explicação geral e rápida sobre as opções do comando.

Opção longa Opção curta Descrição
–less-verbose -nv reduz “um pouco” o output do comando, mantendo o usuário informado do básico
–quiet -q desliga a verbosidade do comando. A opção contrária é o --verbose ou -v
–background -b opera “nos bastidores” e guarda as informações, por padrão, no arquivo ./wputlog
–limit-rate -l as duas opções divergem ligeiramente no uso: --limit-rate=tx ou -l tx — em que tx é o valor da taxa acompanhado da unidade, que pode ser K (KiB) ou M (MiB)
–reupload -u ignora a presença dos arquivos já transferidos e os reescreve. Refaz o upload. O padrão do wput, é a retomada no ponto em que parou na última vez e ignorar os arquivos que já foram transferidos e não sofreram alterações
–tries -t em conexões instáveis, com constantes quedas, você pode especificar um número de tentativas para cada transferência malsucedida. O padrão do aplicativo é -1, ou seja, número ilimitado de tentativas

conclusão

Para concluir, eu gostaria de fazer uma nota rápida sobre optar ou não pelo uso da versão “longa” ou curta ao escrever o comando.
Para usar um exemplo, a opção curta de --less-verbose é -nv — ambas fazem a mesma coisa.
O uso da opção curta serve para nos poupar tempo, no dia a dia. Dentro de scripts, contudo, tenha em mente que você pode levar meses ou anos para querer alterar seus códigos. É por isto que usamos comentários nos nossos scripts. O uso da versão mais longa ajuda a entender melhor o código que você escreveu meses atrás.
No final das contas, o uso das versões mais longas tornam a linha de comando autoexplicativa, poupando seus scripts de linhas e linhas de comentários.
Por fim, recomendo dar uma olhada na página do manual do comando: man wput — onde mais informações podem ser encontradas.
Como sempre, sinta-se à vontade para comentar e, se achar que o texto lhe foi útil, compartilhe o conhecimento com outras pessoas.
Divirta-se! 😉

O comando wget em 10 exemplos

O wget é a melhor opção para fazer download de arquivos, quase sempre, em função de sua flexibilidade e agilidade. É um dos meus aplicativos preferidos, por tornar simples várias situações complexas.

  • baixar arquivos grandes;
  • baixar vários arquivos recursivamente;
  • baixar arquivos sem minha interação;
  • baixar uma grande quantidade de arquivos etc.
LEIA MAIS

Vou mostrar, neste artigo, o meu jeito preferido de baixar arquivos via wget.

Download de um simples arquivo

Veja como baixar o Ubuntu 14.04 64 bits via wget:

wget http://releases.ubuntu.com/trusty/ubuntu-14.04-desktop-amd64.iso

Note que, enquanto baixa o arquivo, o wget exibe algumas informações:

  • o percentual de download já completado;
  • a quantidade de bytes baixados;
  • a velocidade de download atual;
  • o tempo restante para completar a tarefa.

Neste caso, especificamente, não costumo usar o wget. Creio que torrents ainda são a forma mais eficiente de baixar a minha distro preferida.
Veja como baixar o torrent do Ubuntu via wget:

wget http://releases.ubuntu.com/saucy/ubuntu-13.10-desktop-i386.iso.torrent

Neste exemplos, o wget vai gravar o arquivo baixado no diretório corrente. Fique atento.
wget download torrent ubuntu 13.10

Como baixar um arquivo com wget e salvar com nome diferente ou em diretório diferente

A maneira como wget grava os nomes dos arquivos baixados nem sempre é a mais adequada para a sua situação. Para estes casos, use o parâmetro -O. Veja como:

wget http://releases.ubuntu.com/saucy/ubuntu-13.10-desktop-i386.iso.torrent -O UbuntuSaucySalamander.torrent

O mesmo pode ser feito se você quiser gravar em um diretório diferente do atual:

wget http://releases.ubuntu.com/saucy/ubuntu-13.10-desktop-i386.iso.torrent -O ~/Downloads/UbuntuSaucySalamander.torrent

Como limitar a velocidade de download do wget

Ao executar o aplicativo, ele vai buscar usar toda a banda possível, para terminar logo a tarefa. Em alguns casos, isto pode ser um grande problema – imagine um servidor de produção.
Com o parâmetro --limit-rate, é possível restringir o uso da banda em níveis seguros. Veja como baixar o Ubuntu 14.04 LTS com velocidade limitada a 300k

wget --limit-rate=300k http://releases.ubuntu.com/saucy/ubuntu-13.10-desktop-i386.iso.torrent

wget download ubuntu 14.04
Quando baixar arquivos pequenos, você pode não sentir muita diferença ao fazer neste aspecto, uma vez que o wget não “limita” a banda. Na verdade, ele pausa o processo várias vezes, pelo tempo necessário para que, ao todo, ele fique dentro do limite médio especificado pelo usuário.

Como continuar um download interrompido

Para reiniciar um download no ponto em que ele parou, use a opção -c:

wget -c http://cdimage.ubuntu.com/daily-live/current/trusty-desktop-amd64.iso

Se você não usar esta opção, o wget vai entender que deve criar um novo arquivo – e vai acrescentar “.1” ao final do nome do novo arquivo, para te ajudar a diferenciar os dois.

Faça download em background

É possível deixar o wget rodando “nos bastidores”, enquanto você trabalha no mesmo terminal. Você pode, por exemplo rodar vários wget nos bastidores, usando este método – que é essencialmente útil quando há um grande número de grandes arquivos para ser baixados, mesmo que de sites diferentes. Veja como:

wget -b http://cdimage.ubuntu.com/daily-live/current/trusty-desktop-amd64.iso
Continuando em plano de fundo, pid 28553.
A saída será escrita em “wget-log”.
Solaris-8:~$ 

Como padrão, o wget irá enviar um log desta atividade pro arquivo wget-log. Você pode olhar este log, durante a atividade da seguinte forma:

tail -f wget-log
16950K .......... .......... .......... .......... ..........  1%  458K 45m5s
 17000K .......... .......... .......... .......... ..........  1%  549K 45m1s
 17050K .......... .......... .......... .......... ..........  1%  480K 44m59s
 17100K .......... .......... .......... .......... ..........  1%  442K 44m57s
 17150K .......... .......... .......... .......... ..........  1%  542K 44m53s
 17200K .......... .......... .......... .......... ..........  1%  490K 44m51s
 17250K .......... .......... .......... .......... ..........  1%  505K 44m48s

Se quiser interromper todos os processos do wget em execução, use o seguinte comando:

killall wget

Disfarce de navegador com –user-agent

Alguns sites desabilitam seus downloads quando detectam que não estão sendo feitos por um navegador. Veja como usar o wget “disfarçado” de Firefox:

wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" http://cdimage.ubuntu.com/daily-live/current/trusty-desktop-amd64.iso

Neste caso, usei o site do cdimage.ubuntu apenas como exemplo. O site é feito para permitir downloads do wget sem quaisquer disfarces.

Estabeleça um número de tentativas

Conexões problemáticas podem causar interrupções no seu download. Você pode estabelecer um número de tentativas pro wget.

wget --tries=100 http://cdimage.ubuntu.com/daily-live/current/trusty-desktop-amd64.iso

Por padrão, o wget sempre faz 20 tentativas. Portanto, use este parâmetro para especificar número de tentativas diferente deste padrão.
Para especificar um número infinito de tentativas, use tries=0.
Ao obter os seguintes erros, o wget vai parar de tentar imediatamente:

  • connection refusedconexão recusada pelo servidor
  • file not found (erro 404) – arquivo não encontrado

Como baixar um site completo via wget

Segue o comando para fazer download de um site completo, usando o parâmetro --mirror

wget --mirror -p --convert-links -P ./LOCAL http://www.site.com.br

em que:

  • –mirror – liga as outras opções do wget adequadas para fazer o espelhamento do site em questão
  • -p – baixa todos os arquivos necessários para que o site inteiro possa ser exibido localmente
  • –convert-links – depois de baixar, converte os links em documentos para visualização local
  • -P – grava todos os arquivos baixados dentro do diretório especificado

Como fazer o wget rejeitar certos tipos de arquivos

Em alguns casos, não quero baixar as imagens ou os arquivos de vídeo .flv… para estes casos, uso a opção --reject. Veja como (repetindo o exemplo anterior):

wget --reject=flv --mirror -p --convert-links -P ./LOCAL http://www.site.com.br

Como fazer download de apenas certos tipos de arquivos

Temos uma situação contrária à anterior. Ainda usando o mesmo exemplo, vamos restringir os downloads aos arquivos PDF:

wget -r -A.pdf --mirror -p --convert-links -P ./LOCAL http://www.site.com.br

Como baixar arquivos de um servidor FTP com o wget

Se for possível fazer uma conexão anônima, use o wget assim:

wget ftp://meuservidor.com.br

Se o servidor exige que se faça login, use o comando assim:

wget --ftp-user=nomedousuario --ftp-password=senhadele ftp://meuservidor.com.br

Faça bom proveito das dicas e, se quiser, dê uma conferida no comando wput (pra fazer uploads)!