DEV Community

Cadu de Castro Alves for Textos em Português

Posted on

Como fazer backup apenas das imagens originais do WordPress com WP-CLI

Sou membro de uma comunidade de WordPress no WhatsApp. Hoje, um membro fez a seguinte pergunta:

"Eu preciso fazer um backup de todas as imagens de um site, mas apenas das originais. Eu não preciso das miniaturas (thumbnails). Alguém sabe como fazer isso?"

TL;DR

Se você estiver com pressa e não tiver tempo para ler todo o artigo, basta executar os seguintes comandos em seu Terminal.

# Usando o WP-CLI, para exportar a URLs de todas as imagens originais do seu site em um arquivo txt.
$ wp post list --post_type=attachment --field=guid > wp-content/uploads/imagens.txt
# Usando o wget, para baixar todas as imagens de uma só vez pro seu computador (ou servidor):
$ wget -i https://seusite.com/wp-content/uploads/imagens.txt

Se você pesquisar no Google "como fazer backup das imagens originais no WordPress" ou algo parecido, você vai encontrar vários artigos sobre como fazer na backup de imagens, mas não apenas as imagens originais.

Toda vez que você faz upload de uma imagem em um site feito com WordPress, normalmente ele armazena o arquivo original, além de versões desse arquivo em diferentes tamanhos.

-rw-r--r--   1 user  group    5845 Feb 25 18:07 foto-01-150x150.jpg
-rw-r--r--   1 user  group   20045 Feb 25 18:07 foto-01-300x300.jpg
-rw-r--r--   1 user  group  115432 Feb 25 18:07 foto-01-768x768.jpg
-rw-r--r--   1 user  group  164387 Feb 25 18:07 foto-01.jpg

Na lista acima, o arquivo original é o foto-01.jpg. Os outros 3 arquivos são miniaturas dessa imagem nos tamanhos 150x150 pixels, 300x300 pixels e 768 x 768 pixels, respectivamente.

O exemplo acima eu retirei de um site que está usando o tema Twenty Twenty. As miniaturas geradas dependem do tema que você está usando.

Mas identificar as imagens originais é apenas uma etapa do processo, pois outro grande problema é que o WordPress normalmente armazena os arquivos em sub-pastas seguindo o formato AAAA/MM, onde AAAA é o ano com 4 dígitos e MM é o mês com 2 dígitos.

Então se você fizer upload de uma imagem no dia 20 de fevereiro de 2020, ele deve armazená-la na pasta wp-content/uploads/2020/02/.

Se o seu site foi criado em janeiro de 2019 e você fez upload de pelo menos um arquivo por mês, sua pasta uploads deve de ter uma pasta 2019 com 12 sub-pastas para cada mês do ano.

wp-content/uploads/2019/01/
wp-content/uploads/2019/02/
wp-content/uploads/2019/03/
...
wp-content/uploads/2019/10/
wp-content/uploads/2019/11/
wp-content/uploads/2019/12/

Então, dependendo de quantas imagens o seu site tiver, você pode levar horas ou até dias para fazer o backup dessas imagens!

Mas calma, porque a solução é mais simples do que você pode imaginar!

Como baixar múltiplos arquivos de uma só vez?

Se você usa macOS, Linux, ou WSL no Windows, é possível fazer download de múltiplos arquivos de uma só vez usando o comando wget -i arquivo.txt, onde arquivo.txt é um arquivo contendo uma lista de URLs, mas cada uma delas em uma linha separada.

https://seusite.com/wp-content/uploads/imagem-01.jpg
https://seusite.com/wp-content/uploads/imagem-02.jpg
https://seusite.com/wp-content/uploads/imagem-03.jpg
https://seusite.com/wp-content/uploads/imagem-04.jpg
https://seusite.com/wp-content/uploads/imagem-05.jpg

Agora que já sabemos como baixar tudo de uma vez só, precisamos descobrir como pegar as URLs de todas as imagens originais de um site em WordPress.

WP-CLI é a solução!

WP-CLI é uma interface de linha de comando para WordPress. Você pode atualizar plugins, configurar instalações multisite e muito mais, sem usar um navegador.

O WP-CLI é uma ferramenta super poderosa para gerenciar um site em WordPress através da linha de comando.

Pra exportar as URLs das imagens em um arquivo, basta executar o seguinte comando em seu Terminal:

$ wp post list --post_type=attachment --field=guid > wp-content/uploads/imagens.txt

Agora vou explicar cada parte desse comando:

  1. wp post list é um comando para listar todos os posts no WordPress
  2. --post_type=attachment é um argumento pra retornar apenas os arquivos
  3. --field=guid é um argumento pra retornar a URL de cada um desses arquivos
  4. > wp-content/uploads/imagens.txt é um comando para exportar o resultado do comando wp post list --post_type=attachment --field=guid em um arquivo chamado imagens.txt e armazená-lo na pasta wp-content/uploads/.

Como baixar as imagens de uma só vez (e fazer o backup)

Após rodar o comando acima, você deve ter um arquivo localizado em https://seusite.com/wp-content/uploads/images.txt.

Agora, abra novamente seu terminal, execute o comando cd até a pasta onde você quer baixar as imagens, e execute o seguinte comando:

$ wget -i https://seusite.com/wp-content/uploads/imagens.txt

Assim que você pressionar Enter/Return, o wget vai baixar todas as imagens contidas no arquivo images.txt para a pasta do computador (ou servidor) onde você executou esse comando.

Você pode baixar as imagens para suas pastas do Dropbox, OneDrive, Google Drive, iCloud, ou qualquer outro serviço de armazenamento de arquivos.

E pronto! Seu backup estará concluído!

Top comments (0)