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

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions