Backup using wyng-backup / wyng-util-qubes on btrfs not working

Some days ago installed the lastest versions of wyng-back/wyng-util-qubes on my old Qubes 4.1-machine to move some appVMs to 4.2 or 4.3 (testing).

Backing up the 4.1 worked without any issues, the restore to 4.2 and 4.3 worked like a charm … :wink:

Now I wanted to start doing backup of some Qubes on the 4.2/4.3-machine using the wyng-util-qubes-script, unfortunately without success.

Some technical data (all running on x230 heads with 16 GB and 240+ GB SSD):
Qubes 4.1 (latest updates) LVM
Qubes 4.2 (latest updates) btrfs
Qubes 4.3 (recent testing) btrfs, New installation on test-machine

As an example I try to backup my vpn-qube using:

wyng-util-qubes backup sys-vpn --dest=qubes://wyng/home/user/Downloads/backup42.wyng

Creating the repository/archive works, I can set a passphrase.

Besides last output-lines of the script are:

Wyng 0.8 beta release 20250404
Encrypted archive “qubes://wyng/home/user/Downloads/backup42.wyng”
Last updated:

Error: Local not a subvolume or no snapshot feature.
Offline volumes: appvms/sys-vpn/private.img

Error on volumes: appvms/sys-vpn/private.img, wyng-qubes-metadata
(some traceback lines)

RuntimeError: Error code 2

Are there currently any issues preventing the use of wyng on btrfs-installations?
Did I miss something during setup of Qubes OS or wyng?
Am I using wrong parameters for the wyng-util-qubes script?

Many thanks for your help …

I’ve been using wyng with BTRFS for a few years without issue. @tasket should be able to diagnose.

@egal There’s no issue with using Wyng on Btrfs except for a matter of initial setup. Wyng requires that the –local storage path on Btrfs end with a subvolume. The util handles the local parameter automatically for you when backing up, based on where Qubes is storing volumes, but it can’t do the initial step of creating a subvolume.

There is a script that can convert the Qubes storage dir to a subvolume. If you used the default Qubes Btrfs setup then you would run it like this:

qvm-shutdown --all --force
sudo bash convert-dir-to-subvol.sh /var/lib/qubes

If you didn’t use the default Qubes Btrfs setup you can find the dir path with the qvm-pool command.

1 Like

Many thanks for the help, I must have skipped this when installing wyng on my btrfs-machine(s) …

A small remark for calling the convert-dir-to-subvol-script:

Do NOT use the tab-completion when entering the path (as this will add a trailing slash).

In this case the conversion to subvolume will work, but the final rename fails … resulting in “missing” qube-images to start everything up again. As the temporary directoryname starts with a dash, it’s a little bit tricky to fix it … :wink:

Maybe this could be fixed in line 12 of “convert-dir-to-subvol.sh” using:

dir=${1%/}

instead of the currently used

dir=$1

(This small regex will remove a trailing / of the directoryname given as parameter)

Thanks for the tip. I’m going to try using dir=$(realpath "$1") which will remove multiple slashes as well.