Nbackup features — an overview
To make a full database backup, the command syntax is:
nbackup [-USER user -PASSWORD password] -BACKUP 0 database [backupfile]
For instance, assuming the database is located in C:\Data
, and `nbackup.exe ` is in the search of path Windows:
C:\Data>nbackup -BACKUP 0 inventory.fdb inventory_1-Mar-2006.nbk
Or, if Firebird (from version 2.5) is running on non-standard port, in this example, 3051:
C:\Data>nbackup -BACKUP 0 localhost/3051:C:\Data\inventory.fdb C:\Data\inventory-level-0-Jul-2020.nbk -user SYSDBA -pass masterkey
In Firebird 3.0 and higher, in a case of successful completing the backup, the nbackup will print the short statistics:
time elapsed 0 sec page reads 307 page writes 307
The backup level 0 indicates a full backup.Backup levels greater than 0 are used for incremental backups;we’ll discuss those later on.
Instead of a database filename you may also use an alias.
Instead of a backup filename you may also specify stdout
.This will send the backup to standard output, from where you can redirect it to e.g. a tape archiver or a compression tool.
The -USER
and -PASSWORD
parameters may be omitted if at least one of the following conditions is met:
The environment variables ISC_USER
and ISC_PASSWORD
have been set, either to SYSDBA
or to the owner of the database.
You are logged on as root on a Posix system.This makes you SYSDBA
by default.
Under Windows: Trusted authentication is enabled in firebird.conf
, and you are logged on to the Windows account that owns the database.This is possible in Firebird 2.1 and above.
Under Windows: Trusted authentication is enabled in firebird.conf
, and you are logged on as a Windows administrator.In Firebird 2.1, this automatically gives you SYSDBA
rights.In Firebird 2.5 and above, there is the additional condition that AUTO ADMIN MAPPING
has been set in the database.
For clarity and brevity, the -USER
and -PASSWORD
parameters are not used in the examples.
Starting with Firebird 2.5, instead of -P password
(or -PASSWORD password
) you may also use -FE filename
(or -FETCH_PASSWORD filename
).This will cause nbackup to fetch the password from the given file.With -FE
, the password itself doesn’t appear in the command and will thus be better shielded against people who might otherwise pick it up via the command history, the w
command on Unix or from a script or batch-file.
In Firebird 3.0 and up, the firing of database triggers can be prevented by specifying the -NODBTRIGGERS
option.For more information, see Suppressing database triggers.
In Firebird 2.1 and up, the firing of database triggers can be prevented by specifying the -T
option.For more information, see Suppressing database triggers.The -T
option was deprecated in Firebird 3.0 in favour of -NODBTRIGGERS
.
Starting with Firebird 2.1.4, it is possible to force direct I/O on or off by specifying -D ON
or -D OFF
.For details and background see Direct I/O, elsewhere in this manual.
The different parameters (-BACKUP
, -USER
etc.) may occur in any order.Of course each parameter should be immediately followed by its own argument(s).In the case of -BACKUP
there are three of them: backup level or guid, database, and backup file — in that order!
If the -B
parameter comes last, you may leave out the name of the backup file.In that case nbackup will compose a filename based on the database name, the backup level, and the current date and time.This can lead to a name clash (and a failed backup) if two backup commands of the same level are issued in the same minute.
Warning
|
Do not use nbackup for multi-file databases.This can lead to corruption and loss of data, despite the fact that nbackup will not complain about such a command. |
Note
|
What follows here is not necessary knowledge to use nbackup.
It just gives a rough (and incomplete) impression of what happens under the hood during execution of nbackup -BACKUP :
|
First of all, the main database file is locked by changing an internal state flag.From this moment on, any and all mutations in the database are written to a temporary file — the difference file or delta file.By default, the delta file is created in the same folder as a database file, with the additional extension .delta
, for example: MyDatabase.fdb.delta
Then the actual backup is made.This isn’t a straight file copy;restoring must be done by nbackup as well.
Upon completion of the backup, the contents of the delta file are integrated with the main database file.After that, the database is unlocked (flag goes back to “normal”) and the delta is removed.
The functionality of steps 1 and 3 is provided by two new SQL statements: ALTER DATABASE BEGIN BACKUP
and ALTER DATABASE END BACKUP
.Contrary to what the names suggest, these statements do not take care of making the actual backup;rather, they create the conditions under which the main database file can be safely backed up.And to be clear: you don’t need to issue these commands yourself;nbackup will do that for you, at the right moments.
A full backup is restored as follows:
nbackup -RESTORE database [backupfile]
For instance:
C:\Data> nbackup -RESTORE inventory.fdb inventory_1-Mar-2006.nbk
You don’t specify a level for a restore.
When restoring, the -RESTORE
parameter must come last, for reasons that will become clear later.
Instead of a database filename you may also use an alias.
If the specified database file already exists, the restore fails, and you get an error message.
Here too, you may omit the name of the backup file.If you do, nbackup will prompt you for it.(Attention! In Firebird 2.0.0 this “interactive restore” feature is broken, leaving you with an error message and a failed restore. Fixed in 2.0.1.)
Restoring works purely on the filesystem level and can even be done without a Firebird server running.Any credentials supplied via the -USER
and -PASSWORD
parameters are ignored.The same goes for passwords read from a file.However, nbackup does try to read the password from the file if the -FETCH_PASSWORD
parameter is present, and if an error occurs, the entire operation is abandoned.
Warning
|
The incremental backup facility was entirely broken in Firebird 2.1.0, and fixed again in 2.1.1. |
To make an incremental (“differential”) backup, specify a backup level greater than 0.An incremental backup of level N
always contains the database mutations since the most recent level N-1
backup.
Examples:
One day after the full backup (level 0), you make one with level 1:
C:\Data> nbackup -BACKUP 1 inventory.fdb inventory_2-Mar-2006.nbk
This backup will only contain the mutations of the last day.
One day later again, you make another one with level 1:
C:\Data> nbackup -BACKUP 1 inventory.fdb inventory_3-Mar-2006.nbk
This one contains the mutations of the last two days, since the full backup, not only those since the previous level-1 backup.
Note
|
The previous incremental backup of any level must be completed before the start of the next incremental backup, otherwise |
A couple of hours on we go for a level-2 backup:
C:\Data> nbackup -BACKUP 2 inventory.fdb inventory_3-Mar-2006_2.nbk
This youngest backup only contains the mutations since the most recent level-1 backup, that is: of the last few hours.
Before Firebird 3.0, all incremental backups (i.e., level 1, 2, etc.) will read the whole database file to locate the changes and store them into a backup file.This can affect the database performance in a case of big databases (100Gb+) and slow disk subsystem (usually, slowness can be noticed on non-SSD drives).Starting from Firebird 3.0, only the changed portion of the database file is read, so incremental backups level 1 and higher are much faster, and reduce impact on database performance.
Note
|
All the comments that have been made about full backups also apply to incremental backups. |
Warning
|
Again: do not use nbackup for multi-file databases. |
When restoring incremental backups, you must specify the entire chain of backup files, from level 0 through the one you wish to restore.The database is always built up from the ground, step by step.(It is this stepwise adding until the database is restored that gave rise to the term incremental backup.)
The formal syntax is:
nbackup -R database [backup0 [backup1 [...] ] ]
So, restoring the level-2 backup from the previous example goes as follows:
C:\Data> nbackup -R inventory.fdb inventory_1-Mar-2006.nbk inventory_3-Mar-2006.nbk inventory_3-Mar-2006_2.nbk
Of course the line has been split here for layout reasons only — in reality you type the entire command and only hit kbd:[Enter] at the end.
Because it is not known beforehand how many filenames will follow the -RESTORE
switch (as we don’t specify a level when restoring), nbackup considers all arguments after the -RESTORE
to be names of backup files.It is for this reason that no other parameter may follow the list of filenames.
There is no formal limit to the number of backup levels, but in practice it will rarely make sense to go beyond 3 or 4.
What happens if you accidentally leave out a file, or specify a series of files that don’t all belong together?You could imagine that you specify inventory_2-Mar-2006.nbk
by mistake instead of inventory_3-Mar-2006.nbk
in the above example.Both are level-1 backup files, so in both cases we get a nice “0, 1, 2” level series.But our level-2 file is incremental to the level-1 backup of 3 March, not to the one of 2 March.
Fortunately such a mistake can never lead to an incorrectly restored database.Each backup file has its own unique ID.Furthermore, each backup file of level 1 or above contains the ID of the backup on which it is based.When restoring, nbackup checks these IDs;if somewhere in the chain the links don’t connect, the operation is cancelled, and you get an error message.
Firebird databases need not be files;they can also be placed on a so-called raw device, for instance a disk partition without a file system.The question of where the delta has to be placed in such cases was at first overlooked during the development of nbackup
.On Posix systems, if the database was located at e.g. /dev/hdb5
, it could happen that the delta was created as /dev/hdb5.delta
.In light of the nature and purpose of the /dev
directory and its often limited available space, this is undesirable.
As of Firebird 2.1, nbackup refuses to operate on raw-device databases unless an explicit location for the delta file has been set.The way to do this is discussed in [nbackup-deltafile], later on in this manual.
Firebird 2.1 introduced the concept of database triggers.Certain types of these triggers can fire upon making or breaking a database connection.As part of the backup process, nbackup opens a regular connection to the database (in some versions even more than once).To prevent database triggers from firing inadvertently, the -T
or — since Firebird 3.0 — -NODBTRIGGERS
switch can be used.
Originally, nbackup used direct I/O only when making a backup under Windows NT (and successors like 2000, 2003 etc).On all other OS’es, direct I/O was off.This caused problems on some Linux systems, so in versions 2.0.6 and 2.1.3 direct I/O was switched on under Linux as well.However, this turned out to be problematic for certain other Linux configurations.In 2.1.4 and 2.5 the original behaviour was restored, but this time as a default that was overridable by a newly added parameter: -D
.Its use is as follows:
nbackup -B 0 cups.fdb cups.nbk -D on -- direct I/O on
nbackup -B 0 mugs.fdb mugs.nbk -D off -- direct I/O off
Just like the option letters themselves, the arguments ON
and OFF
are case-insensitive.
Direct I/O is only applied when making a backup, not during a restore.Under Windows it is realized by setting FILE_FLAG_NO_BUFFERING
.On other systems, O_DIRECT
and POSIX_FADV_NOREUSE
are used.The latter two are sometimes unavailable;in such cases, they are (or one of them is) silently left out.Even if the user specified -D on
explicitly, this doesn’t lead to a warning or error message.
Apart from the already mentioned -FE
and -D
parameters, Firebird 2.5 also saw the introduction of the following two:
-Z
Shows single-line version information.This option can be used independently, but also in combination with other parameters, such as -B
, -R
, -L
etc.
-?
Shows a summary of nbackup’s usage and command-line parameters.Attention: If this option is present, all the other parameters are ignored!
Nbackup itself only operates on local databases.But in Firebird 2.5 and up, nbackup-type backups and restores can also be performed remotely via the Services Manager.For this, the program fbsvcmgr.exe
on the local machine is used;it is located in the same folder as nbackup.exe
and the other Firebird command-line tools.The first argument is always “hostname:service_mgr
”, with hostname
being the name of the remote server.Other available parameters are:
-user username -password password -action_nbak -action_nrest -nbk_level n -dbname database -nbk_file filename -nbk_no_triggers -nbk_direct on|off
Making a full backup on the remote machine frodo
goes like this:
fbsvcmgr frodo:service_mgr -user sysdba -password masterke
-action_nbak -nbk_level 0
-dbname C:\databases\countries.fdb -nbk_file C:\databases\countries.nbk
And a subsequent incremental backup:
fbsvcmgr frodo:service_mgr -user sysdba -password masterke
-action_nbak -nbk_level 1
-dbname C:\databases\countries.fdb -nbk_file C:\databases\countries_1.nbk
To restore the whole shebang:
fbsvcmgr frodo:service_mgr -user sysdba -password masterke
-action_nrest -dbname C:\databases\countries_restored.fdb
-nbk_file C:\databases\countries.nbk -nbk_file C:\databases\countries_1.nbk
Note
|
Each of the above commands should be typed as a single sentence, without line breaks.The hyphens before the parameter names may be omitted, but especially with long commands like these it may be helpful to leave them in, so you can easily identify the individual parameters (the arguments don’t get a hyphen). |
Comments:
The Services Manager always requires authentication, be it automatic (root under Posix, trusted under Windows) or explicit through the parameters -user
and -password
.The environment variables ISC_USER
and ISC_PASSWORD
are not used.AUTO ADMIN MAPPING
in the database has no effect when connecting remotely (though this may also depend on the configuration of the network).
Note: When Windows trusted authentication is in effect, the account name of the user on the local machine is passed to the Services Manager on the remote machine.If the owner of the remote database is a Windows account (e.g. FRODO\PAUL
) rather than a Firebird account, and the Windows account name on the local machine is the same as the owner account name on the remote machine, the caller is acknowledged as the database owner and allowed to make a backup.This could pose a security risk, because even on local networks user PAUL
on one machine is not necessarily the same person as user PAUL
on another machine.
Restoring (-action_nrest
) also requires authentication, but once verified the credentials are not used in any way.Hence, the user need not be the database owner, SYSDBA
or superuser.In the case of Windows trusted authentication, the user need not exist at all on the remote machine (where the database is located).
This weak authentication implies another potential security risk.Suppose a sensitive database is nbackupped, and the backups are well protected on the filesystem level.An average user can’t restore the database with nbackup then, because nbackup runs in the user process space.But that same user, if he knows name and location of the backup, or can guess them by analogy, might be able to get hold of the database by having fbsvcmgr
restore it to a public folder.After all, fbsvcmgr calls the Firebird server, which may have file-level access to the backup.Of course there are solutions to this, but it’s important to be aware of the risk.
The Services Manager can also be used locally;in that case the first argument becomes service_mgr
, without hostname.When used locally, AUTO ADMIN MAPPING
has the intended effect;this is still true if you prepend localhost:
or the name of the local machine.Local use of the Services Manager can be beneficial if you don’t have filesystem access to the database and/or backup files, but the Firebird server process does.If you do have sufficient rights, then it’s more practical to use nbackup itself, with its much shorter commands.
Specifying -nbk_no_triggers
or -nbk_direct
with -action_nrest
leads to an error message.Nbackup itself is more lenient here: it simply ignores the -T
and -D
parameters if they are used in the wrong context.
Instead of a database filename you may also use an alias.
Database path (or alias) length is limited to 255 characters.
An nbackup-based incremental backup scheme could look like this:
Each month a full backup (level 0) is made;
Each week a level-1;
A level-2 backup daily;
A level-3 backup hourly.
As long as all backups are preserved, you can restore the database to its state at any hour in the past.For each restore action, a maximum of four backup files is used.Of course, you schedule things in such a way that the bigger, time-consuming backups are made during off-peak hours.In this case the levels 0 and 1 could be made at weekends, and level 2 at night.
If you don’t want to keep everything for eternity, you can add a deletion schedule:
Level-3 backups are deleted after 8 days;
Level-2s after a month;
Level-1s after six months;
Full backups after two years, but the first one of each year is kept.
This is only an example of course.What’s useful in an individual case depends on the application, the size of the database, its activity, etc.
At this point you know everything you need in order to make and restore full and/or incremental backups with nbackup.You only need to read any further if you want to use backup tools of your own choice for your Firebird databases (see [nbackup-lock-unlock]), or if you want to override the default name or location of the delta file (see [nbackup-deltafile]).
If you have no craving for any of that: good luck in your work with nbackup!
If you prefer to use your own backup tools or just make a file copy, nbackup’s lock-unlock mode comes into view.“Locking” means here that the main database file is frozen temporarily, not that no changes can be made to the database.Just like in backup mode, mutations are directed to a temporary delta file;upon unlocking, the delta file is merged with the main file.
As a reminder: nbackup.exe
is located in the bin
subdirectory of your Firebird folder.Typical locations are e.g. C:\Program Files\Firebird\Firebird_3_0
or C:\Program Files\Firebird\Firebird_2_0\bin
(Windows) or /opt/firebird/bin
(Linux).There’s no GUI;you launch it from the command prompt or call it from within a batch file or application.
A typical session in which you make your own backup goes as follows:
Lock the database with the -L
(lock) switch:
nbackup [-U user -P password] -L database
Now copy/backup/zip the database file to your heart’s content, with your own choice of tools. A simple file copy is also possible.
Unlock the database with -N
(uNlock), or — since Firebird 3.0 — -UN
:
nbackup [-U user -P password] -N database
The last command will also cause any mutations — which have been written to the delta file — to be merged into the main file.
The backup you made contains the data as they were at the moment the database was locked, regardless how long the locked state has lasted, and regardless how long you may have waited before making the actual backup.
Comments:
Instead of a database filename you may also specify an alias.
The -U
and -P
parameters may be omitted if the envars ISC_USER
and ISC_PASSWORD
are set, if you are root on a Posix system, or if trusted authentication under Windows permits it.For a detailed description see the comments under Making full backups.
Starting with Firebird 2.5, instead of -P password
you may also use -FE filename
.
Both -L
and -N
(-UN
) make a regular connection to the database, so in Firebird 2.1 and above it may be wise to add the -T
(or -NODBTRIGGERS
) parameter (see Suppressing database triggers).
If you’re locking a raw-device database with Firebird 2.1 or above, the -S
option can be very helpful;see [nbackup-lock-unlock-rawdevices].
You can optionally add -Z
to have version information printed on the first line of the output.
Warning
|
What goes for backup/restore also applies to the lock/unlock switches: do not use them on multi-file databases.Until things have changed, don’t let nbackup loose on multi-file databases at all! |
A copy of a locked database is itself a locked database too, so you can’t just copy it back and start using it.Should your original database get lost or damaged and the self-made copy needs to be restored (or should you wish to install the copy on another machine), proceed like this:
Copy/restore/unzip the backed-up database file yourself with the necessary tools.
Now unlock the database, not with the -N
(or -UN
) switch, but with -F
(fixup):
nbackup -F database
Here too, you can optionally use an alias instead of a filename, and add -Z
for version info.Other options make no sense.
Why are there two unlock switches, -N
/-UN
and -F
?
-N
/-UN
first sees that any changes made since the locking by -L
are merged into the main database file.After that, the database goes back into normal read/write mode and the temporary file is deleted.
-F
only changes the state flag of the user-restored database to “normal”.
So you use:
-N
/-UN
after having made a copy/backup yourself (to reverse the -L
issued earlier);
-F
after having restored such a backup yourself.
Note
|
The term fixup is used because it doesn’t attempt to reintegrate the delta-file, but only makes the minimum changes necessary to make the database file usable again. |
Note
|
This section doesn’t contain any necessary knowledge, but provides some extra information which could deepen your understanding of the various switches. |
nbackup [parameter] -L
does the following:
Connect to the database;
Start a transaction;
Call ALTER DATABASE BEGIN BACKUP
(this statement has been discussed in the extra information on nbackup -B);
Commit the transaction;
Disconnect from the database.
nbackup [parameter] -N
follows the same steps, but with “… END BACKUP
” in step 3.
nbackup [parameter] -F
works as follows:
The restored database file is opened;
Within the file, the state flag is changed from locked (nbak_state_stalled
) to normal (nbak_state_normal
);
The file is closed again.
Note
|
nbackup |
As discussed in [nbackup-backups-rawdevices], problems can arise if a delta has to be created for a database located on a raw device.Therefore, in Firebird 2.1 and up, nbackup refuses to operate on raw-device databases unless an explicit location for the delta file has been set previously.For the procedure, see [nbackup-deltafile], a little further down.
There’s also another problem if you lock and copy a raw device: you don’t know the actual size of the database!The raw device may be 10 GB, but the database might only take up 200 MB of that space.To prevent having to copy the entire device just to be on the safe side — possibly wasting huge amounts of time and space — Firebird 2.1 has introduced a new parameter for nbackup: -S
.This parameter is only valid in combination with -L
and when it is present, nbackup writes the database size in pages to stdout
after locking the database.Because the size is given in pages, it has to be multiplied by the database page size in order to get the actual number of bytes to be copied.Or, if you use the dd
copy utility, you could specify the page size as (i)bs
and the output of nbackup -L -S
as count
.
Using Virtual Machines backup tools without preparing database for such type of backup can lead to the corrupted (i.e. useless) backup copy.
Firebird server intensively uses its own cache in RAM to speed up operations, and implements complex techniques to ensure database consistency at the every given moment.Virtual Machine backup tools are not aware about Firebird’s cache, and usually they do not consider database files as random-access files.
As a result, when the virtual machine backup is done, the database file inside it will have the state as after a hard reset of VM, and very often such copy is not consistent (i.e. corrupted).The chance of such problem is higher when many active users are changing the database, or if there is active sweep process.
Such inconsistent backups can occur in any virtualized environment, including public clouds.
In order to create good Firebird database backup with VM backup tool, it is necessary to lock database file with nbackup before the VM backup, and unlock after it.Usually VM backup tool allows executing custom pre- and post-backup scripts, where you can lock/unlock Firebird databases.
By default, the delta file lives in the same directory as the database itself.The file name is also the same, but with .delta
appended.This is usually not a problem, but sometimes it is desirable or even necessary to change the location, e.g. when the database is stored on a raw device.Nbackup itself has no provision for setting the location;this must be done through SQL.
Make a connection to the database with any client that allows you to enter your own SQL statements and give the command:
alter database add difference file 'path-and-filename'
The custom delta file specification is persistent in the database;it is stored in the system table RDB$FILES
.To revert to the default behaviour, issue the following statement:
alter database drop difference file
You can also specify a custom delta location while creating a new database:
create database 'path-and-dbname' difference file 'path-and-deltaname'
Note
|
|
The firebird database keeps a history of all nbackup activity in the system table RDB$BACKUP_HISTORY
.This information is used by nbackup itself for internal housekeeping, but can also be used to find out when the last backup was done, on which level and what the filename is.
For example, to see the last 5` backups you can use:
SELECT RDB$BACKUP_ID, RDB$TIMESTAMP, RDB$BACKUP_LEVEL, RDB$GUID,
RDB$SCN, RDB$FILE_NAME
FROM RDB$BACKUP_HISTORY
ORDER BY RDB$TIMESTAMP DESC
ROWS 5
The columns of RDB$BACKUP_HISTORY
are:
Column | Description |
---|---|
|
Primary key |
|
Time and date of backup |
|
Backup level |
|
GUID of the backup (used to check dependencies between files) |
|
Highest page marker in the backup |
|
Filename of the backup |
For an explanation of the field RDB$SCN
see the section [nbackup-background].
The contents of the table RDB$BACKUP_HISTORY
are not backed up and restored by gbak;see the section [nbackup-background] for details.
Nbackup performs a physical backup of the database pages by copying pages that have been modified since the last backup of the immediately preceding level.A level 0
backup copies all pages, while a level 1
copies only those pages that have been modified after the most recent level 0
.To be able to find the modified pages, Firebird uses a marker that is called the SCN (short for page scan).This number is incremented at each backup state change.For each backup with nbackup there are three state changes:
nbak_state_normal
(no backup) to nbak_state_stalled
(database writes to delta file)
nbak_state_stalled
to nbak_state_merge
(merging delta file back into database)
nbak_state_merge
to nbak_state_normal
(no backup)
Note
|
These three state changes occur even if the backup fails. |
The SCN of the database before the start of the backup is recorded together with the backup.The very first backup gets SCN 0
, the second 3
, etc.This number is independent of the level of the backup.The SCN is used to mark the pages of a database.So for example:
SCN | Explanation |
---|---|
|
Pages before any backup |
|
Pages written/updated into the delta file during the backup |
|
Pages written/updated during the merge of delta file into main backup |
|
Pages written/updated after ending first backup+merge |
When a level 1
backup is made, nbackup looks for the last level 0
backup and backs up all pages with an SCN higher than the SCN of that level 0
backup (and so on).
A backup and restore with gbak does not restore the content of the RDB$BACKUP_HISTORY
table, and it resets the SCN of all pages back to 0
.The reason for this is that gbak creates a logical backup instead of a physical backup.So a restore using gbak will rewrite the entire database (and can even change the page size).This renders previous backups with nbackup meaningless as a starting point for subsequent backups: you need to start with a fresh level 0
.
The exact file history is recorded in the firebird-documentation git repository; see https://github.com/FirebirdSQL/firebird-documentation
Revision History | |||
---|---|---|---|
0.1 |
21 Oct 2005 |
PV |
First edition. |
1.0 |
1 Dec 2006 |
PV |
|
1.1 |
5 May 2008 |
PV |
|
1.2 |
19 Sep 2011 |
PV |
|
|
|
|
|
|
|
|
|
1.3 |
12 Oct 2011 |
PV |
|
1.4 |
18 Sep 2014 |
MR |
|
1.5 |
27 Jun 2020 |
MR |
Conversion to AsciiDoc, minor copy-editing |
1.6 |
25 Jul 2020 |
AK |
Paragraph about VM backups, example with non-standard port, performance notice paragraph on incremental backup |
1.7 |
10 Oct 2022 |
MR |
|