Repository navigation
Technical Plugin Backup
Backs up database/media data and exposes synchronization, retention and restore operations.
Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.
- Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
- Code ownership: independently versioned plugin repository.
- Reported version:
4.0. - Source revision:
e87f2c9ff911717a30ea1c3b8cd96f39cc14f053. - Entry class file: Backup.php.
Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.
Database backup, video backup, remote synchronization and restoration are independent operations. Inspect configured paths and current implementations before running them. Verify off-host recovery and restore behavior; a completed file transfer is not a restore test. See Technical-Maintenance for the core mysqlDump.php entry point.
No literal dependency declaration was extracted. This does not prove the plugin is standalone.
| Override | Implementation |
|---|---|
getTags() |
Backup.php:18 |
getDataObjectAdvanced() |
Backup.php:54 |
getPluginMenu() |
Backup.php:118 |
getHTMLMenuRight() |
Backup.php:432 |
executeEveryDay() |
Backup.php:457 |
These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.
| Field | Literal default or expression type | Literal source label/help | Evidence |
|---|---|---|---|
directory |
Computed/structured; inspect source | Backup Directory: The directory where backups will be stored locally on your server. | source |
authKey |
Private setting; value omitted | Authorization Key: A unique authorization key for executing backup processes. | source |
displayTopBackupButton |
false |
Display Top Backup Button: Enable or disable the Backup button on the top menu bar. |
source |
backupAllSufix |
"" |
Backup All Suffix: Specify a suffix for the backup files when using the Backup All option. |
source |
enableFtpSync |
false |
Enable FTP Sync: Enable or disable the feature to sync backups with an FTP server. | source |
ftpServer |
'' |
FTP Server Address: The address of the FTP server where backups should be stored. | source |
ftpPort |
21 |
FTP Server Port: The port number to use for the FTP server connection. Default is 21. | source |
ftpUsername |
'' |
FTP Username: The username to login to the FTP server. | source |
ftpPassword |
Private setting; value omitted | FTP Password: The password to login to the FTP server. | source |
ftpDirectory |
'' |
FTP Directory: The directory on the FTP server where backups should be stored. | source |
ftpTransferMode |
Computed/structured; inspect source | FTP Transfer Mode: Choose the FTP transfer mode: Default, Passive, or Active. | source |
deleteFilesOlderThan |
30 |
Delete Files Older Than (Days): Specify the number of days to retain backup files on the FTP server. Files older than this will be deleted. | source |
deleteLocalFilesAfterCopyOnFTP |
true |
Delete Local Files After FTP Copy: Enable or disable the automatic deletion of local backup files after they are successfully copied to the FTP server. | source |
This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.
| File | Source role | Direct request fields observed |
|---|---|---|
| Backup.php | plugin entry class | — |
| backupDir/index.php | PHP page/include/worker; inspect caller | — |
| backupEditor.php | PHP page/include/worker; inspect caller | — |
| backupEditor_body.php | PHP page/include/worker; inspect caller | — |
| backupEditor_head.php | PHP page/include/worker; inspect caller | — |
| deleteBackup.json.php | JSON entry point; inspect caller and guard | file |
| deleteRemoteBackup.json.php | JSON entry point; inspect caller and guard |
dateFolder, fileName
|
| execBackup.json.php | JSON entry point; inspect caller and guard | backupType |
| execBackupInBackground.json.php | JSON entry point; inspect caller and guard | backupType |
| execRestoreInBackground.json.php | JSON entry point; inspect caller and guard | file |
| listBackupFiles.json.php | JSON entry point; inspect caller and guard | — |
| listRemoteBackupFiles.json.php | JSON entry point; inspect caller and guard | — |
| menuRight.php | PHP page/include/worker; inspect caller | — |
| restoreBackup.json.php | JSON entry point; inspect caller and guard | file |
| status.json.php | JSON entry point; inspect caller and guard | — |
| syncWithFTP.json.php | JSON entry point; inspect caller and guard | file |
| testFTPCredentials.php | PHP page/include/worker; inspect caller | debug |
| upload.php | PHP page/include/worker; inspect caller | upl |
No CREATE TABLE names were extracted from available plugin SQL. The plugin can still use core tables, PHP-created schema or another component's data. Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.
Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.
| Function or method | Source |
|---|---|
getTags() |
18 |
getPluginVersion() |
26 |
getDescription() |
31 |
getName() |
44 |
getUUID() |
49 |
getDataObjectAdvanced() |
54 |
getEmptyDataObject() |
66 |
getPluginMenu() |
118 |
getBackupLockFilePath() |
124 |
syncWithFTP($localFile) |
130 |
backupDatabase($backupAll = false) |
255 |
backupVideos($backupAll = false) |
312 |
restoreDatabase($backupFile) |
371 |
restoreVideos($backupFile) |
406 |
getHTMLMenuRight() |
432 |
getStatus() |
441 |
executeEveryDay() |
457 |
deleteOldBackupsFromFTP() |
463 |
deleteFtpFolder($ftpConnection, $folder) |
535 |
getDatabaseSize() |
558 |
nlist($ftp, $baseDir) |
572 |
listFilesByDateFolders() |
585 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
| Named symbol | Source |
|---|---|
addMessage(&$responseObj, $message, $isDebug = false) |
13 |
- Check the installed/enabled version and the dependencies/settings above.
- Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
- Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
- Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.
Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides