For our WordPress sites we wanted to have multiple levels of backups. It is advantageous to have at least one level of backups that we fully control. This is usually accomplished using some type of scripts that we write. This provides another level of assurance that we always have a copy of our website and data. It also allows us to more easily test for different problem scenarios and develop appropriate remedies in our scripts.
For Simplicity We Chose Multiple Compressed Backups
Realizing that there are trade-offs with any solution, we opted to use the second solution of creating multiple compressed versions of the code. This was motivated by the simplicity of the approach, the easy retrievability of a website state for a given day, and then importantly the fact that Azure and other cloud vendors provide different levels of storage. For storage that is not often used then the prices can be greatly reduced.
After we had everything setup for backing up our WordPress site, then we needed to write the BASH scripts that would be appropriate for our situation. As mentioned in the backup setup write-up, we decided to use the option for multiple compressed backups. The documentation from Tony Teaches Tech are detailed and clear. So, the main task that we had was to customize the paths in the scripts to be appropriate for our environment. We also wanted to include the backup of the MySQL data with the backups so that we could perform a full restore of a given WordPress site as needed.
An Option for Multiple Compressed Backups
The second backup solution we investigated was based on a YouTube video from Tony Teaches Tech that used a simple backup approach. The Linux tar and gzip commands were used to compress all of the code for a given day. Then the rsync command was used to make sure that only backups from certain intervals were saved. In this example, daily backups were saved for last 7 days, weekly backups for the last 3 weeks, and monthly backups for a year. The Linux cron command was used to schedule these backups. A write-up with the scripts was also published separately. This is a straightforward approach that makes it easy to get all of the code from a certain day of interest. However, the downside is that it creates multiple copies of the same code. In this example, there are effectively 22 copies of the code. If the code changes very little during each backup that is a lot of redundancy and a lot of storage space that is used.
WP Remote for Backups
The features that we most values from the WP Remote plugin were backup, restore, malware deletion, and the ability to manage numerous websites from one dashboard. WP Remote also has features for migration and creation of staging websites, but we found these to be limiting. For example, migration is set up to use FTP for transferring the website. For virtual machines, FTP usually needs to be set up separately and can be a security concern. For these and other reasons we have decided to use the Duplicator Pro plugin as well.
We found the malware detection and deletion feature to be helpful upon initial testing. We had one WordPress website that had not been updated in a month or two. When we added this website to the WP Remote dashboard then within an hour the WP Remote scanner had isolated and removed a malware executable. We were able to contact their support team also, which got back to us within another hour or so to verify the safety of the cleaned website.
There are several other plugins with malware detectors, such as the professional version of the All-in-One Security module that we use for our security. This initial testing of WP Remote, though, strengthened our confidence in its malware detection and deletion capabilities.