Skip to content

Windows 11: resticprofile status fails #633

@GrassGlass

Description

@GrassGlass

resticprofile status does not work on Windows 11, for both schedule-permission: system and schedule-permission: user

Expected Behavior

resticprofile status should not error out on Windows if scheduling has been done properly.

Current Behavior

resticprofile status cannot find the scheduled jobs:

errors on profile default: failed to get status for job default/backup: cannot display status: scheduled job not found
failed to get status for job default/prune: cannot display status: scheduled job not found

Steps to Reproduce

Create a directory of such a structure, where file1 and file2 are files:

C:\Test
├── directory_to_backup
│   ├── file1
│   └── file2
├── password.txt
├── profiles.yaml
└── restic_backup_location

Here, profiles.yaml is

# yaml-language-server: $schema=https://creativeprojects.github.io/resticprofile/jsonschema/config.json

version: "1"

global:
  restic-binary: "C:/Users/redacted_usrname/scoop/apps/restic/current/restic.exe"

default:
  repository: "./restic_backup_location"
  password-file: "password.txt"

  backup:
    verbose: true
    source: "C:/Test/directory_to_backup"
    schedule: "*:00,30"
    schedule-permission: system
    schedule-priority: background
    schedule-log: resticprofile.log
    schedule-lock-mode: default
    schedule-lock-wait: 15m30s
  retention:
    before-backup: false
    after-backup: true
    keep-daily: 10
    keep-weekly: 5
    keep-monthly: 5
    keep-within: 14d
    keep-tag:
      - forever
    prune: false
    host: true
  prune:
    schedule: "sun 12:00"
    schedule-permission: system
    schedule-lock-wait: 1h

Now, we run the usual commands; I use absolute paths to show that that doesn't help.

PS C:\Test> C:\Users\redacted_usrname\scoop\apps\resticprofile\current\resticprofile.exe init
2026/04/19 12:19:30 using configuration file: profiles.yaml
2026/04/19 12:19:30 the configuration contains relative "path" items which may lead to unstable results in restic commands that select snapshots. Consider using absolute paths in "path" (and "source"), set "base-dir" or "source-base" in the profile or use "tag" instead of "path" (path = false) to select snapshots for restic commands.
Affected paths are:
> path (from source) "C:/Test/directory_to_backup" changes to "C:\Test\directory_to_backup"
2026/04/19 12:19:30 profile 'default': starting 'init'
created restic repository 88e98e721b at ./restic_backup_location

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
2026/04/19 12:19:32 profile 'default': finished 'init'
PS C:\Test> C:\Users\redacted_usrname\scoop\apps\resticprofile\current\resticprofile.exe -c "C:\Test\profiles.yaml" schedule --all

Profile (or Group) default: prune schedule
==========================================
  Original form: sun 12:00
Normalized form: Sun *-*-* 12:00:00
    Next elapse: Sun Apr 26 12:00:00 +08 2026
       (in UTC): Sun Apr 26 04:00:00 UTC 2026
       From now: 167h40m21s left

2026/04/19 12:19:39 restarting resticprofile in elevated mode...

Profile (or Group) default: prune schedule
==========================================
  Original form: sun 12:00
Normalized form: Sun *-*-* 12:00:00
    Next elapse: Sun Apr 26 12:00:00 +08 2026
       (in UTC): Sun Apr 26 04:00:00 UTC 2026
       From now: 167h40m15s left

2026/04/19 12:19:46 elevated user: scheduled job default/prune created

Profile (or Group) default: backup schedule
===========================================
  Original form: *:00,30
Normalized form: *-*-* *:00,30:00
    Next elapse: Sun Apr 19 12:30:00 +08 2026
       (in UTC): Sun Apr 19 04:30:00 UTC 2026
       From now: 10m14s left

2026/04/19 12:19:47 elevated user: scheduled job default/backup created
2026/04/19 12:19:47 elevated user: the configuration contains relative "path" items which may lead to unstable results in restic commands that select snapshots. Consider using absolute paths in "path" (and "source"), set "base-dir" or "source-base" in the profile or use "tag" instead of "path" (path = false) to select snapshots for restic commands.
Affected paths are:
> path (from source) "C:/Test/directory_to_backup" changes to "C:\Test\directory_to_backup"
2026/04/19 12:19:47 the configuration contains relative "path" items which may lead to unstable results in restic commands that select snapshots. Consider using absolute paths in "path" (and "source"), set "base-dir" or "source-base" in the profile or use "tag" instead of "path" (path = false) to select snapshots for restic commands.
Affected paths are:
> path (from source) "C:/Test/directory_to_backup" changes to "C:\Test\directory_to_backup"
PS C:\Test> C:\Users\redacted_usrname\scoop\apps\resticprofile\current\resticprofile.exe -c "C:\Test\profiles.yaml" status


2026/04/19 12:19:53 errors on profile default: failed to get status for job default/backup: cannot display status: scheduled job not found
failed to get status for job default/prune: cannot display status: scheduled job not found
PS C:\Test>

In particular, we note the failure of C:\Users\redacted_usrname\scoop\apps\resticprofile\current\resticprofile.exe -c "C:\Test\profiles.yaml" status:

2026/04/19 12:19:53 errors on profile default: failed to get status for job default/backup: cannot display status: scheduled job not found
failed to get status for job default/prune: cannot display status: scheduled job not found

We can check the status of the supposedly scheduled tasks:

PS C:\Test> Get-ScheduledTask | Where-Object { $_.TaskPath -like "*restic*" }

TaskPath                                       TaskName                          State     
--------                                       --------                          -----
\resticprofile backup\                         default backup                    Ready
\resticprofile backup\                         default prune                     Ready
PS C:\Test> (Get-ScheduledTask -TaskPath "\resticprofile backup\" -TaskName "default backup").Actions    


Id               :
Arguments        : --no-ansi --config C:\Test\profiles.yaml run-schedule backup@default
Execute          : C:\Users\redacted_usrname\scoop\apps\resticprofile\current\resticprofile.exe
WorkingDirectory : C:\Test
PSComputerName   :


PS C:\Test> (Get-ScheduledTask -TaskPath "\resticprofile backup\" -TaskName "default prune").Actions 


Id               :
Arguments        : --no-ansi --config C:\Test\profiles.yaml run-schedule prune@default
Execute          : C:\Users\redacted_usrname\scoop\apps\resticprofile\current\resticprofile.exe
WorkingDirectory : C:\Test
PSComputerName   :

We can also manually check that the scheduled tasks can run fine:

PS C:\test> schtasks /run /tn "\resticprofile backup\default backup"
SUCCESS: Attempted to run the scheduled task "\resticprofile backup\default backup".
PS C:\test> (Get-ScheduledTask -TaskPath "\resticprofile backup\" -TaskName "default backup") | Get-ScheduledTaskInfo


LastRunTime        : 19/4/2026 12:39:25 pm
LastTaskResult     : 0
NextRunTime        : 19/4/2026 1:00:00 pm
NumberOfMissedRuns : 0
TaskName           : default backup
TaskPath           : \resticprofile backup\
PSComputerName     :

We can also check that a new snapshot has been created. Here, I stat the snapshots directory for fun, via WSL:

(base) grassglass@Grass-LaTeX-Compiler:/mnt/c/Test$ bash -c -O extglob 'stat /mnt/c/Test/restic_backup_location/snapshots/!(.|..)'
  File: /mnt/c/Test/restic_backup_location/snapshots/80035ba9ffee4b2eb0984d63cebf2318dd8ac5079a3336f7138f9583ca634344
  Size: 444             Blocks: 0          IO Block: 512    regular file
Device: 0,67    Inode: 1125899907503915  Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/grassglass)   Gid: ( 1000/grassglass)
Access: 2026-04-19 12:39:26.129332700 +0800
Modify: 2026-04-19 12:39:26.129332700 +0800
Change: 2026-04-19 12:39:26.132291900 +0800
 Birth: -
  File: /mnt/c/Test/restic_backup_location/snapshots/d45c919fc13073adda5acfb0651bebdd21a86629f911c447e47c5f4cd4f0a8f9
  Size: 402             Blocks: 0          IO Block: 512    regular file
Device: 0,67    Inode: 844424930793228  Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/grassglass)   Gid: ( 1000/grassglass)
Access: 2026-04-19 12:30:01.703606900 +0800
Modify: 2026-04-19 12:30:01.703606900 +0800
Change: 2026-04-19 12:30:01.706851100 +0800
 Birth: -

One can freely change system to user in the YAML file and we still see the same issue.

System information

PS C:\Test> restic version  
restic 0.18.1 compiled with go1.25.1 on windows/amd64
PS C:\Test> resticprofile version
resticprofile version 0.33.1 commit 49102a5f476be6dcc15a9f0ac092ef23fc528075
PS C:\Test> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.26100.8115
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.26100.8115
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Courtesy of fastfetch:

OS: Windows 11 Pro (25H2) x86_64
Kernel: WIN32_NT 10.0.26200.8246
Shell: Windows PowerShell 5.1.26100.8115

Metadata

Metadata

Labels

bugSomething isn't workingwindowsConcerns only Windows OS

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions