Bug: v0.19.0: CLI/GUI/AppImage: repository.config Over-writes Without Warning

tags: das, direct attached storage, usb drive, usb disk, file system repo, multiple filesystem repo

  • I create a filesystem based repo to a USB attached volume. Result:
    • A basic set of Kopia files appear as expected in the target dir.
    • $HOME/.config/kopia/repository.conf shows a "path:" of the expected path.
  • I create another filesystem based repo to an internal disk/attached volume. Result:
    • A basic set of Kopia files appear as expected in the target dir.
    • Only one $HOME/.config/kopia/repository.conf present.
    • This conf shows the "path:" of the second volume.

There is no trace of the conf for the USB attached volume!

Do these devs™ even lack the foresight to think people have multiple volumes/endpoints in/from their machines?!

cat repository.config && nowutc
───────┬────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: repository.config
───────┼────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ {
   2   │   "storage": {
   3   │     "type": "filesystem",
   4   │     "config": {
   5   │       "path": "/media/usb-disk/kopia/000",
   6   │       "fileMode": 384,
   7   │       "dirMode": 448,
   8   │       "dirShards": null,
   9   │       "listParallelism": 4
  10   │     }
  11   │   },
  12   │   "caching": {
  13   │     "cacheDirectory": "../../.cache/kopia/c51079195f889780",
  14   │     "maxCacheSize": 5242880000,
  15   │     "maxMetadataCacheSize": 5242880000,
  16   │     "maxListCacheDuration": 30
  17   │   },
  18   │   "hostname": "hostname",
  19   │   "username": "username",
  20   │   "description": "Test Repository 000",
  21   │   "enableActions": true,
  22   │   "formatBlobCacheDuration": 900000000000
  23   │ }
───────┴────────────────────────────────────────────────────────────────────────────────────────────────
20250424T233005UTC
───────┬────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: repository.config
───────┼────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ {
   2   │   "storage": {
   3   │     "type": "filesystem",
   4   │     "config": {
   5   │       "path": "/mnt/volume/kopia/012",
   6   │       "fileMode": 384,
   7   │       "dirMode": 448,
   8   │       "dirShards": null,
   9   │       "listParallelism": 4
  10   │     }
  11   │   },
  12   │   "caching": {
  13   │     "cacheDirectory": "../../.cache/kopia/c017f435748de612",
  14   │     "maxCacheSize": 5242880000,
  15   │     "maxMetadataCacheSize": 5242880000,
  16   │     "maxListCacheDuration": 30
  17   │   },
  18   │   "hostname": "hostname",
  19   │   "username": "username",
  20   │   "description": "Test Repository 012",
  21   │   "enableActions": true,
  22   │   "formatBlobCacheDuration": 900000000000
  23   │ }
───────┴────────────────────────────────────────────────────────────────────────────────────────────────
20250424T233037UTC

All I can do is say, that this works for me. I have a Kopia repo on an external disc which is connected through USB-C (on my Mac) and the path stated in the config represents the location of the repo on this external volume:

{
  "storage": {
    "type": "filesystem",
    "config": {
      "path": "/Volumes/BudysBackup/KopiaTest",
      "dirShards": null
    }
  },
  "caching": {
    "cacheDirectory": "../../Caches/kopia/3450c22b1be32a14",
    "maxCacheSize": 5242880000,
    "maxMetadataCacheSize": 5242880000,
    "maxListCacheDuration": 30
  },
  "hostname": "xxxxxxxx",
  "username": "xxxxxxxx",
  "description": "KopiaTest",
  "enableActions": false,
  "formatBlobCacheDuration": 900000000000
}

I created that repo for testing purposes using Kopia 0.18 on macOS.

Thanks for checking. Version, OS differences aside you’re able to successfully set multiple repos on your USB volume as something like /Volumes/BudysBackup/{KopiaTest-00,KopiaTest-01}, etc?

Am I correct in presuming you’re doing this thru the CLI? I presume so.

This may a misreport. I’ll retest when I get time later today.

Confirmed 20250425T223922UTC: two repo attempts on one volume result in one $HOME/.config/repository.conf:

  • "description": "Test Repository 000", with "path": "/media/mnt7/kopia/000",
  • "description": "Test Repository 001", with "path": "/media/mnt7/kopia/001",
  • cacheDirectory’s are different.

I’m calling this a bug in v0.19.0 unless proven otherwise.

Confirmed 20250425T224602UTC: two repo attempts on two volumes result in one $HOME/.config/repository.conf :

  • "description": "Test Repository 001", with "path": "/media/mnt7/kopia/001",
  • "description": "Test Repository 002", with "path": "/media/mnt12/kopia/002",
  • cacheDirectory’s are different.

I tell a lie: I’m using the CLI commands via the AppImage. That may be a distinction.

So I just connected a test repo to a WebDAV endpoint via the GUI. Now $HOME/.config/repository.conf shows "url": "https://<redacted> [...] & the credentials. cacheDirectory is, as expected, different.

20250426T065616UTC. Brilliant. Just brilliant.

Unreal. Adding a sole file system repo via CLI after creating a WebDAV one also overwrites $HOME/.config/repository.conf.

20250426T070144UTC. NINE YEARS.