Backup¶
We keep daily and weekly snapshots of the filesystem data belonging to your Asteroid, including your home directory and DocumentRoots. Databases are backed up separately, as described below.
The snapshots are mounted read-only at /backup:
[isabell@moondust ~]$ ls /backup
current daily.0 daily.1 daily.2 daily.3 daily.4 daily.5 daily.6 daily.7 weekly.1 weekly.2 weekly.3 weekly.4 weekly.5 weekly.6 weekly.7
daily.0 is a symlink to current, which contains the latest completed daily snapshot. It is not a live view: changes made after that snapshot do not appear there. daily.1 through daily.7 provide up to seven older daily snapshots, while weekly.1 through weekly.7 provide up to seven weekly snapshots.
Your files keep their normal absolute paths below each snapshot. For example, ~/config.php from daily.3 is available at /backup/daily.3/home/isabell/config.php.
Restoring files¶
Since the backup is mounted read-only, copy the files you need to a writable location. For a single file, cp is enough:
[isabell@moondust ~]$ cp --archive /backup/daily.3/home/isabell/config.php ~/config.php.restored
Inspect the restored copy before replacing the live file.
For a whole directory, use rsync instead. Without --delete, it copies missing and changed files but leaves files that exist only in the live destination. Always do a --dry-run before the real thing:
[isabell@moondust ~]$ rsync --archive --verbose --dry-run /backup/daily.3/home/isabell/my_project/ ~/my_project/
sending incremental file list
./
config.php
public/
public/index.html
sent [...] bytes received [...] bytes [...] bytes/sec
total size is [...] speedup is [...] (DRY RUN)
Once the dry run looks right, drop --dry-run to actually restore:
[isabell@moondust ~]$ rsync --archive --verbose /backup/daily.3/home/isabell/my_project/ ~/my_project/
sending incremental file list
./
config.php
public/
public/index.html
sent [...] bytes received [...] bytes [...] bytes/sec
total size is [...] speedup is [...]
Restoring the exact snapshot state
To make the destination match the snapshot exactly, add --delete to both the dry-run and the real command. This permanently deletes destination files that are not present in the snapshot. Review the dry-run carefully before running the command without --dry-run.
Trailing slashes matter
A source path ending in / copies the contents of that directory into the destination. Without the trailing slash, rsync copies the directory itself, nesting it one level deeper than you probably want.
Database backups are separate
MariaDB and PostgreSQL are backed up separately via daily dumps. See MariaDB and PostgreSQL for details.