This guide will take you through on how to install and configure Borgmatic on Ubuntu 22.04. Borgmatic is easy-to-use and configure backup software for servers and workstations. It makes a backup, prunes any old backups that don’t meet the retention policy’s requirements, and verifies backup consistency.
Install Borgmatic on Ubuntu 22.04
- Update your packaged.
sudo apt update
- Then, using the command below, install Borgmatic on Ubuntu 22.04.
sudo apt install borgmatic
Sample output
Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: borgbackup python3-async-generator python3-attr python3-distutils python3-jsonschema python3-llfuse python3-msgpack python3-outcome python3-packaging python3-pyfuse3 python3-pyrsistent python3-ruamel.yaml python3-ruamel.yaml.clib python3-setuptools python3-sniffio python3-sortedcontainers python3-trio Suggested packages: borgbackup-doc python-attr-doc python-jsonschema-doc python-llfuse-doc python-setuptools-doc python-sortedcontainers-doc The following NEW packages will be installed: borgbackup borgmatic python3-async-generator python3-attr python3-distutils python3-jsonschema python3-llfuse python3-msgpack python3-outcome python3-packaging python3-pyfuse3 python3-pyrsistent python3-ruamel.yaml python3-ruamel.yaml.clib python3-setuptools python3-sniffio python3-sortedcontainers python3-trio 0 upgraded, 18 newly installed, 0 to remove and 19 not upgraded. Need to get 2,544 kB of archives. After this operation, 11.4 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://ke.archive.ubuntu.com/ubuntu jammy/main amd64 python3-msgpack amd64 1.0.3-1build1 [67.8 kB] Get:2 http://ke.archive.ubuntu.com/ubuntu jammy/main amd64 python3-packaging all 21.3-1 [30.7 kB] Get:3 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 borgbackup amd64 1.2.0-1 [792 kB] Get:4 http://ke.archive.ubuntu.com/ubuntu jammy/main amd64 python3-attr all 21.2.0-1 [44.0 kB] Get:5 http://ke.archive.ubuntu.com/ubuntu jammy/main amd64 python3-distutils all 3.10.4-0ubuntu1 [138 kB] Get:6 http://ke.archive.ubuntu.com/ubuntu jammy/main amd64 python3-setuptools all 59.6.0-1.2 [339 kB] Get:7 http://ke.archive.ubuntu.com/ubuntu jammy/main amd64 python3-pyrsistent amd64 0.18.1-1build1 [55.5 kB] Get:8 http://ke.archive.ubuntu.com/ubuntu jammy/main amd64 python3-jsonschema all 3.2.0-0ubuntu2 [43.1 kB] Get:9 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-ruamel.yaml.clib amd64 0.2.6-1build1 [134 kB] Get:10 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-ruamel.yaml all 0.17.16-1 [86.3 kB] Get:11 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 borgmatic all 1.5.20-1 [51.0 kB] Get:12 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-async-generator all 1.10-3 [17.5 kB] Get:13 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-llfuse amd64 1.3.8+dfsg-2build1 [291 kB] Get:14 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-outcome all 1.1.0-1 [5,820 B] Get:15 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-sniffio all 1.2.0-1 [6,438 B] Get:16 http://ke.archive.ubuntu.com/ubuntu jammy/main amd64 python3-sortedcontainers all 2.1.0-2 [27.3 kB] Get:17 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-trio all 0.19.0-1 [238 kB] Get:18 http://ke.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-pyfuse3 amd64 3.2.0-3build1 [176 kB] Fetched 2,544 kB in 1s (3,212 kB/s) Selecting previously unselected package python3-msgpack. (Reading database ... 216323 files and directories currently installed.) Preparing to unpack .../00-python3-msgpack_1.0.3-1build1_amd6 4.deb ... Unpacking python3-msgpack (1.0.3-1build1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../01-python3-packaging_21.3-1_all.deb . ..
- Initialize the backup repository after installation.
borg init -e repokey demo.borg
Sample output
Enter new passphrase: Enter same passphrase again: Do you want your passphrase to be displayed for verification? [yN]: y Your passphrase (between double-quotes): "1234" Make sure the passphrase displayed above is exactly what you wanted. By default repositories initialized with this version will produce security errors if written to with an older version (up to and including Borg 1.0.8). If you want to use these older versions, you can disable the check by running: borg upgrade --disable-tam demo.borg See https://borgbackup.readthedocs.io/en/stable/changes.html#pre-1-0-9-manifest-spoofing-vulnerability for details about the security implications. IMPORTANT: you will need both KEY AND PASSPHRASE to access this repo! If you used a repokey mode, the key is stored in the repo, but you should back it up separately. Use "borg key export" to export the key, optionally in printable format. Write down the passphrase. Store both at safe place(s).
Configure Borgmatic on Ubuntu 22.04
- Make a configuration file for Borgamatic.
generate-borgmatic-config -d demo.yaml
Sample output
Generated a sample configuration file at demo.yaml. Please edit the file to suit your needs. The values are representative. All fields are optional except where indicated. If you ever need help: https://torsion.org/borgmatic/#issues
- Next, open the configuration file so as to customize it.
sudo nano demo.yaml
- Customize the configuration file to meet your requirements. i.e. backup directories under source directories, retention time, excluded directories, and so forth. See the example file below.
# Where to look for files to backup, and where to store thos> # See https://borgbackup.readthedocs.io/en/stable/quickstart> # https://borgbackup.readthedocs.io/en/stable/usage/create.h> # for details. location: # List of source directories to backup (required). Globs> # tildes are expanded. source_directories: - /home - /etc - /var/log/syslog* # Paths to local or remote repositories (required). Tild> # expanded. Multiple repositories are backed up to in # sequence. Borg placeholders can be used. See the outpu> # "borg help placeholders" for details. See ssh_command > # SSH options like identity file or port. If systemd ser> # is used, then add local repository paths in the systemd # service file to the ReadWritePaths list. repositories: - demo.borg # Retention policy for how many backups to keep in each cate> # https://borgbackup.readthedocs.io/en/stable/usage/prune.ht> # details. At least one of the "keep" options is required fo> # to work. To skip pruning entirely, run "borgmatic create" > # without the "prune" action. See borgmatic documentation fo> retention: # Keep all archives within this time interval. # keep_within: 3H # Number of secondly archives to keep. # keep_secondly: 60 # Number of minutely archives to keep. # keep_minutely: 60 # Number of hourly archives to keep. # keep_hourly: 24 # Number of daily archives to keep. keep_daily: 7 # Number of weekly archives to keep. # keep_weekly: 4 # Number of monthly archives to keep. # keep_monthly: 6 # Number of yearly archives to keep. # keep_yearly: 1 # When pruning, only consider archive names starting wit> # prefix. Borg placeholders can be used. See the output> # "borg help placeholders" for details. Defaults to # "{hostname}-". Use an empty value to disable the defau> # prefix: sourcehostname
Create Backup using Borgmatic
- To create your first backup, run the command below.
sudo borgmatic --config demo.yaml --verbosity 1
Sample output
Enter passphrase for key /home/itinixpro/demo.borg: demo.borg: Creating archive Enter passphrase for key /home/itinixpro/demo.borg: Creating archive at "demo.borg::nfs-2022-05-09T11:07:29.717951" demo.borg: Running consistency checks Starting repository check finished segment check at segment 17 Starting repository index check Index object count match. Finished full repository check, no problems found. Starting archive consistency check... Enter passphrase for key /home/itinixpro/demo.borg: Analyzing archive nfs-2022-05-09T11:03:32.672099.checkpoint (1/2) Analyzing archive nfs-2022-05-09T11:07:29.717951 (2/2) Orphaned objects check skipped (needs all archives checked). Archive consistency check complete, no problems found. summary: demo.yaml: Successfully ran configuration file
- Use the following command to check your backup.
sudo borgmatic -c demo.yaml --list
Sample output
demo.borg: Listing archives Enter passphrase for key /home/itinixpro/demo.borg: nfs-2022-05-09T11:07:29.717951 Mon, 2022-05-09 11:07:32 [ef8234af25bcfdac828ab8463cfca99d0eecb9ee15f116799aa460249f507873]
Automate Backup
- Create a borgmatic systemd service file.
sudo nano /etc/systemd/system/borgmatic.service
Paste the content below.
[Unit] Description=Borgmatic system backup Requires=network.target After=network.target [Service] Type=oneshot Nice=10 IOSchedulingClass=best-effort IOSchedulingPriority=6 ProtectSystem=full ExecStart=/usr/bin/borgmatic --verbosity -1 --syslog-verbosity 1
- Then, using the following command, create a timer config file to define backup time.
sudo nano /etc/systemd/system/borgmatic.timer
Copy the configuration file and change the backup time to your preference.
[Unit] Description=Daily backup timer [Timer] OnCalendar=*-*-* 02:00:00 Persistent=true [Install] WantedBy=timers.target
- Enable the timer.
systemctl enable --now borgmatic.timer
- It’s a wrap! You have made it to the end of our article, Cheers! You have learned how to install and configure Borgmatic on Ubuntu 22.04.
Read more on Borgmatic Documentation
Other Tutorials
How to Backup Windows systems using Veeam Agent