2 title = "Backup and Restore"
3 description = "How to back up and restore your BookStack data"
8 While BookStack does not currently have a built-in way to backup and restore content,
9 it can usually be done via the command line with relative ease.
10 The below commands are based on using Ubuntu. If you are using a
11 different operating system you may have to alter these commands to suit.
17 There are two types of content you need to backup: Files and database records.
21 The easiest way to backup the database is via `mysqldump`:
25 ## Only specify the `-p` option if the user provided has a password
26 mysqldump -u {mysql_user} -p {database_name} > {output_file_name}
30 mysqldump -u benny bookstack > bookstack.backup.sql
33 If you are using MySQL on Ubuntu, and are using the `root` MySQL
34 user, you will likely have to run the command above with `sudo`:
37 sudo mysqldump -u root bookstack > bookstack.backup.sql
40 The resulting file (`bookstack.backup.sql` in the examples above) will contain
41 all the data from the database you specified. Copy this file to somewhere safe,
42 ideally on a different device.
46 Below is a list of files and folders containing data you should back up. The paths
47 are shown relative to the root BookStack folder.
49 * `.env` - File, contains important configuration information.
50 * `public/uploads` - Folder, contains any uploaded images.
51 * `storage/uploads` - Folder, contains uploaded page attachments.
52 * `themes` - Folder, contains any configured [visual/logical themes](/docs/admin/hacking-bookstack/#visual-theme-system).
54 Alternatively you could backup up your whole BookStack folder but only the above
55 contain important instance-specific data by default.
57 The following command will create a compressed archive of the above folders and
61 tar -czvf bookstack-files-backup.tar.gz .env public/uploads storage/uploads themes
64 The resulting file (`bookstack-files-backup.tar.gz`) will contain all your file
65 data. Copy this to a safe place, ideally on a different device.
71 If you are restoring from scratch follow the [installation](/docs/admin/installation)
72 instructions first to get a new BookStack instance set-up but
73 **do not run the `php artisan migrate` installation step when installing BookStack**.
74 You may need to comment this command out if using an installer script.
76 If you are using a docker-container-based set-up, restore the database before running the BookStack container.
77 An example of the process using a linuxserver.io-based docker-compose setup can be seen [in our video here](https://youtu.be/6A8hLuQTkKQ?t=1050).
81 To restore the database you simply need to execute the sql in the output file from the `mysqldump`
82 you performed above. To do this copy your database SQL backup file onto the
83 BookStack or database host machine and run the following:
87 mysql -u {mysql_user} -p {database_name} < {backup_file_name}
88 ## Only specify the -p if the user provided has a password
91 mysql -u benny -p bookstack < bookstack.backup.sql
93 # If using the root user on Ubuntu you may
94 # have to run the above with root permissions via sudo:
95 sudo mysql -u root bookstack < bookstack.backup.sql
98 If you are restoring to a new version of BookStack you will have to run
99 `php artisan migrate` after restore to perform any required updates to the database.
103 To restore the files you simply need to copy them from the backup archive
104 back to their original locations. If you created a compressed `bookstack-files-backup.tar.gz`
105 archive as per the backup instructions above you can simply copy that file to
106 your BookStack folder then run the following command:
109 tar -xvzf bookstack-files-backup.tar.gz
112 If you get errors during the above command it may be due to permissions.
113 Change permissions so you can write to the restore locations.
115 After a backup of the files you should reset the permissions to ensure any write-required
116 locations are writable by the server. The locations required for this can be
117 found in the [installation instructions](/docs/admin/installation).
119 #### Configuration (.env File)
121 During a restore, you may end up merging various configuration options between your
122 old and new instance `.env` files, to get things working for the new environment.
123 For example, it's common to use the old `.env` settings for most things but use database
124 settings from the `.env` file of a newly created instance.
126 One thing to be aware of is that you should use the `APP_KEY` value of the old `.env` file since
127 this is used for various features like the encryption of multi-factor authentication credentials.
128 Changing the `APP_KEY` may cause such features to break.
132 If you are restoring into an environment where BookStack will run on a different URL,
133 there are a couple of things you'll need to do after restoring everything:
135 - Within the `.env` config file update the `APP_URL` value to exactly match your new base URL.
136 - Run the ["Update System URL" command](/docs/admin/commands/#update-system-url) to update your database content to use your new URL.
138 If you migrated web-server configuration files, you may also need to tweak those to correctly use the new URL.