Backups on remote machines (Firebird 2.5+)
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 variablesISC_USER
andISC_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 userPAUL
on one machine is not necessarily the same person as userPAUL
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 prependlocalhost:
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.