A simple Qt GUI to automate backups with restic
- Automate your restic backups at a choosen frequency
- Run restic forget in a regular basis (and transparently) to keep your backup light and useful
- Let you see when:
-
pre_backup
script is running -
restic backup
is running -
restic forget
is running -
restic unlock
is running - backup is completed
- last operation failed
- last backup failed because of a network timeout (maybe the VPN is not running?)
This has been tested and validated on
- Ubuntu 20.04 LTS
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS
sudo apt install restic pipx qt5dxcb-plugin python3-pyqt5
pipx install enacrestic
mkdir ~/.enacrestic
To upgrade ENACrestic to latest release, just run the following command:
pipx upgrade enacrestic
Note: For this documentation, we have chosen to use the vi
text editor.
Adapt the commands below by replacing it with the editor of your choice. (nano
, gedit
, ...)
Choose the right section according to your destination storage
vi ~/.enacrestic/env.sh
# 1. recommended destination: S3 Bucket
export RESTIC_REPOSITORY=s3:s3.epfl.ch/bucket_name/restic_MyComputerName
export AWS_ACCESS_KEY_ID=TheBucketRWAccessKey
export AWS_SECRET_ACCESS_KEY=TheBucketRWSecretKey
# 2. alternative destination: SSH / SFTP
export RESTIC_REPOSITORY=sftp:my-server.epfl.ch:/home/username/path
Note, although Restic is able to manage several computers being backed up on a same respository, it's not recommended with ENACrestic. Keep a dedicated RESTIC_REPOSITORY
per machine.
Add a one line password in it. This is used to encrypt your backups.
vi ~/.enacrestic/.pw
Be careful ! If you loose this password ... you loose your backups.
Add one line per folder / file that has to be backed up.
vi ~/.enacrestic/bkp_include
# 1. recommended scenario: backup all your home directory
/home/username/
# 2. alternative scenario: backup only choosen folders
/home/username/.enacrestic/
/home/username/Documents/
/home/username/Teaching/
/home/username/Pictures/
/home/username/Projects/
/home/username/Learn/
/home/username/.gitconfig
/home/username/.mozilla/
/home/username/.ssh/
# heavy !
/home/username/Videos/
note: Lines starting with a #
are ignored.
Add one line per folder / file / expression that has to be excluded.
Before running your first backup, you might want to exclude heavy and unnecessary folders (Like the Downloads or the Trash). You can use the baobab
utility to find those.
Here is an example of some typical things you might want to exclude from backup:
vi ~/.enacrestic/bkp_exclude
*.iso
*.sav
*.bak
*.bak2
*.log
*.ost
*.part
*.temp
*.tmp
*.vhd
*.vhdx
*.vmdk
*.vdi
/home/username/Downloads/
/home/username/ENACdrives/
/home/username/.local/share/Trash/
/home/username/VirtualBox VMs/
/home/username/snap/
/home/username/.cache/
/home/username/**/nobackup*
/home/username/.local/share/virtualenvs/
/home/username/.arduino15/
/home/username/.atom/
/home/username/.npm/
/home/username/.nvm/
Exact syntax is described here
mkdir -p ~/.local/share/applications ~/.local/share/icons
ln -s ~/.local/share/pipx/venvs/enacrestic/share/applications/enacrestic.desktop ~/.local/share/applications/
ln -s ~/.local/share/pipx/venvs/enacrestic/share/icons/enacrestic.png ~/.local/share/icons/
vi ~/.bashrc # when using BASH
vi ~/.zshrc # when using ZSH
export "PATH=$PATH:$HOME/.local/bin"
. $HOME/.enacrestic/env.sh
Now close + open a new terminal to get it all into your environment ... or simply reload your rc file:
. ~/.bashrc # when using BASH
. ~/.zshrc # when using ZSH
π Setup is now complete! You're now ready to send your 1st backup. π
- from Ubuntu's Application launcher
- or from command line with the single command
enacrestic
You'll see a new icon in the system tray (upper-right corner of your screen) with following icon.
This is the indicator that ENACrestic is running in the background and it'll change over time, reflecting current state.
By clicking on it, you can view detailed status and opt-in for the auto-start feature (start ENACrestic when Ubuntu user session is started).
From now on, ENACrestic is running in the background and doing the backups on a regular basis.
You can check it's activity by reading the ~/.enacrestic/last_backups.log
file.
Note: First backup can take a long time! Please consider having enough time for the 1st backup to complete. It'll be the longest backup ever, since everything has to be copied. All future backups will then be only incremental.
Add a dedicated Systemd service file:
vi /etc/systemd/system/enacrestic.service
[Unit]
Description=ENACrestic
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/root
ExecStart=/root/.local/bin/enacrestic --no-gui
KillSignal=SIGTERM
Restart=on-failure
RestartSec=30
Enable and start it:
systemctl daemon-reload
systemctl enable enacrestic.service
systemctl start enacrestic.service
That will ensure enacrestic service is started when the server boot.
You can know its status with the following commands:
systemctl status enacrestic.service
tail -n 50 -f /root/.enacrestic/last_backups.log
By default, every 10 backups, a restic forget
will clean repository from backups that don't need to be kept, according the following retention policy:
- keep the last
3
backups - keep the last
24
hourly backups - keep the last
7
daily backups - keep the last
4
weekly backups - keep the last
12
monthly backups - keep the last
5
yearly backups
ENACrestic is here to help you, running backups on a regular basis. If you want to browse backups, restore files/folders, you'll have to use restic itself. Here are basic commands:
restic snapshots -c --password-file ~/.enacrestic/.pw
... and be able to
- browse the different snapshots
- restore any file / folder
mkdir -p ~/mnt/my_backups
restic mount ~/mnt/my_backups --password-file ~/.enacrestic/.pw
Now you can browse ~/mnt/my_backups
folder and copy from it anything you want to restore. When done, you can simply Ctrl-c in the terminal where you had issued the restic mount ...
command.