Applies to: VisualSVN Server 5.4 and later
This article describes the Advanced Backup Schedule Settings. These settings are available only for those automatic scheduled backup jobs that are set to use the mixed full/incremental backup scheme. You can edit these settings when you create a new job through the Create Backup Repository Job wizard. You can also modify these settings for an existing job through the job's properties.
Overview of backup chains and optimized backup policies
To understand the effect of the advanced policy settings described below, you need to keep in mind how backup chains work.
A backup job that uses the mixed full/incremental backup scheme creates so-called chains of backups, where each chain consists of one full backup (which backs up the whole repository) that is followed by a series of incremental backups (each of which backs up only the relative changes since the previous backup in this chain). One chain continues until the end of this series of incremental backups. Then the next separate chain will start with a full backup again, and so on. To restore from a chain, you need the full backup from this chain and all the subsequent incremental backups from this chain up to the desired restoration point.
In the simplest case, both full and incremental backups are created based strictly on the schedule that you set up, regardless of when changes are made in the repository. Meanwhile, the advanced policy settings described below allow you to optimize the creation of backups. The optimization is achieved by skipping the unnecessary backups and by making longer backup chains possible, to take greater advantage of the much more storage-efficient incremental backups. This can substantially reduce the time spent on backing up and the use of storage space.
One exception when you may decide to use a non-optimized policy, is when you have to meet some formal criteria with regards to the frequency of incremental or full backups. Otherwise, if you do not have such formal criteria, it is reasonable and recommended that you select optimized policies for incremental and/or especially for full backups.
Incremental backup creation policy
For the backup job that you are configuring, this section allows you to make an optimization to the frequency of incremental backups. The following options are available:
- Always create incremental backups on schedule - never skip a scheduled incremental backup, even no changes have occurred in this repository since the previous backup and this incremental backup is going to be empty. This option does not make any optimizations to the frequency of incremental backups.
- Create incremental backup only if repository has changed - skip the creation of a scheduled incremental backup if this backup is going to be empty, because no changes have occurred in this repository since the previous backup. This policy is the default setting.
The optimization for incremental backups is designed to avoid creating empty incremental backup files, which would unnecessarily clutter the backup storage folder. This optimization is especially useful, if you have set a very high frequency of incremental backups, while the frequency of actual commits to the repository varies a lot.
The skipping of empty incremental backups also has an effect on the creation of full backups, if you use one of the optimized policies for full backups in the mixed full/incremental backup scheme.
Full backup creation policy
For the backup job that you are configuring, this section allows you to make an optimization to the frequency of full backups. The following options are available:
-
Always create full backups on schedule - never skip a scheduled
weekly full backup. This means that the job starts a new backup chain
for the repository every week, with no exceptions. This option does not
make any optimizations to the frequency of full backups.
NoteThis was the only available behavior in VisualSVN Server 5.3.x and earlier.
-
Create full backup only if incremental chain is non-empty - skip
the creation of a scheduled weekly full backup if the job has not made
any incremental backups of this repository since the last full backup.
In other words, if the repository's latest backup chain does not contain
any incremental backups, the job will not start a new chain. Instead,
the job will continue the same existing chain for yet another week.
NoteThis option is the default for mixed full/incremental backup jobs created in VisualSVN Server 5.4 and later.
-
Create full backup only if incremental chain has reached the length threshold - skip the creation of a scheduled weekly full backup, and therefore continue the same chain, until the repository's current backup chain reaches the built-in chain length threshold.
As of VisualSVN Server 5.4, this length threshold is defined as 100 incremental backups since the last full backup of the repository (this threshold value may be changed in later releases). The length threshold is chosen to limit backup chains to reasonable lengths, as determined by the current implementation.
The optimizations for full backups are particularly useful if you have extremely large repositories (such as in the hundreds of gigabytes), for which creating a full backup can take a lot of disk space, time, and also use a lot of network bandwidth (if you are using cloud backups, such as backing up to Azure Files).
The optimized full backup policies allow you to lower the associated costs, while allowing you to achieve essentially the same result as the non-optimized policy in terms of having recent and up-to-date backups.
Example
For example, let us assume that you configured the following settings for your mixed full/incremental backup job:
- Incremental backups once a day from Monday through Friday;
- Full backup on Saturdays;
- The Always create incremental backups on schedule policy for incremental backups;
- The Create full backup only if incremental chain has reached the length threshold policy for full backups.
With these settings, this job will create 6 incremental backups per week (5 scheduled incrementals plus 1 when skipping a full backup). Assuming the chain length threshold of 100 incremental backups, the job will create a full backup of the repository (to start a new chain) only once per every 17 weeks, and each chain will be 17 weeks long. Nevertheless, due to the incremental backups, you will still have daily snapshot points (except Sundays) to restore from.