I’m having trouble automating the restic backup using systemd.
I followed the linked guide, which seems pretty straightforward. Backup works fine when I run it manually, but when I try to run systemctl status restic-backup.service
I get the following error: Fatal: parsing repository location failed: s3: bucket name not found
I have triple-checked the file paths, and also added PassEnvironment=AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY RESTIC_REPOSITORY RESTIC_PASSWORD_FILE B2_ACCOUNT_ID B2_ACCOUNT_KEY
to the restic-backup.service file, which I saw used elsewhere. This is my first time using systemd, so I’m not sure if I am overlooking an obvious step or what.
OS: Xubuntu
restic: installed locally following these steps
backup: Backblaze B2 bucket with s3
My recommendation is to put all of the variables in an environment file, and use systemd’s
EnvironmentFile
(in[Service]
to point to it.One of my backup service files (I back up to disks and cloud) looks like this:
[Unit] Description=Backup to MyUsbDrive Requires=media-MyUsbDrive.mount After=media-MyUsbDrive.mount [Service] EnvironmentFile=/etc/backup/environment Type=simple ExecStart=/usr/bin/restic backup --tag=prefailure-2 --files-from ${FILES} --exclude-file ${EXCLUDES} --one-file-system [Install] WantedBy=multi-user.timer
FILES
is a file containing files and directories to be backed up, and is defined in the environment file; so isEXCLUDES
, but you could simply point restic at the directory you want to back up instead.My environment file looks essentially like
RESTIC_REPOSITORY=/mnt/MyUsbDrive/backup RESTIC_PASSWORD=blahblahblah KEEP_DAILY=7 KEEP_MONTHLY=3 KEEP_YEARLY=2 EXCLUDES=/etc/backup/excludes FILES=/etc/backup/files
If you’re having trouble, start by looking at how you’re passing in the password, and whether it’s quoted properly. It’s been a couple of years since I had this issue, but at one point I know I had spaces in a passphrase and had quoted the variable, and the quotes were getting passed in verbatim.
My VPS backups are more complex and get their passwords from a keystore, but for my desktop I keep it simple.
Seconding this answer. The error message and description scream envvar issue.
@gedaliyah@lemmy.world Did you run a
systemctl daemon-reload
after making the PassEnvironment change to your service file?