`btrfs snapshot` does not create local snapshots when backup target is unavailable.
- Dominant language
- Perl
- Stars
- 2.1k
- Forks
- 139
- PR merge metrics
- No merged PRs in 30d
Description
Ahoj,
I use btrbk version 0.32.6 on Artix GNU/Linux, btrbk installed from distribution repository.
I want to use it for both snapshotting (with a cron job, target is usually not available, and also want to integrate it with a hook for the package manager to create snapshots after installation/ removal of packages) and backup (manually started when I make the target available), over the same config file.
But `btrbk snapshot` does _not_ create snapshots when the target is unavailable.
I have seen [this discussion](https://github.com/digint/btrbk/issues/184): If I understand [the essence](https://github.com/digint/btrbk/issues/184#issuecomment-381555087) correctly, `btrbk snapshot` should _create_ snapshots even when target is unavailable, just not delete any snapshot.
My config file is:
```conf
### global section ###
## Basic options
snapshot_dir .snapshots/btrbk
snapshot_create ondemand
incremental yes
timestamp_format long
## Grouping options
## Retention policy options
preserve_day_of_week monday
snapshot_preserve_min 1d
snapshot_preserve no
target_preserve_min latest
target_preserve 23h 6d 3w 11m *y
archive_preserve_min latest
archive_preserve no
## SSH options
ssh_identity /home/username/.ssh/server-username
ssh_user username
ssh_compression yes
ssh_cipher_spec default
## Data stream options
stream_compress no
stream_buffer 256m
## System options
transaction_log /var/log/btrbk.log
transaction_syslog no
lockfile /var/lock/btrbk.lock
backend btrfs-progs
## btrfs specific options
btrfs_commit_delete no
### volume section(s), subvolume section(s) and target section(s) ###
volume /mnt/btrfs_root
subvolume '@'
target send-receive /mnt/backuphdd/backup/username-winmax2/btrbk/
subvolume '@home_username'
target send-receive /mnt/backuphdd/backup/username-winmax2/btrbk/
subvolume '@root'
target send-receive /mnt/backuphdd/backup/username-winmax2/btrbk/
subvolume '@var'
target send-receive /mnt/backuphdd/backup/username-winmax2/btrbk/
subvolume '@var_log'
target send-receive /mnt/backuphdd/backup/username-winmax2/btrbk/
subvolume '@var_spool'
target send-receive /mnt/backuphdd/backup/username-winmax2/btrbk/
```
Here what happens:
1. `/mnt/backuphdd` unmounted.
1. `ls -1F /mnt/btrfs_root/.snapshots/btrbk/`:
```ls
'@.20260626T1842'/
'@.20260630T1744'/
'@.20260630T1744_1'/
'@home_username.20260626T1842'/
'@home_username.20260630T1744'/
'@home_username.20260630T1744_1'/
'@root.20260626T1842'/
'@root.20260630T1744'/
'@root.20260630T1744_1'/
'@var.20260626T1842'/
'@var.20260630T1744'/
'@var.20260630T1744_1'/
'@var_log.20260626T1842'/
'@var_log.20260630T1744'/
'@var_log.20260630T1744_1'/
'@var_spool.20260626T1842'/
'@var_spool.20260630T1744'/
'@var_spool.20260630T1744_1'/
```
2. `btrbk -v snapshot`:
```btrbk
btrbk command line client, version 0.32.6 (Tue Jun 30 17:57:26 2026)
Using configuration: /etc/btrbk/btrbk.conf
WARNING: Skipping target "/mnt/backuphdd/backup/username-winmax2/btrbk": Failed to fetch subvolume detail
WARNING: ... Command execution failed (exitcode=1)
WARNING: ... sh: readlink -v -e '/mnt/backuphdd/backup/username-winmax2/btrbk'
WARNING: ... readlink: /mnt/backuphdd/backup/username-winmax2/btrbk: No such file or directory
WARNING: Skipping target "/mnt/backuphdd/backup/username-winmax2/btrbk": Failed to fetch subvolume detail
WARNING: Skipping target "/mnt/backuphdd/backup/username-winmax2/btrbk": Failed to fetch subvolume detail
WARNING: Skipping target "/mnt/backuphdd/backup/username-winmax2/btrbk": Failed to fetch subvolume detail
WARNING: Skipping target "/mnt/backuphdd/backup/username-winmax2/btrbk": Failed to fetch subvolume detail
WARNING: Skipping target "/mnt/backuphdd/backup/username-winmax2/btrbk": Failed to fetch subvolume detail
Using transaction log: /var/log/btrbk.log
Snapshot creation skipped: snapshot_create=ondemand, and no target is present for: /mnt/btrfs_root/@
Snapshot creation skipped: snapshot_create=ondemand, and no target is present for: /mnt/btrfs_root/@home_username
Snapshot creation skipped: snapshot_create=ondemand, and no target is present for: /mnt/btrfs_root/@root
Snapshot creation skipped: snapshot_create=ondemand, and no target is present for: /mnt/btrfs_root/@var
Snapshot creation skipped: snapshot_create=ondemand, and no target is present for: /mnt/btrfs_root/@var_log
Snapshot creation skipped: snapshot_create=ondemand, and no target is present for: /mnt/btrfs_root/@var_spool
Skipping backup creation (btrbk snapshot)
WARNING: Skipping cleanup of snapshots for subvolume "/mnt/btrfs_root/@", as at least one target aborted earlier
WARNING: Skipping cleanup of snapshots for subvolume "/mnt/btrfs_root/@home_username", as at least one target aborted earlier
WARNING: Skipping cleanup of snapshots for subvolume "/mnt/btrfs_root/@root", as at least one target aborted earlier
WARNING: Skipping cleanup of snapshots for subvolume "/mnt/btrfs_root/@var", as at least one target aborted earlier
WARNING: Skipping cleanup of snapshots for subvolume "/mnt/btrfs_root/@var_log", as at least one target aborted earlier
WARNING: Skipping cleanup of snapshots for subvolume "/mnt/btrfs_root/@var_spool", as at least one target aborted earlier
Completed within: 0s (Tue Jun 30 17:57:26 2026)
--------------------------------------------------------------------------------
Backup Summary (btrbk command line client, version 0.32.6)
Date: Tue Jun 30 17:57:26 2026
Config: /etc/btrbk/btrbk.conf
Options:
snapshot: No backups created
snapshot: Preserved all backups
Legend:
=== up-to-date subvolume (source snapshot)
+++ created subvolume (source snapshot)
--- deleted subvolume
*** received subvolume (non-incremental)
>>> received subvolume (incremental)
--------------------------------------------------------------------------------
/mnt/btrfs_root/@
!!! Target "/mnt/backuphdd/backup/username-winmax2/btrbk" aborted: Failed to fetch subvolume detail
/mnt/btrfs_root/@home_username
!!! Target "/mnt/backuphdd/backup/username-winmax2/btrbk" aborted: Failed to fetch subvolume detail
/mnt/btrfs_root/@root
!!! Target "/mnt/backuphdd/backup/username-winmax2/btrbk" aborted: Failed to fetch subvolume detail
/mnt/btrfs_root/@var
!!! Target "/mnt/backuphdd/backup/username-winmax2/btrbk" aborted: Failed to fetch subvolume detail
/mnt/btrfs_root/@var_log
!!! Target "/mnt/backuphdd/backup/username-winmax2/btrbk" aborted: Failed to fetch subvolume detail
/mnt/btrfs_root/@var_spool
!!! Target "/mnt/backuphdd/backup/username-winmax2/btrbk" aborted: Failed to fetch subvolume detail
NOTE: Some errors occurred, which may result in missing backups!
Please check warning and error messages above.
```
3. `ls -1F /mnt/btrfs_root/.snapshots/btrbk/`:
```ls
'@.20260626T1842'/
'@.20260630T1744'/
'@.20260630T1744_1'/
'@home_username.20260626T1842'/
'@home_username.20260630T1744'/
'@home_username.20260630T1744_1'/
'@root.20260626T1842'/
'@root.20260630T1744'/
'@root.20260630T1744_1'/
'@var.20260626T1842'/
'@var.20260630T1744'/
'@var.20260630T1744_1'/
'@var_log.20260626T1842'/
'@var_log.20260630T1744'/
'@var_log.20260630T1744_1'/
'@var_spool.20260626T1842'/
'@var_spool.20260630T1744'/
'@var_spool.20260630T1744_1'/
```
*(No snapshot created.)*
2. Now mount `/mnt/backuphdd`.
4. `btrbk -v snapshot`:
```btrbk
btrbk command line client, version 0.32.6 (Tue Jun 30 18:00:03 2026)
Using configuration: /etc/btrbk/btrbk.conf
Using transaction log: /var/log/btrbk.log
Creating subvolume snapshot for: /mnt/btrfs_root/@
[snapshot] source: /mnt/btrfs_root/@
[snapshot] target: /mnt/btrfs_root/.snapshots/btrbk/@.20260630T1800
Creating subvolume snapshot for: /mnt/btrfs_root/@home_username
[snapshot] source: /mnt/btrfs_root/@home_username
[snapshot] target: /mnt/btrfs_root/.snapshots/btrbk/@home_username.20260630T1800
Creating subvolume snapshot for: /mnt/btrfs_root/@root
[snapshot] source: /mnt/btrfs_root/@root
[snapshot] target: /mnt/btrfs_root/.snapshots/btrbk/@root.20260630T1800
Creating subvolume snapshot for: /mnt/btrfs_root/@var
[snapshot] source: /mnt/btrfs_root/@var
[snapshot] target: /mnt/btrfs_root/.snapshots/btrbk/@var.20260630T1800
Creating subvolume snapshot for: /mnt/btrfs_root/@var_log
[snapshot] source: /mnt/btrfs_root/@var_log
[snapshot] target: /mnt/btrfs_root/.snapshots/btrbk/@var_log.20260630T1800
Creating subvolume snapshot for: /mnt/btrfs_root/@var_spool
[snapshot] source: /mnt/btrfs_root/@var_spool
[snapshot] target: /mnt/btrfs_root/.snapshots/btrbk/@var_spool.20260630T1800
Skipping backup creation (btrbk snapshot)
Preserving all backups
Cleaning snapshots: /mnt/btrfs_root/.snapshots/btrbk/@.*
Deleted 0 subvolumes in: /mnt/btrfs_root/.snapshots/btrbk/@.*
Preserving all backups
Cleaning snapshots: /mnt/btrfs_root/.snapshots/btrbk/@home_username.*
Deleted 0 subvolumes in: /mnt/btrfs_root/.snapshots/btrbk/@home_username.*
Preserving all backups
Cleaning snapshots: /mnt/btrfs_root/.snapshots/btrbk/@root.*
Deleted 0 subvolumes in: /mnt/btrfs_root/.snapshots/btrbk/@root.*
Preserving all backups
Cleaning snapshots: /mnt/btrfs_root/.snapshots/btrbk/@var.*
Deleted 0 subvolumes in: /mnt/btrfs_root/.snapshots/btrbk/@var.*
Preserving all backups
Cleaning snapshots: /mnt/btrfs_root/.snapshots/btrbk/@var_log.*
Deleted 0 subvolumes in: /mnt/btrfs_root/.snapshots/btrbk/@var_log.*
Preserving all backups
Cleaning snapshots: /mnt/btrfs_root/.snapshots/btrbk/@var_spool.*
Deleted 0 subvolumes in: /mnt/btrfs_root/.snapshots/btrbk/@var_spool.*
Completed within: 0s (Tue Jun 30 18:00:03 2026)
--------------------------------------------------------------------------------
Backup Summary (btrbk command line client, version 0.32.6)
Date: Tue Jun 30 18:00:03 2026
Config: /etc/btrbk/btrbk.conf
Options:
snapshot: No backups created
snapshot: Preserved all backups
Legend:
=== up-to-date subvolume (source snapshot)
+++ created subvolume (source snapshot)
--- deleted subvolume
*** received subvolume (non-incremental)
>>> received subvolume (incremental)
--------------------------------------------------------------------------------
/mnt/btrfs_root/@
+++ /mnt/btrfs_root/.snapshots/btrbk/@.20260630T1800
/mnt/btrfs_root/@home_username
+++ /mnt/btrfs_root/.snapshots/btrbk/@home_username.20260630T1800
/mnt/btrfs_root/@root
+++ /mnt/btrfs_root/.snapshots/btrbk/@root.20260630T1800
/mnt/btrfs_root/@var
+++ /mnt/btrfs_root/.snapshots/btrbk/@var.20260630T1800
/mnt/btrfs_root/@var_log
+++ /mnt/btrfs_root/.snapshots/btrbk/@var_log.20260630T1800
/mnt/btrfs_root/@var_spool
+++ /mnt/btrfs_root/.snapshots/btrbk/@var_spool.20260630T1800
```
5. `ls -1F /mnt/btrfs_root/.snapshots/btrbk/`:
```ls
'@.20260626T1842'/
'@.20260630T1744'/
'@.20260630T1744_1'/
'@.20260630T1800'/
'@home_username.20260626T1842'/
'@home_username.20260630T1744'/
'@home_username.20260630T1744_1'/
'@home_username.20260630T1800'/
'@root.20260626T1842'/
'@root.20260630T1744'/
'@root.20260630T1744_1'/
'@root.20260630T1800'/
'@var.20260626T1842'/
'@var.20260630T1744'/
'@var.20260630T1744_1'/
'@var.20260630T1800'/
'@var_log.20260626T1842'/
'@var_log.20260630T1744'/
'@var_log.20260630T1744_1'/
'@var_log.20260630T1800'/
'@var_spool.20260626T1842'/
'@var_spool.20260630T1744'/
'@var_spool.20260630T1744_1'/
'@var_spool.20260630T1800'/
```
*(Snapshot created.)*
Regards!
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the behavior with the shown configuration, first with /mnt/backuphdd unmounted and then mounted, using `btrbk -v snapshot`. Trace the `snapshot_create=ondemand` handling when the target is unavailable; done means local snapshots are created without a target, while cleanup is not performed after the target failure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, perl
- Domain
- cli, operating-systems
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100