Restoring a Manual Backup
If you previously followed the steps to back up your data and have an Actual zip export, you can now import that using the web version of Actual.
To do this,
login to your budget, then in the top right corner click 'Server'
Then select Logout
Log back into your instance of Actual
From the next screen select Import File
Select Actual and then locate your Zip file, this will then import what you previously exported into Actual.
That is it. A fresh budget will show in your budget list. If the imported data is a copy of your current budget, you may want to rename the new budget by clicking on it's name so you can tell them apart. Once you verify the new imported budget is correct, you can navigate back to the budget selection screen by closing the current budget and deleting the old copy.
Errors When Restoring Database From Backup
It is possible that you may encounter an error during restoration that says:
This budget cannot be loaded with this version of the app. Make sure the app is up-to-date.
This should only happen when you're upgrading from a Docker image with the
edge tag to a stable release, such as
latest. This should not happen in other instances. If you find yourself seeing this bug, please submit a bug report.
IMPORTANT NOTE: You MUST download a backup of each of your budgets using the process outlined above before continuing. It's always good practice to backup your data before upgrading to a new version.
The fix for this is to manually migrate the your sqlite database in the steps outlined below:
- Download and install SQLite Browser
- Unzip the backup budget
.zipfile. The filename should look like:
- Open SQLite Browser. Click on the "Open Database" button and navigate to the file you just unzipped. You're looking for a file named
- Load the file and click on the
Browse Datatab. Select the
__migrations__table from the table dropdown menu.
- You should see a list of integers under the column labeled
id. Cross-reference the entries in this table with the list of database migrations in the main Actual repository.
- For every integer that's missing, you'll want to click on the
.sqlfile associated with it and copy the raw data.
- Run the sql query in the Execute tab of SQLite Browser. Be sure to check the output that the command was successful.
- If the sql query that you copied is successful, you'll want to insert the migration command's id into the
__migrations__table by executing
insert into __migrations__ values(id_of_missing_migration_command);.
- Once your
__migrations__table matches the database migrations folder, commit and close the database.
- Rezip your modified
metadata.jsonfiles into a zip file.
- Retry the restore process outlined above.
Automatic backups are currently only available in the (beta) desktop app.
Actual keeps backups of your data locally. If something disastrous happens, you can always load a recent backup to get your data back.
Currently it keeps up to 10 backups, one per day of usage of the app, multiple backups of the current day. The result is you will have data backed up to the last 15 minutes, in addition to the last 10 days you used the app.
Loading an automatic backup
- Select the File > Load Backup… menu item
- Choose the backup you want to load and select it
The app will reload with the data from that backup. If you want to keep using that backup, you don't have to do anything else, just keep using the app. If you want to go back to the previous data, open the backup menu again and select Revert to original version. This option will be available until another backup is made.