FreshRSS/docs/en/admins/05_Backup.md

4.4 KiB
Raw Blame History

Backup

FreshRSS global settings are in ./data/config.php and users' settings are in ./data/users/*/config.php. You can also back up the whole ./data/ directory but exclude the things you do not want.

If you use extensions, then each directory in ./extensions the folder static contains the users extension settings.

Full-Installation Backup

Do this before an upgrade.

This following tutorial demonstrates commands for backing up FreshRSS. It assumes that your main FreshRSS directory is /usr/share/FreshRSS. If youve installed it somewhere else, substitute your path as necessary.

Creating a database backup

Back-up all users respective database to data/users/*/backup.sqlite

cd /usr/share/FreshRSS/
./cli/db-backup.php

Creating a Backup of all Files

Enter the directory you wish to save your backup to. Here, for example, well save the backup to the user home directory

cd ~

Next, well create a gzipped tar archive of the FreshRSS directory. The following command will archive the entire contents of your FreshRSS installation in its current state.

tar -czf FreshRSS-backup.tgz -C /usr/share/FreshRSS/ .

And youre done!

Restoring Files from a Backup

First, copy the backup previously made into your FreshRSS directory

cp ~/FreshRSS-backup.tgz /usr/share/FreshRSS/

Next, change to your FreshRSS directory

cd /usr/share/FreshRSS/

Extract the backup

tar -xzf FreshRSS-backup.tgz

And optionally, as cleanup, remove the copy of your backup from the FreshRSS directory

rm FreshRSS-backup.tgz

Restore a database backup

It is safer to stop your Web server and cron during maintenance operations.

Restore all users respective database from data/users/*/backup.sqlite

cd /usr/share/FreshRSS/
./cli/db-restore.php --delete-backup --force-overwrite

Migrate database

Start by making an automatic backup of the all the user databases to SQLite files:

cd /usr/share/FreshRSS/
./cli/db-backup.php

Change your database setup:

  • if you like to change database type (e.g. from MySQL to PostgreSQL), edit data/config.php accordingly.
  • if you upgrade to a major PostgreSQL version, after a PostgreSQL backup, you may delete the old instance and start a new instance (remove the PostgreSQL volume if using Docker).

Restore all the user databases from the SQLite files:

./cli/db-restore.php --delete-backup --force-overwrite

See also our Docker documentation to migrate database.

Backing up selected content

Feed list Export

You can export your feed list in OPML format either from the web interface, or from the Command-Line Interface.

The OPML export only exports the standard OPML parameters and does not export things such as desired refresh frequency, custom attributes such as passwords, user agent, XPath Web scraping, etc.

To export all that, use a full back-up with export-to-sqlite, as described in the following section.

Saving Articles

If you are using MySQL You can use phpMyAdmin or MySQL tools, where <db_user> is your database username, <db_host> is the hostname of your web server containing your FreshRSS database, and <freshrss_db> is the database used by FreshRSS:

mysqldump --skip-comments --disable-keys --user=<db_user> --password --host <db_host> --result-file=freshrss.dump.sql --databases <freshrss_db>

From any database You can use the Command-Line Interface to export your database to a SQLite database file:

./cli/export-sqlite-for-user.php --user <username> --filename </path/to/db.sqlite>

Note that the database filename needs the sqlite extension in order to work properly.

You can use the Command-Line Interface again to import the SQLite database file into your database:

./cli/import-sqlite-for-user.php --user <username> --filename </path/to/db.sqlite>

Again, note that the database filename needs the sqlite extension in order to work properly.

The SQLite process is useful when you need to:

  • export a user fully,
  • backup your service,
  • migrate the service to another server,
  • change database type,
  • fix database corruptions.