I am doing the same as you except my database is backed up each time it's closed. But presumably you can just easily put the same code behind a command button as well. Here is the complete procedure (it's a bit long!!):
Private Sub Form_Close()
Dim Maindb As String
Dim MaindbName As String
Dim Backupdb As String
Dim BackupdbName As String
Dim LastBackup As Date
Dim LastUpdate As Date
Dim ConnectString As String
Dim updateSQL As String
Dim dbs As Database
Dim Rst As Recordset
Dim Choice As Integer
Dim Complete As Boolean
'Only run backup procedure if anything has changed
LastBackup = DLookup("LastBackUp", "tblLibSysData"

LastUpdate = DLookup("LastUpdated", "tblLibSysData"
If LastBackup < LastUpdate Then
'button to instigate backup of database
On Error GoTo ErrorHandler
'get path of Main DB and Backup DB
Set dbs = CurrentDb
Set Rst = dbs.OpenRecordset("tblLibSysData", dbOpenDynaset)
With Rst
MaindbName = !MainDataName
Maindb = !MainDataPath & "\" & MaindbName
BackupdbName = !BackupName
Backupdb = !BackupPath & "\" & BackupdbName
.Close
End With
Set Rst = Nothing
Set dbs = Nothing
'build connect property for recreating links
ConnectString = ";Database=" & Maindb
'set up progress meter to show completion of backup operation
Dim BackupMeter
Dim MeterFull As Integer
Dim MeterCount As Integer
MeterFull = 78
BackupMeter = SysCmd(acSysCmdInitMeter, "Performing Backup Operation", MeterFull)
'mark as complete
Complete = True
'start copying tables to Backup and update progress meter
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblLibNew", _
"tblLibNew"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblLibServer", _
"tblLibServer"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblLibData", _
"tblLibData"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblLibEft", _
"tblLibEft"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblLibOther", _
"tblLibOther"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblLibRestore", _
"tblLibRestore"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblLibSave", _
"tblLibSave"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblAuthName", _
"tblAuthName"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblIcbsVersion", _
"tblIcbsVersion"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblLibSysData", _
"tblLibSysData"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblMediaPeriod", _
"tblMediaPeriod"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblMediaType", _
"tblMediaType"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblOsRelease", _
"tblOsRelease"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblOsVersion", _
"tblOsVersion"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblProjectName", _
"tblProjectName"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblSecLib", _
"tblSecLib"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblSystemName", _
"tblSystemName"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblPortNoFSVUKDV1", _
"tblPortNoFSVUKDV1"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblPortNoFSVUKAS2", _
"tblPortNoFSVUKAS2"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblPortNoFSVUKAS3", _
"tblPortNoFSVUKAS3"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblPortNoFSVUKAS4", _
"tblPortNoFSVUKAS4"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblPortNoFSVUKAS5", _
"tblPortNoFSVUKAS5"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblPortNoFSVUKAS6", _
"tblPortNoFSVUKAS6"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblAppLib", _
"tblAppLib"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblDbType", _
"tblDbType"
'update progress meter
MeterCount = MeterCount + 3
BackupMeter = SysCmd(acSysCmdUpdateMeter, MeterCount)
DoCmd.TransferDatabase acExport, "Microsoft Access", _
Backupdb, acTable, "tblSysInfo", _
"tblSysInfo"
'confirm completion of backup
If Complete = True Then 'only if backup not exited by user
'update date of last backup
Set dbs = CurrentDb
Set Rst = dbs.OpenRecordset("tblLibSysData", dbOpenDynaset)
Rst.Edit
Rst!LastBackup = Date
Rst.Update
Rst.Close
Set Rst = Nothing
Set dbs = Nothing
End If
Exit_BackupButton:
'remove progress meter
BackupMeter = SysCmd(acSysCmdRemoveMeter)
End If
Exit Sub
ErrorHandler:
'Dim Choice
Choice = 0
'determine error number
Select Case Err.Number
Case 3044 'invalid directory path entry
MsgBox "Backup operation has been unsuccessful. The directory path entered was not valid." & _
" Establish the correct path for the backup save and retry.", vbInformation, "Backup Failure"
'GoTo Exit_BackupButton 'exit routine
Exit Sub
Case 70 'unable to access time data tables
MsgBox "Backup operation has been unsuccessful. The data storage database is locked and " & _
"cannot be copied. Remove the lock and retry the backup operation", vbInformation, "Backupfailure"
Complete = False
Resume Next 'rebuild all linked tables
'report failure of backup on ocurrence of any other error
Case Else
Dim ErrorText As String
MsgBox Err.Description, _
vbExclamation, "Backup Failure"
Complete = False
Resume Next
Exit Sub
End Select
End Sub