— Wordpress, WP-CLI, Productivity — 1 min read
I'm member of a WordPress community on WhatsApp. Today, one member raised the following question:
"I need to create a backup of all images of a website, but only the original ones. I don't need the thumbnails. Does anybody know how to do that?"
If you Google about "how to backup full images on WordPress" or something similar, you will find a lot of posts about backing up images, but not only the original ones.
Then, I've discovered that it's possible to download multiple files at once using wget -i filename.txt
. filename.txt file should contain a list of URLs, but each one must be in a separate line.
But how could I get a list of ALL full images of a WordPress site?
WP-CLI is the command-line interface for WordPress. You can update plugins, configure multisite installations and much more, without using a web browser.
For this task, we need to find a way to list the URLs of all original images and save them into a file.
We can do that by running only one command:
1$ wp post list --post_type=attachment --field=guid > wp-content/uploads/images.txt
Let me explain each part of this command:
wp post list
is a command to list all WordPress posts--post_type=attachment
is an argument to retrieve only images--field=guid
is an argumento to retrieve the URL of each image > wp-content/upload/images.txt
is a command to output the result of wp post list --post_type=attachment --field=guid
into a file.After running the command above, you should have a file located at https://yousite.com/wp-content/uploads/images.txt
.
Now, you should go back to your terminal, cd
to the folder you want to download the files, and type the following command:
1$ wget -i https://yousite.com/wp-content/uploads/images.txt
As soon as you hit Enter/Return, wget
you start to download all the images contained in images.txt file to the computer (or server) you're running this command.
Voila!