Skip to content

Conversation

@joe9663
Copy link
Contributor

@joe9663 joe9663 commented Jun 25, 2021

addresses issue #234.

there's probably a different way to exclude these file types automatically, but using this construction has the benefit of giving users the ability to change the configuration if they decide that they want to include archive files in their backups.

@jessecowens
Copy link
Member

@bwmarkle Joseph's pull request

@bwmarkle
Copy link
Contributor

@joe9663 Thanks for the PR, and sorry for the wait.

  • Please update the docblock here and tell me what the file extensions represent and why we're adding them. We can look at the code and figure out "what", but not always "why".
  • Can you touch base on how this was tested? I think you've got the right solution, but I just want to be better safe than sorry. What type of scenarios have you thought through? For example, If I've been using TU for a year and then I upgrade, what happens? IE do these default extensions override anything I've previously set? If I haven't changed my settings, will these new settings take effect?

* @var string
*/
public $default_exclude = '.git,node_modules';
public $default_exclude = '.git,node_modules,*.zip,*.gz,*.tar,*.wpress,*.tmp';
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bwmarkle

the file extensions are for various large files that might typically exist in a website filesystem that should generally be excluded to prevent making backups of backups.

.zip, .gz, and .tar are more broad in their application but I have seen cases where users create an archive of their uploads folder that is stored in /wp-content and gets included in the backup even though the /uploads directory is already being added.

.wpress is the specific file extension used by the All in One Migration plugin, which stores its backups in /wp-content. This is the most common example I have seen of other backup files being in Total Upkeep backups.

.tmp seems to be the extension used by Total Upkeep as it generates files and prepares to add them to a complete .zip file to create a finished backup. If the backup process fails, for example due to resource limits, and the orphaned files from the failed backup are not removed properly from the /wp-admin directory then including them in backups leads to a cascade of backup failures.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bwmarkle in regards to testing

I created dummy files using each of those extensions (testing.zip, testing.gz, etc.) and created a backup without the code modifications and confirmed that each of those files were included with the Total Upkeep production code.

Then I applied to code change to the TU in my testing installation and created another backup, which excluded those dummy files.

The upgrade flow however was not considered in my testing and I am not exactly sure how to test that.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@joe9663 you can:

  1. Check the master branch (this is the old version). Do what ever you have to do.
  2. Check out the exclude-file-extensions branch. This is basically upgrading.
    Does that help?

The questions I have are:

  1. What happens when someone is using the default settings?
  2. What happens if someone has modified the default settings with a custom rule?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bwmarkle

  1. The backup works as expected with the default settings.
  2. If a custom rule was previously used then the new defaults are not added to that field and the file types are not excluded.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants