diff --git a/fundtracker/How to retrieve a back of this project without SQL b/fundtracker/How to retrieve a back of this project without SQL new file mode 100644 index 0000000..5d28a3d --- /dev/null +++ b/fundtracker/How to retrieve a back of this project without SQL @@ -0,0 +1,21 @@ +On NAS16 + +Run this: + +sudo tar -czf /tmp/fundtracker-current-$(date +%Y%m%d-%H%M%S).tar.gz -C /Kingdezignsnas16 fundtracker + +Then: + +sudo ls -lh /tmp/fundtracker-current-*.tar.gz + +That gives us a snapshot without changing the application. + +Then from your Linux desktop + +From your desktop terminal: + +scp rufusking@192.168.150.40:/tmp/fundtracker-current-*.tar.gz ~/Downloads/ + +If the wildcard doesn't work properly with scp, that's fine—we'll use the exact filename returned by the ls command. + +Don't delete the archive from NAS16 yet. diff --git a/fundtracker/backup.log b/fundtracker/backup.log new file mode 100644 index 0000000..fa76b0a --- /dev/null +++ b/fundtracker/backup.log @@ -0,0 +1,654 @@ + +------------------------------------------------------------ +[2026-08-20 10:31:54] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 10:31:54] NAS16 storage is accessible. +[2026-08-20 10:31:54] FundTracker project directory found. +[2026-08-20 10:31:54] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 10:31:54] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 10:31:54] PostgreSQL dump completed successfully. +[2026-08-20 10:31:54] Database dump compressed. +[2026-08-20 10:31:54] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 10:31:54] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 10:31:54] FundTracker project files copied successfully. +[2026-08-20 10:31:54] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 10:31:54] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:31:54] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 10:31:54] Archive created successfully. +[2026-08-20 10:31:54] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-31-54.tar.gz +[2026-08-20 10:31:54] Size: 512 + +------------------------------------------------------------ +[2026-08-20 10:31:54] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 10:31:54] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 10:31:54] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 10:31:54] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 10:31:54] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:31:54] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 10:31:54] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-31-54.tar.gz +[2026-08-20 10:31:54] Size: 512 +[2026-08-20 10:31:54] Status: SUCCESS +[2026-08-20 10:31:54] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 10:31:54] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 10:33:43] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 10:33:43] NAS16 storage is accessible. +[2026-08-20 10:33:43] FundTracker project directory found. +[2026-08-20 10:33:43] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 10:33:43] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 10:33:43] PostgreSQL dump completed successfully. +[2026-08-20 10:33:43] Database dump compressed. +[2026-08-20 10:33:43] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 10:33:43] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 10:33:43] FundTracker project files copied successfully. +[2026-08-20 10:33:43] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 10:33:43] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:33:43] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 10:33:43] Archive created successfully. +[2026-08-20 10:33:43] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-33-43.tar.gz +[2026-08-20 10:33:43] Size: 512 + +------------------------------------------------------------ +[2026-08-20 10:33:43] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 10:33:43] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 10:33:43] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 10:33:43] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 10:33:43] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:33:43] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 10:33:43] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-33-43.tar.gz +[2026-08-20 10:33:43] Size: 512 +[2026-08-20 10:33:43] Status: SUCCESS +[2026-08-20 10:33:43] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 10:33:43] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 10:34:17] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 10:34:17] NAS16 storage is accessible. +[2026-08-20 10:34:17] FundTracker project directory found. +[2026-08-20 10:34:17] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 10:34:17] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 10:34:17] PostgreSQL dump completed successfully. +[2026-08-20 10:34:17] Database dump compressed. +[2026-08-20 10:34:17] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 10:34:17] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 10:34:17] FundTracker project files copied successfully. +[2026-08-20 10:34:17] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 10:34:17] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:34:17] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 10:34:17] Archive created successfully. +[2026-08-20 10:34:17] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-34-17.tar.gz +[2026-08-20 10:34:17] Size: 512 + +------------------------------------------------------------ +[2026-08-20 10:34:17] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 10:34:17] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 10:34:17] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 10:34:17] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 10:34:17] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:34:17] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 10:34:17] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-34-17.tar.gz +[2026-08-20 10:34:17] Size: 512 +[2026-08-20 10:34:17] Status: SUCCESS +[2026-08-20 10:34:18] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 10:34:18] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 10:40:51] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 10:40:51] NAS16 storage is accessible. +[2026-08-20 10:40:51] FundTracker project directory found. +[2026-08-20 10:40:51] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 10:40:51] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 10:40:51] PostgreSQL dump completed successfully. +[2026-08-20 10:40:52] Database dump compressed. +[2026-08-20 10:40:52] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 10:40:52] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 10:40:52] FundTracker project files copied successfully. +[2026-08-20 10:40:52] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 10:40:52] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:40:52] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 10:40:52] Archive created successfully. +[2026-08-20 10:40:52] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-40-51.tar.gz +[2026-08-20 10:40:52] Size: 512 + +------------------------------------------------------------ +[2026-08-20 10:40:52] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 10:40:52] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 10:40:52] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 10:40:52] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 10:40:52] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:40:52] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 10:40:52] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-40-51.tar.gz +[2026-08-20 10:40:52] Size: 512 +[2026-08-20 10:40:52] Status: SUCCESS +[2026-08-20 10:40:52] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 10:40:52] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 10:42:14] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 10:42:14] NAS16 storage is accessible. +[2026-08-20 10:42:14] FundTracker project directory found. +[2026-08-20 10:42:14] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 10:42:14] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 10:42:15] PostgreSQL dump completed successfully. +[2026-08-20 10:42:15] Database dump compressed. +[2026-08-20 10:42:15] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 10:42:15] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 10:42:15] FundTracker project files copied successfully. +[2026-08-20 10:42:15] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 10:42:15] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:42:15] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 10:42:15] Archive created successfully. +[2026-08-20 10:42:15] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-42-14.tar.gz +[2026-08-20 10:42:15] Size: 512 + +------------------------------------------------------------ +[2026-08-20 10:42:15] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 10:42:15] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 10:42:15] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 10:42:15] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 10:42:15] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:42:15] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 10:42:15] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-42-14.tar.gz +[2026-08-20 10:42:15] Size: 512 +[2026-08-20 10:42:15] Status: SUCCESS +[2026-08-20 10:42:15] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 10:42:15] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 10:53:55] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 10:53:55] NAS16 storage is accessible. +[2026-08-20 10:53:55] FundTracker project directory found. +[2026-08-20 10:53:55] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 10:53:55] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 10:53:55] PostgreSQL dump completed successfully. +[2026-08-20 10:53:55] Database dump compressed. +[2026-08-20 10:53:55] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 10:53:55] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 10:53:55] FundTracker project files copied successfully. +[2026-08-20 10:53:55] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 10:53:55] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:53:55] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 10:53:56] Archive created successfully. +[2026-08-20 10:53:56] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-53-55.tar.gz +[2026-08-20 10:53:56] Size: 512 + +------------------------------------------------------------ +[2026-08-20 10:53:56] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 10:53:56] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 10:53:56] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 10:53:56] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 10:53:56] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:53:56] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 10:53:56] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-53-55.tar.gz +[2026-08-20 10:53:56] Size: 512 +[2026-08-20 10:53:56] Status: SUCCESS +[2026-08-20 10:53:56] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 10:53:56] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 10:55:43] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 10:55:43] NAS16 storage is accessible. +[2026-08-20 10:55:43] FundTracker project directory found. +[2026-08-20 10:55:43] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 10:55:43] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 10:55:43] PostgreSQL dump completed successfully. +[2026-08-20 10:55:44] Database dump compressed. +[2026-08-20 10:55:44] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 10:55:44] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 10:55:44] FundTracker project files copied successfully. +[2026-08-20 10:55:44] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 10:55:44] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:55:44] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 10:55:44] Archive created successfully. +[2026-08-20 10:55:44] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-55-43.tar.gz +[2026-08-20 10:55:44] Size: 512 + +------------------------------------------------------------ +[2026-08-20 10:55:44] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 10:55:44] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 10:55:44] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 10:55:44] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 10:55:44] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:55:44] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 10:55:44] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-55-43.tar.gz +[2026-08-20 10:55:44] Size: 512 +[2026-08-20 10:55:44] Status: SUCCESS +[2026-08-20 10:55:44] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 10:55:44] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 10:56:53] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 10:56:53] NAS16 storage is accessible. +[2026-08-20 10:56:53] FundTracker project directory found. +[2026-08-20 10:56:53] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 10:56:53] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 10:56:53] PostgreSQL dump completed successfully. +[2026-08-20 10:56:53] Database dump compressed. +[2026-08-20 10:56:53] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 10:56:53] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 10:56:53] FundTracker project files copied successfully. +[2026-08-20 10:56:53] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 10:56:53] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:56:53] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 10:56:54] Archive created successfully. +[2026-08-20 10:56:54] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-56-53.tar.gz +[2026-08-20 10:56:54] Size: 512 + +------------------------------------------------------------ +[2026-08-20 10:56:54] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 10:56:54] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 10:56:54] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 10:56:54] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 10:56:54] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 10:56:54] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 10:56:54] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_10-56-53.tar.gz +[2026-08-20 10:56:54] Size: 512 +[2026-08-20 10:56:54] Status: SUCCESS +[2026-08-20 10:56:54] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 10:56:54] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 11:04:11] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 11:04:11] NAS16 storage is accessible. +[2026-08-20 11:04:11] FundTracker project directory found. +[2026-08-20 11:04:11] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 11:04:11] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 11:04:11] PostgreSQL dump completed successfully. +[2026-08-20 11:04:11] Database dump compressed. +[2026-08-20 11:04:11] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 11:04:11] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 11:04:11] FundTracker project files copied successfully. +[2026-08-20 11:04:11] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 11:04:11] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 11:04:11] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 11:04:11] Archive created successfully. +[2026-08-20 11:04:11] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_11-04-11.tar.gz +[2026-08-20 11:04:11] Size: 512 + +------------------------------------------------------------ +[2026-08-20 11:04:11] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 11:04:11] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 11:04:11] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 11:04:11] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 11:04:11] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 11:04:11] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 11:04:11] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_11-04-11.tar.gz +[2026-08-20 11:04:11] Size: 512 +[2026-08-20 11:04:11] Status: SUCCESS +[2026-08-20 11:04:11] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 11:04:11] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 16:20:13] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 16:20:13] NAS16 storage is accessible. +[2026-08-20 16:20:13] FundTracker project directory found. +[2026-08-20 16:20:13] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 16:20:13] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 16:20:13] PostgreSQL dump completed successfully. +[2026-08-20 16:20:13] Database dump compressed. +[2026-08-20 16:20:13] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 16:20:13] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 16:20:13] FundTracker project files copied successfully. +[2026-08-20 16:20:14] Files copied: 77 + +------------------------------------------------------------ +[2026-08-20 16:20:14] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 16:20:14] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 16:20:14] Archive created successfully. +[2026-08-20 16:20:14] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_16-20-13.tar.gz +[2026-08-20 16:20:14] Size: 512 + +------------------------------------------------------------ +[2026-08-20 16:20:14] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 16:20:14] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 16:20:14] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 16:20:14] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 16:20:14] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 16:20:14] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 16:20:14] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_16-20-13.tar.gz +[2026-08-20 16:20:14] Size: 512 +[2026-08-20 16:20:14] Status: SUCCESS +[2026-08-20 16:20:14] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 16:20:14] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 18:10:44] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 18:10:44] NAS16 storage is accessible. +[2026-08-20 18:10:44] FundTracker project directory found. +[2026-08-20 18:10:44] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 18:10:44] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 18:10:44] PostgreSQL dump completed successfully. +[2026-08-20 18:10:44] Database dump compressed. +[2026-08-20 18:10:44] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 18:10:44] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 18:10:44] FundTracker project files copied successfully. +[2026-08-20 18:10:44] Files copied: 80 + +------------------------------------------------------------ +[2026-08-20 18:10:44] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 18:10:44] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 18:10:44] Archive created successfully. +[2026-08-20 18:10:44] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_18-10-44.tar.gz +[2026-08-20 18:10:44] Size: 512 + +------------------------------------------------------------ +[2026-08-20 18:10:44] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 18:10:44] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 18:10:44] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 18:10:44] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 18:10:44] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 18:10:44] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 18:10:44] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-backup-2026-08-20_18-10-44.tar.gz +[2026-08-20 18:10:44] Size: 512 +[2026-08-20 18:10:44] Status: SUCCESS +[2026-08-20 18:10:44] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 18:10:44] ===== FundTracker backup script finished ===== + +------------------------------------------------------------ +[2026-08-20 18:39:33] FundTracker Backup Starting +------------------------------------------------------------ +[2026-08-20 18:39:33] NAS16 storage is accessible. +[2026-08-20 18:39:33] FundTracker project directory found. +[2026-08-20 18:39:33] PostgreSQL container is running: fundtracker_db + +------------------------------------------------------------ +[2026-08-20 18:39:33] Retrieving site version from database +------------------------------------------------------------ +[2026-08-20 18:39:33] Deployed site version detected: v1.6.0 + +------------------------------------------------------------ +[2026-08-20 18:39:33] Backing up FundTracker PostgreSQL database +------------------------------------------------------------ +[2026-08-20 18:39:33] PostgreSQL dump completed successfully. +[2026-08-20 18:39:33] Database dump compressed. +[2026-08-20 18:39:33] Database backup size: 1.1M + +------------------------------------------------------------ +[2026-08-20 18:39:33] Backing up FundTracker project files +------------------------------------------------------------ +[2026-08-20 18:39:33] FundTracker project files copied successfully. +[2026-08-20 18:39:33] Files copied: 80 + +------------------------------------------------------------ +[2026-08-20 18:39:33] Creating backup manifest +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 18:39:33] Creating compressed backup archive +------------------------------------------------------------ +[2026-08-20 18:39:33] Archive created successfully. +[2026-08-20 18:39:33] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-v1.6.0-backup-2026-08-20_18-39-33.tar.gz +[2026-08-20 18:39:33] Size: 512 + +------------------------------------------------------------ +[2026-08-20 18:39:33] Verifying backup archive +------------------------------------------------------------ +[2026-08-20 18:39:34] Archive verification successful. + +------------------------------------------------------------ +[2026-08-20 18:39:34] Cleaning up temporary files +------------------------------------------------------------ +[2026-08-20 18:39:34] Temporary backup files removed. + +------------------------------------------------------------ +[2026-08-20 18:39:34] Rotating old FundTracker backups +------------------------------------------------------------ + +------------------------------------------------------------ +[2026-08-20 18:39:34] FundTracker Backup Complete +------------------------------------------------------------ +[2026-08-20 18:39:34] Site Version: 1.6.0 +[2026-08-20 18:39:34] Archive: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker/fundtracker-v1.6.0-backup-2026-08-20_18-39-33.tar.gz +[2026-08-20 18:39:34] Size: 512 +[2026-08-20 18:39:34] Status: SUCCESS +[2026-08-20 18:39:34] Email sent to rufus.king@kingdezigns.com — Overall status: SUCCESS +[2026-08-20 18:39:34] ===== FundTracker backup script finished ===== diff --git a/fundtracker/fundtracker-backup-2026-08-20_10-56-53.tar.gz b/fundtracker/fundtracker-backup-2026-08-20_10-56-53.tar.gz new file mode 100644 index 0000000..def32d1 Binary files /dev/null and b/fundtracker/fundtracker-backup-2026-08-20_10-56-53.tar.gz differ diff --git a/fundtracker/fundtracker-backup-2026-08-20_11-04-11.tar.gz b/fundtracker/fundtracker-backup-2026-08-20_11-04-11.tar.gz new file mode 100644 index 0000000..bd0899e Binary files /dev/null and b/fundtracker/fundtracker-backup-2026-08-20_11-04-11.tar.gz differ diff --git a/fundtracker/fundtracker-backup-2026-08-20_16-20-13.tar.gz b/fundtracker/fundtracker-backup-2026-08-20_16-20-13.tar.gz new file mode 100644 index 0000000..051b6d7 Binary files /dev/null and b/fundtracker/fundtracker-backup-2026-08-20_16-20-13.tar.gz differ diff --git a/fundtracker/fundtracker-backup-2026-08-20_18-10-44.tar.gz b/fundtracker/fundtracker-backup-2026-08-20_18-10-44.tar.gz new file mode 100644 index 0000000..a4336f4 Binary files /dev/null and b/fundtracker/fundtracker-backup-2026-08-20_18-10-44.tar.gz differ diff --git a/fundtracker/fundtracker-backup.sh b/fundtracker/fundtracker-backup.sh new file mode 100755 index 0000000..316306f --- /dev/null +++ b/fundtracker/fundtracker-backup.sh @@ -0,0 +1,973 @@ +#!/bin/bash +# ============================================================================= +# FundTracker Project Backup +# ============================================================================= +# Backs up: +# 1. Complete FundTracker project/site files +# 2. FundTracker PostgreSQL database +# +# Creates ONE compressed archive containing both. +# +# Project files: +# /Kingdezignsnas16/fundtracker +# +# PostgreSQL: +# Container: fundtracker_db +# Database: fundtracker +# User: fundtracker +# +# Backup destination: +# /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker +# +# Retention: +# Keeps the 10 most recent backups. +# +# Email: +# Uses OMV Postfix / Gmail relay via sendmail. +# +# Designed to run as ROOT from: +# OMV -> System -> Scheduled Jobs +# +# Backup destination: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker +# Script location: /usr/scripts/fundtracker-backup.sh +# ============================================================================= + +set -uo pipefail + +# ----------------------------------------------------------------------------- +# CONFIGURATION +# ----------------------------------------------------------------------------- + +HOSTNAME_LABEL=$(hostname -s 2>/dev/null || echo "NAS16") + +REPORT_TO="rufus.king@kingdezigns.com" +REPORT_FROM="backup-monitor@nas16.local" + +# FundTracker project files +PROJECT_DIR="/Kingdezignsnas16/fundtracker" + +# PostgreSQL container +DB_CONTAINER="fundtracker_db" +DB_NAME="fundtracker" +DB_USER="fundtracker" + +# Backup destination +BACKUP_ROOT="/export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker" + +# Temporary working directory +TMP_BASE="/tmp/fundtracker-backup" + +# Keep this many completed backups +RETAIN_COUNT=10 + +# Date/time +DATE=$(date +%Y-%m-%d) +TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S) +REPORT_TIME=$(date "+%Y-%m-%d %H:%M:%S") + +ARCHIVE_NAME="fundtracker-backup-${TIMESTAMP}.tar.gz" + +TMP_DIR="${TMP_BASE}/fundtracker-${TIMESTAMP}" + +LOG_FILE="${BACKUP_ROOT}/backup.log" + +# ----------------------------------------------------------------------------- +# STATUS TRACKING +# ----------------------------------------------------------------------------- + +OVERALL_STATUS="SUCCESS" +SECTION_ROWS_HTML="" +WARNING_COUNT=0 +ERROR_COUNT=0 + +add_section_row() { + + local section="$1" + local status="$2" + local detail="$3" + + case "$status" in + + OK) + BADGE="✓ OK" + ;; + + WARNING) + BADGE="⚠ WARNING" + WARNING_COUNT=$((WARNING_COUNT + 1)) + + [[ "$OVERALL_STATUS" == "SUCCESS" ]] && + OVERALL_STATUS="WARNING" + ;; + + ERROR) + BADGE="✗ ERROR" + ERROR_COUNT=$((ERROR_COUNT + 1)) + OVERALL_STATUS="FAILED" + ;; + + SKIPPED) + BADGE="— SKIPPED" + ;; + + esac + + SECTION_ROWS_HTML+=" + + $section + $BADGE + $detail + " +} + +# ----------------------------------------------------------------------------- +# LOGGING +# ----------------------------------------------------------------------------- + +log() { + echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" +} + +log_section() { + + echo "" | tee -a "$LOG_FILE" + echo "------------------------------------------------------------" | tee -a "$LOG_FILE" + log "$1" + echo "------------------------------------------------------------" | tee -a "$LOG_FILE" +} + +# ----------------------------------------------------------------------------- +# INITIALIZE +# ----------------------------------------------------------------------------- + +mkdir -p "$BACKUP_ROOT" + +log_section "FundTracker Backup Starting" + +ARCHIVE_SIZE="N/A" +BACKUP_COUNT=0 +FINAL_ARCHIVE="${BACKUP_ROOT}/${ARCHIVE_NAME}" + +# ----------------------------------------------------------------------------- +# PRE-FLIGHT CHECK 1 — NAS16 STORAGE +# ----------------------------------------------------------------------------- + +if [ ! -d "/export/kingdezignsnas-16" ]; then + + log "ERROR: /export/kingdezignsnas-16 is not mounted or accessible." + + add_section_row \ + "NAS16 Storage" \ + "ERROR" \ + "/export/kingdezignsnas-16 is not accessible" + +else + + log "NAS16 storage is accessible." + + add_section_row \ + "NAS16 Storage" \ + "OK" \ + "/export/kingdezignsnas-16 is accessible" + +fi + +# ----------------------------------------------------------------------------- +# PRE-FLIGHT CHECK 2 — FUNDTRACKER PROJECT +# ----------------------------------------------------------------------------- + +if [ ! -d "$PROJECT_DIR" ]; then + + log "ERROR: FundTracker project directory not found:" + log "$PROJECT_DIR" + + add_section_row \ + "FundTracker Files" \ + "ERROR" \ + "$PROJECT_DIR does not exist" + +else + + log "FundTracker project directory found." + + add_section_row \ + "FundTracker Files" \ + "OK" \ + "$PROJECT_DIR is accessible" + +fi + +# ----------------------------------------------------------------------------- +# PRE-FLIGHT CHECK 3 — DOCKER +# ----------------------------------------------------------------------------- + +if ! command -v docker >/dev/null 2>&1; then + + log "ERROR: Docker command not found." + + add_section_row \ + "Docker" \ + "ERROR" \ + "Docker command is not available" + +else + + add_section_row \ + "Docker" \ + "OK" \ + "Docker command available" + +fi + +# ----------------------------------------------------------------------------- +# PRE-FLIGHT CHECK 4 — DATABASE CONTAINER +# ----------------------------------------------------------------------------- + +if docker ps --format '{{.Names}}' 2>/dev/null | + grep -qx "$DB_CONTAINER"; then + + log "PostgreSQL container is running: $DB_CONTAINER" + + add_section_row \ + "PostgreSQL Container" \ + "OK" \ + "$DB_CONTAINER is running" + +else + + log "ERROR: PostgreSQL container $DB_CONTAINER is not running." + + add_section_row \ + "PostgreSQL Container" \ + "ERROR" \ + "$DB_CONTAINER is not running" + +fi + +# ----------------------------------------------------------------------------- +# STOP HERE IF PRE-FLIGHT FAILED +# ----------------------------------------------------------------------------- + +if [ "$OVERALL_STATUS" = "FAILED" ]; then + + log "Pre-flight checks failed. Backup will not proceed." + +else + + # Create temporary working directory + mkdir -p "$TMP_DIR" + + # ========================================================================= + # SECTION 1 — DATABASE BACKUP + # ========================================================================= + + log_section "Backing up FundTracker PostgreSQL database" + + DB_DIR="${TMP_DIR}/database" + + mkdir -p "$DB_DIR" + + DB_DUMP="${DB_DIR}/fundtracker.sql" + + # pg_dump runs inside the PostgreSQL container. + # + # This is the same method documented by the FundTracker project itself. + # + # No database password is stored in this backup script. + + if docker exec "$DB_CONTAINER" \ + pg_dump \ + -U "$DB_USER" \ + "$DB_NAME" \ + > "$DB_DUMP" 2>>"$LOG_FILE"; then + + log "PostgreSQL dump completed successfully." + + # Compress the SQL dump + if gzip "$DB_DUMP"; then + + DB_SIZE=$(du -sh "${DB_DUMP}.gz" | cut -f1) + + log "Database dump compressed." + log "Database backup size: $DB_SIZE" + + add_section_row \ + "PostgreSQL Database" \ + "OK" \ + "${DB_NAME} dumped and compressed · ${DB_SIZE}" + + else + + log "ERROR: Could not compress PostgreSQL dump." + + add_section_row \ + "PostgreSQL Database" \ + "ERROR" \ + "pg_dump succeeded but gzip failed" + + fi + + else + + log "ERROR: PostgreSQL pg_dump failed." + + rm -f "$DB_DUMP" + + add_section_row \ + "PostgreSQL Database" \ + "ERROR" \ + "pg_dump failed for database ${DB_NAME}" + + fi + + # ========================================================================= + # SECTION 2 — SITE / PROJECT FILES + # ========================================================================= + + log_section "Backing up FundTracker project files" + + SITE_DIR="${TMP_DIR}/fundtracker" + + mkdir -p "$SITE_DIR" + + if rsync -a "$PROJECT_DIR/" "$SITE_DIR/" 2>&1 | + tee -a "$LOG_FILE"; then + + FILE_COUNT=$(find "$SITE_DIR" -type f 2>/dev/null | wc -l) + + log "FundTracker project files copied successfully." + log "Files copied: $FILE_COUNT" + + add_section_row \ + "FundTracker Project Files" \ + "OK" \ + "${FILE_COUNT} file(s) backed up" + + else + + log "ERROR: rsync failed while backing up FundTracker files." + + add_section_row \ + "FundTracker Project Files" \ + "ERROR" \ + "File backup failed" + + fi + + # ========================================================================= + # SECTION 3 — MANIFEST + # ========================================================================= + + log_section "Creating backup manifest" + + MANIFEST="${TMP_DIR}/MANIFEST.txt" + + cat > "$MANIFEST" <>"$LOG_FILE"; then + + ARCHIVE_SIZE=$(du -sh "$FINAL_ARCHIVE" | cut -f1) + + log "Archive created successfully." + log "Archive: $FINAL_ARCHIVE" + log "Size: $ARCHIVE_SIZE" + + add_section_row \ + "Archive Creation" \ + "OK" \ + "${ARCHIVE_NAME} · ${ARCHIVE_SIZE}" + + else + + log "ERROR: tar failed while creating archive." + + add_section_row \ + "Archive Creation" \ + "ERROR" \ + "tar failed — archive was not created" + + fi + + fi + + # ========================================================================= + # SECTION 5 — VERIFY ARCHIVE + # ========================================================================= + + if [ -f "$FINAL_ARCHIVE" ]; then + + log_section "Verifying backup archive" + + if tar -tzf "$FINAL_ARCHIVE" >/dev/null 2>&1; then + + log "Archive verification successful." + + add_section_row \ + "Archive Verification" \ + "OK" \ + "Archive can be opened and read successfully" + + else + + log "ERROR: Archive verification failed." + + add_section_row \ + "Archive Verification" \ + "ERROR" \ + "tar could not read the completed archive" + + fi + + else + + log "ERROR: Final backup archive does not exist." + + add_section_row \ + "Archive Verification" \ + "ERROR" \ + "Final archive was not created" + + fi + + # ========================================================================= + # SECTION 6 — CLEANUP + # ========================================================================= + + log_section "Cleaning up temporary files" + + if rm -rf "$TMP_DIR"; then + + log "Temporary backup files removed." + + add_section_row \ + "Temporary File Cleanup" \ + "OK" \ + "Temporary files removed" + + else + + log "WARNING: Could not completely remove temporary directory." + + add_section_row \ + "Temporary File Cleanup" \ + "WARNING" \ + "Temporary directory could not be completely removed" + + fi + + # ========================================================================= + # SECTION 7 — ROTATE OLD BACKUPS + # ========================================================================= + + log_section "Rotating old FundTracker backups" + + BACKUP_LIST=$(ls -1t \ + "${BACKUP_ROOT}"/fundtracker-backup-*.tar.gz \ + 2>/dev/null || true) + + BACKUP_COUNT=$(echo "$BACKUP_LIST" | grep -c . || true) + + DELETED_COUNT=0 + + if [ "$BACKUP_COUNT" -gt "$RETAIN_COUNT" ]; then + + DELETE_LIST=$(echo "$BACKUP_LIST" | + tail -n +$((RETAIN_COUNT + 1))) + + while IFS= read -r OLD_BACKUP; do + + [ -z "$OLD_BACKUP" ] && continue + + rm -f "$OLD_BACKUP" + + log "Removed old backup: $(basename "$OLD_BACKUP")" + + DELETED_COUNT=$((DELETED_COUNT + 1)) + + done <<< "$DELETE_LIST" + + add_section_row \ + "Backup Rotation" \ + "OK" \ + "Kept ${RETAIN_COUNT} most recent · removed ${DELETED_COUNT} old backup(s)" + + else + + add_section_row \ + "Backup Rotation" \ + "OK" \ + "${BACKUP_COUNT} / ${RETAIN_COUNT} backups retained" + + fi + +fi + +# ============================================================================= +# FINAL STATUS +# ============================================================================= + +log_section "FundTracker Backup Complete" + +log "Archive: ${FINAL_ARCHIVE:-N/A}" +log "Size: ${ARCHIVE_SIZE:-N/A}" +log "Status: ${OVERALL_STATUS}" + +# ============================================================================= +# EMAIL STATUS BANNER +# ============================================================================= + +case "$OVERALL_STATUS" in + + SUCCESS) + + BADGE_HTML="
✅ SUCCESS
" + + BANNER_HTML="✅  FundTracker backup completed successfully — no action required." + + ;; + + WARNING) + + BADGE_HTML="
⚠️ WARNING
" + + BANNER_HTML="⚠️  FundTracker backup completed with warnings — review recommended." + + ;; + + FAILED) + + BADGE_HTML="
🚨 FAILED
" + + BANNER_HTML="🚨  FundTracker backup failed — immediate attention required!" + + ;; + +esac + +# ============================================================================= +# ARCHIVE CARD +# ============================================================================= + +if [ -f "${FINAL_ARCHIVE:-}" ]; then + + ARCHIVE_CARD=" + +
+ +
+ 🗜️ Backup Archive +
+ + + + + + + + + + + + + + + + + +
+
+ Filename +
+ +
+ ${ARCHIVE_NAME} +
+
+
+ Size +
+ +
+ ${ARCHIVE_SIZE} +
+
+
+ Retained +
+ +
+ ${BACKUP_COUNT} / ${RETAIN_COUNT} +
+
+ +
+ " + +else + + ARCHIVE_CARD="" + +fi + +# ============================================================================= +# HTML EMAIL +# ============================================================================= + +HTML_BODY=$(cat < + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +$BANNER_HTML + + + + + + + + + +$ARCHIVE_CARD + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ +
+FundTracker Backup Monitor +
+ +
+💾 $HOSTNAME_LABEL +
+ +
+/usr/scripts/fundtracker/fundtracker-backup.sh +
+ +
+$REPORT_TIME  |  $WARNING_COUNT warning(s) · $ERROR_COUNT error(s) +
+ +
+$BADGE_HTML +
+ +
+ +
+ +
+ + +📋 Backup Section Results + + +
+ + + + + + + + + + + + + +$SECTION_ROWS_HTML + +
+Section + +Status + +Detail +
+ +
+ +
+ +
+ +
+📊 Backup Summary +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Host$HOSTNAME_LABEL
Run Time$REPORT_TIME
Project Files$PROJECT_DIR
DatabasePostgreSQL / $DB_NAME
Destination$BACKUP_ROOT
Archive$ARCHIVE_NAME
Archive Size$ARCHIVE_SIZE
Backups on Disk$BACKUP_COUNT of $RETAIN_COUNT max retained
Warnings$WARNING_COUNT
Errors$ERROR_COUNT
Overall Status$OVERALL_STATUS
+ +
+ +
+ + +Automated Backup Monitor  |  $HOSTNAME_LABEL  |  KingDezigns FundTracker + + +
+ +
+ + + +EOF +) + +# ============================================================================= +# SEND EMAIL +# ============================================================================= + +SUBJECT="[FundTracker Backup] $HOSTNAME_LABEL — $OVERALL_STATUS | $REPORT_TIME" + +{ + echo "To: $REPORT_TO" + echo "From: $REPORT_FROM" + echo "Subject: $SUBJECT" + echo "MIME-Version: 1.0" + echo "Content-Type: text/html; charset=UTF-8" + echo "" + echo "$HTML_BODY" +} | sendmail -t + +log "Email sent to $REPORT_TO — Overall status: $OVERALL_STATUS" +log "===== FundTracker backup script finished =====" + +# ============================================================================= +# EXIT STATUS +# ============================================================================= + +if [ "$OVERALL_STATUS" = "FAILED" ]; then + exit 1 +else + exit 0 +fi +``` + diff --git a/fundtracker/fundtracker-current-20260819-145121.tar.gz b/fundtracker/fundtracker-current-20260819-145121.tar.gz new file mode 100644 index 0000000..ab0789d Binary files /dev/null and b/fundtracker/fundtracker-current-20260819-145121.tar.gz differ diff --git a/fundtracker/fundtracker-current-20260819-215117.tar.gz b/fundtracker/fundtracker-current-20260819-215117.tar.gz new file mode 100644 index 0000000..681169c Binary files /dev/null and b/fundtracker/fundtracker-current-20260819-215117.tar.gz differ diff --git a/fundtracker/fundtracker-current-20260819-224329.tar.gz b/fundtracker/fundtracker-current-20260819-224329.tar.gz new file mode 100644 index 0000000..8de31b2 Binary files /dev/null and b/fundtracker/fundtracker-current-20260819-224329.tar.gz differ diff --git a/fundtracker/fundtracker-current-20260820-081443.tar.gz b/fundtracker/fundtracker-current-20260820-081443.tar.gz new file mode 100644 index 0000000..4ca0b32 Binary files /dev/null and b/fundtracker/fundtracker-current-20260820-081443.tar.gz differ diff --git a/fundtracker/fundtracker-v1.6.0-backup-2026-08-20_18-39-33.tar.gz b/fundtracker/fundtracker-v1.6.0-backup-2026-08-20_18-39-33.tar.gz new file mode 100644 index 0000000..17d18c0 Binary files /dev/null and b/fundtracker/fundtracker-v1.6.0-backup-2026-08-20_18-39-33.tar.gz differ