Anyone Successfully Restore using Mount and FUSE-T on macOS?

Hi!

I’m fairly new to restic. I’ve been using it for about a month or so, starting with 0.16.5. Everything has pretty much been working as advertised. Test restores wth restic restore are fine. But I’m especially excited about the 0.17.0 support for FUSE-T on macOS. For browsing and small restores, it sounds like a great addition. I’m having difficulty with it, though.

I can mount fine. I can also ls fine. But this is all I can do. I’ve tried cp, copying and pasting with the Finder, and even cat on a one line text file. None of these operations ever finish. I even let the cp of the one line text file run for 10 minutes or so.

I’m uncertain how to troubleshoot this further. Cryptomator and sshfs work fine for me. (They both use FUSE-T.). In the fuse-t.log file, I see some different mount options used. Cryptomator and sshfs mount options are pretty similar. In addition to mounting read only (as it should be, I think) restic uses some additional mount options that I’d have to look up. Perhaps the restic difficulty has something to do with mount options?

I’m running on an M3 MacBook Air with Sonoma 14.5, restic 0.17.0, and fuse-t 1.0.38. All are current versions. Restic and FUSE-T are both installed with Homebrew.

Can anyone else successfully restore using Mount and FUSE-T on Sonoma 14.5?

Thanks for any assistance,

—Brian

I had the same issues when I tried it. But have not reported it yet as did not have time to play more with it.

Good to know that it indeed can be some real restic issue and not my system miss-configuration:)

1 Like

When reporting a problem, please always include the actual symptoms of the problem, more specific than “it never completes”. Obvious information would be, what exact commands are you runnning (including relevant env vars, if any), and what is the complete output of those commands. Also, while you’re waiting on the command, I suppose you’re not seeing any relevant disk I/O or CPU being used by the relevant processes?

I just tried this myself. Using restic 0.17.0 on a test machine with macOS 13.6 and FUSE-T 1.0.38 installed via Homebrew, I could without problem mount a local (on-disk) repository, go into the latest snapshot and from there copy a test file. I could do this both using iTerm and using Finder.

Thanks, rawtaz. This is always good advice. I was uncertain how much detail to provide in my initial post, since this might be an issue that’s known already. Here are some redacted details:

I’m mounting with this:
restic mount --host /Users/xxxxx/resticmountpoint

Let’s just look at cp for now:
cp -Rpv <Mounted_Repository_Pathname> /Users/xxxxxx/tmp/resticrestores

After I issue this command, all I see is a blinking cursor. I’ve let it sit for as long as ten minutes. Ctrl-c fails to abort the process. It just prints ^C in the terminal and advances a line.

I do see the cp process when I run ps. To kill it, I close the terminal windows that’s running cp, and then I unmount with CTRL-c in the terminal window where I ran the restic mount command. It does unmount, but I get this error message as well:

"unable to umount (maybe already umounted or still in use?): unmount /Users/baruch/resticmountpoint: resource busy"

The amount of test data I’m trying to restore is in the kb or mb range. I doubt I’d notice a distinguishable bump in CPU or I/O from such a small sample.

I’m certain my cp command works properly otherwise. For example, when I try to copy from the original source directory on my laptop to the same restore directory, it works fine there.

I hope this helps.

–Brian

Can you clarify this, what are you actually trying to copy? Based on this example, you seem to be trying to copy the entire mounted repository. Can you give a more specific example of the path you’re trying to copy?

Good data point, rawtaz! I’m using macOS Terminal. Can you replicate your iTerm success with Terminal? If so, maybe there’s an issue with macOS 14.5, or with how FUSE-T interacts with it. Thanks!

Here’s a more specific example of just trying to copy a one line text file:

cp -Rpv /Users/xxxxxx/resticmountpoint/tags/tagname/latest/Users/xxxxx/ncdu-exclude.txt /Users/xxxxxx/tmp/resticrestores

It works for me with Terminal.app too, and I tried to replicate your process as closely as possible:

Terminal 1:
  ~ % cd go/src/github.com/restic/restic

  restic % export RESTIC_REPOSITORY=apa
  restic % export RESTIC_PASSWORD=apaapa
  restic % env | grep RESTIC
  RESTIC_REPOSITORY=apa
  RESTIC_PASSWORD=apaapa
  
  restic % ./restic version
  restic 0.17.0 (v0.17.0-0-g277c8f502) compiled with go1.22.5 on darwin/arm64
  
  restic % ls -la mnt 
  total 0
  drwxr-xr-x   2 xxxxxx  staff    64 29 Jul 22:34 .
  drwxr-xr-x  67 xxxxxx  staff  2144 29 Jul 22:51 ..
  restic % ./restic mount --host HOSTNAME.local mnt 
  repository ba330420 opened (version 1)
  found 2 old cache directories in /Users/xxxxxx/Library/Caches/restic, run `restic cache --cleanup` to remove them
  [0:00] 100.00%  14 / 14 index files loaded
  Now serving the repository at mnt
  Use another terminal or tool to browse the contents of this folder.
  When finished, quit with Ctrl-c here or umount the mountpoint.

Terminal 2:
  restic % ls -la mnt 
  total 0
  dr-xr-xr-x   1 xxxxxx  staff     0 29 Jul 22:52 .
  drwxr-xr-x  67 xxxxxx  staff  2144 29 Jul 22:51 ..
  dr-xr-xr-x   1 xxxxxx  staff     0 29 Jul 22:52 hosts
  dr-xr-xr-x   1 xxxxxx  staff     0 29 Jul 22:52 ids
  dr-xr-xr-x   1 xxxxxx  staff     0 29 Jul 22:52 snapshots
  dr-xr-xr-x   1 xxxxxx  staff     0 29 Jul 22:52 tags

  restic % ls -la /Users/xxxxxx/Downloads/testfile.txt
  ls: /Users/xxxxxx/Downloads/testfile.txt: No such file or directory

  restic % cp -Rpv /Users/xxxxxx/go/src/github.com/restic/restic/mnt/tags/foo/latest/bar/testfile.txt /Users/xxxxxx/Downloads 
  /Users/xxxxxx/go/src/github.com/restic/restic/mnt/tags/foo/latest/bar/testfile.txt -> /Users/xxxxxx/Downloads/testfile.txt

  restic % ls -la /Users/xxxxxx/Downloads/testfile.txt
  -rw-r--r--@ 1 xxxxxx  staff  7 13 Apr  2021 /Users/xxxxxx/Downloads/testfile.txt

  restic % file /Users/xxxxxx/Downloads/testfile.txt
  /Users/xxxxxx/Downloads/testfile.txt: ASCII text
  
  restic % 

Terminal 1 (pressing Ctrl-c):
    signal interrupt received, cleaning up
  restic % 

I don’t think the terminal application has to do with it, it’s more likely something to do with the OS version and FUSE-T compatibility, or of course some unhandled case in restic’s use of it :slight_smile: Unfortunately I don’t have a macOS 14.5 to try it with currently.

As you can see the unmounting also works fine. Are you really sure that you haven’t got something in your system that starts looking into the newly mounted directories after the mount starts? Perhaps some antivirus software, or perhaps it’s some system software like Spotlight related or whatever. You could try to spot something with lsof | grep /Users/xxxxxx/resticmountpoint or similar.

Hi All,

Just quickly, I can reproduce this problem, following the commands rawtaz used. cp command does not return.

I’m on M1 Max, Sonoma 14.5, with fuse-t 1.0.38 (installed using the fuse-t-macos-installer-1.0.38.pkg package file from the github repo releases), and restic v17.0

Sonoma 14.6 on Intel mac, fuse-t-macos 1.0.38 installed via brew, restic v17.0

The same problem - I can browse mounted repo but cp command does nothing, waits for hours without any output nor data transferred even for tiny restore. The same restore from the same repo via mount on linux works. Using Finder - the same issue. It shows copy in progress forever without any results.

I do not use any antivirus software. Less or more vanilla macOS installation.

I also use FUSE-T with rclone and veracrypt for mounting their served file systems and all works. So looks like something restic specific

Does any of you folks who can reproduce this on macOS 14.[56] have access to a lower version of macOS where you can try to reproduce it the same way?

Rawtaz,

You have indeed mirrored pretty closely what I’m doing. Thanks for all this effort!

I should mention that I’m using Wasabi on the back end for the repository. I’m uncertain if any particular back end would make a difference regarding the restore from mount issue. Everything else I’ve tried wth restic is working great, including the more typical restic restore.

Given Wasabi, and that I’m storing my actual environment variables in the macOS login keychain, my environment variables look a little different. But again, they work with restic for everything else I’ve tried, so I doubt this is part of the problem. Here’s what they look like:

export AWS_ACCESS_KEY_ID=$(security find-generic-password -a xxxxxxxxxxxx -s AWS_ACCESS_KEY_ID -w)
export AWS_SECRET_ACCESS_KEY=$(security find-generic-password -a xxxxxxxxxxxx -s AWS_SECRET_ACCESS_KEY -w)
export RESTIC_REPOSITORY=$(security find-generic-password -a xxxxxxxxxxxx -s RESTIC_REPOSITORY -w)
export RESTIC_PASSWORD_COMMAND=‘security find-generic-password -a xxxxxxxxxxxx -s RESTIC_PASSWORD -w’

I’d also like to take a moment to clarify the unmount error I’m seeing. It occurs only after I’ve tried to do something like a cp command, and experienced the restore from mount issue. It’s likely that there’s something that makes the system think the mount is still being accessed. I’ll bet this issue goes away if the restore from mount problem doesn’t happen. If I just mount, do some directory listings with ls, and then unmount, the unmount occurs without error.

Alas, I don’t have an older version of macOS with which to test. Of course, I’ll continue testing after I upgrade to macOS 14.6. I may give it a little while before upgrading.

I’d like to thank everyone else who has reported regarding the restore from mount issue, too. I’m sorry there’s a problem, but those of us with the issue are in good company.

–Brian

Okay, so there are two things to isolate; the macOS version and the backend. I’m guessing others who have had the problem are using other backends than Wasabi, so it’s probably not the backend.

You could apply DEBUG_LOG to see if you can spot anything suspicious there.

I have the same issue with Onedrive via rclone and S3 restic repos. IMO unlikely it has anything to do with specific beckend.

I have tested macOS 13.6.8 - all works (the same repos, the same fuse-t and restic).

macOS 14.5 and macOS 14.6 (the latest) do not work for me.

and as mentioned earlier - rclone and veracrypt work with fuse-t no issues. So it all points into restic/fuse-t combo. rclone and veracrypt are both open-source so hopefully it can be seen in their code what they do differently.

1 Like

@brianallenlevine Given what @kapitainsky wrote, would you like to open a bug report on GitHub? Besides describing the test, symptoms and findings so far, you an also reference this forum thread.

I added debugging in Terminal 1:
export DEBUG_LOG=/Users/xxxxxx/.restic/resticdebuglog.txt

Then I mounted the repository in Terminal 1:
restic mount --host xxxxxx /Users/xxxxxx/resticmountpoint

Then I opened a new terminal, Terminal 2, and ran my copy command there:
cp -Rpv /Users/xxxxxx/resticmountpoint/tags/tagname/latest/Users/xxxxx/ncdu-exclude.txt /Users/xxxxxx/tmp/resticrestores

I stared at my blinking cursor and let it run for a couple minutes. Then I closed Terminal 2 and unmounted with CTRL-c.

I think I’ve managed to take out all the unnecessary stuff from the debug log file. I’ve pasted what’s left below. There are error messages on lines 8 and 12. Then we keep repeating the lookup, create new file, and open file sequence for ncdu-exclude.txt until I close the Terminal window in which cp is running, and then CTRl-c to unmount.

So the cp command is definitely stuck in a loop. Beyond this, I don’t know how to interpret the log or take a stab at guessing the root cause of the issue.

2024/07/30 11:26:38 fuse/dir.go:196 fuse.(*dir).Lookup 1211 Lookup(ncdu-exclude.txt)
2024/07/30 11:26:38 fuse/dir.go:101 fuse.(*dir).open 1211 open dir resticrestores (ac08ce34)
2024/07/30 11:26:38 restic/tree.go:113 restic.LoadTree 1211 load tree ac08ce34ba4f8123618661bef2425f7028ffb9ac740578a3ee88684d2523fee8
2024/07/30 11:26:38 repository/repository.go:218 repository.(*Repository).LoadBlob 1211 load tree with id ac08ce34ba4f8123618661bef2425f7028ffb9ac740578a3ee88684d2523fee8 (buf len 0, cap 0)
2024/07/30 11:26:38 repository/repository.go:248 repository.(*Repository).loadBlob 1211 blob <tree/ac08ce34> found: <Blob (tree) ac08ce34, offset 0, length 54, uncompressed length 13>
2024/07/30 11:26:38 backend/readerat.go:30 backend.ReadAt 1211 ReadAt(<data/5411a5cc86>) at 0, len 54
2024/07/30 11:26:38 cache/file.go:42 cache.(*Cache).load 1211 Load(<data/5411a5cc86>, 54, 0) from cache
2024/07/30 11:26:38 cache/backend.go:165 cache.(*Backend).Load 1211 error loading <data/5411a5cc86> from cache:
2024/07/30 11:26:38 backend/readerat.go:41 backend.ReadAt 1211 ReadAt(<data/5411a5cc86>) ReadFull returned 54 bytes
2024/07/30 11:26:38 repository/repository.go:1122 repository.(*packBlobIterator).Next 1211 process blob <tree/ac08ce34>, skipped 0, <Blob (tree) ac08ce34, offset 0, length 54, uncompressed length 13>
2024/07/30 11:26:38 fuse/dir.go:205 fuse.(*dir).Lookup 1211 Lookup(ncdu-exclude.txt) → not found
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1211 fuse: → [ID=0x3e0] Lookup error=ENOENT
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1212 fuse: ← Getattr [ID=0x3e1 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1212 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1212 fuse: → [ID=0x3e1] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1213 fuse: ← Getattr [ID=0x3e2 Node=0x31 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1213 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1213 fuse: → [ID=0x3e2] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1214 fuse: ← Getattr [ID=0x3e3 Node=0x31 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1214 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1214 fuse: → [ID=0x3e3] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1215 fuse: ← Getattr [ID=0x3e4 Node=0x31 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1215 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1215 fuse: → [ID=0x3e4] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1216 fuse: ← Getattr [ID=0x3e5 Node=0x31 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1216 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1216 fuse: → [ID=0x3e5] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1217 fuse: ← Getattr [ID=0x3e6 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1217 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1217 fuse: → [ID=0x3e6] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1218 fuse: ← Lookup [ID=0x3e7 Node=0xe Uid=501 Gid=20 Pid=0] ncdu-exclude.txt
2024/07/30 11:26:38 fuse/dir.go:196 fuse.(*dir).Lookup 1218 Lookup(ncdu-exclude.txt)
2024/07/30 11:26:38 fuse/file.go:40 fuse.newFile 1218 create new file for ncdu-exclude.txt with 1 blobs
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1218 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1218 fuse: → [ID=0x3e7] Lookup 0x38 gen=0 valid=1m0s attr={valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–}
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1219 fuse: ← Open [ID=0x3e8 Node=0x38 Uid=501 Gid=20 Pid=0] dir=false fl=OpenReadOnly
2024/07/30 11:26:38 fuse/file.go:70 fuse.(*file).Open 1219 open file ncdu-exclude.txt with 1 blobs
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1219 fuse: → [ID=0x3e8] Open 0x1 fl=0
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1220 fuse: ← Getattr [ID=0x3e9 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1220 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1220 fuse: → [ID=0x3e9] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1221 fuse: ← Getattr [ID=0x3ea Node=0x38 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1221 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1221 fuse: → [ID=0x3ea] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1222 fuse: ← Getattr [ID=0x3eb Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1222 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1222 fuse: → [ID=0x3eb] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1223 fuse: ← Getattr [ID=0x3ec Node=0x38 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1223 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1223 fuse: → [ID=0x3ec] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1224 fuse: ← Getattr [ID=0x3ed Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1224 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1224 fuse: → [ID=0x3ed] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1225 fuse: ← Getattr [ID=0x3ee Node=0x38 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1225 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1225 fuse: → [ID=0x3ee] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1226 fuse: ← Getattr [ID=0x3ef Node=0x38 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1226 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1226 fuse: → [ID=0x3ef] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1227 fuse: ← Getattr [ID=0x3f0 Node=0x38 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1227 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1227 fuse: → [ID=0x3f0] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1228 fuse: ← Getattr [ID=0x3f1 Node=0x38 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1228 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1228 fuse: → [ID=0x3f1] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1229 fuse: ← Getattr [ID=0x3f2 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1229 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1229 fuse: → [ID=0x3f2] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1230 fuse: ← Lookup [ID=0x3f3 Node=0xe Uid=501 Gid=20 Pid=0] ncdu-exclude.txt
2024/07/30 11:26:38 fuse/dir.go:196 fuse.(*dir).Lookup 1230 Lookup(ncdu-exclude.txt)
2024/07/30 11:26:38 fuse/file.go:40 fuse.newFile 1230 create new file for ncdu-exclude.txt with 1 blobs
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1230 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1230 fuse: → [ID=0x3f3] Lookup 0x39 gen=0 valid=1m0s attr={valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–}
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1231 fuse: ← Open [ID=0x3f4 Node=0x39 Uid=501 Gid=20 Pid=0] dir=false fl=OpenReadOnly
2024/07/30 11:26:38 fuse/file.go:70 fuse.(*file).Open 1231 open file ncdu-exclude.txt with 1 blobs
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1231 fuse: → [ID=0x3f4] Open 0x2 fl=0
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1232 fuse: ← Getattr [ID=0x3f5 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1232 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1232 fuse: → [ID=0x3f5] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1233 fuse: ← Getattr [ID=0x3f6 Node=0x39 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1233 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1233 fuse: → [ID=0x3f6] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1234 fuse: ← Getattr [ID=0x3f7 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1234 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1234 fuse: → [ID=0x3f7] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1235 fuse: ← Getattr [ID=0x3f8 Node=0x39 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1235 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1235 fuse: → [ID=0x3f8] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1236 fuse: ← Getattr [ID=0x3f9 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1236 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1236 fuse: → [ID=0x3f9] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1237 fuse: ← Getattr [ID=0x3fa Node=0x39 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1237 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1237 fuse: → [ID=0x3fa] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1238 fuse: ← Getattr [ID=0x3fb Node=0x39 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1238 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1238 fuse: → [ID=0x3fb] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1239 fuse: ← Getattr [ID=0x3fc Node=0x39 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1239 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1239 fuse: → [ID=0x3fc] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1240 fuse: ← Getattr [ID=0x3fd Node=0x39 Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1240 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1240 fuse: → [ID=0x3fd] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1241 fuse: ← Getattr [ID=0x3fe Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1241 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1241 fuse: → [ID=0x3fe] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1242 fuse: ← Lookup [ID=0x3ff Node=0xe Uid=501 Gid=20 Pid=0] ncdu-exclude.txt
2024/07/30 11:26:38 fuse/dir.go:196 fuse.(*dir).Lookup 1242 Lookup(ncdu-exclude.txt)
2024/07/30 11:26:38 fuse/file.go:40 fuse.newFile 1242 create new file for ncdu-exclude.txt with 1 blobs
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1242 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1242 fuse: → [ID=0x3ff] Lookup 0x3a gen=0 valid=1m0s attr={valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–}
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1243 fuse: ← Open [ID=0x400 Node=0x3a Uid=501 Gid=20 Pid=0] dir=false fl=OpenReadOnly
2024/07/30 11:26:38 fuse/file.go:70 fuse.(*file).Open 1243 open file ncdu-exclude.txt with 1 blobs
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1243 fuse: → [ID=0x400] Open 0x3 fl=0
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1244 fuse: ← Getattr [ID=0x401 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1244 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1244 fuse: → [ID=0x401] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1245 fuse: ← Getattr [ID=0x402 Node=0x3a Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1245 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1245 fuse: → [ID=0x402] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1246 fuse: ← Getattr [ID=0x403 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1246 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1246 fuse: → [ID=0x403] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1247 fuse: ← Getattr [ID=0x404 Node=0x3a Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1247 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1247 fuse: → [ID=0x404] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1248 fuse: ← Getattr [ID=0x405 Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1248 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1248 fuse: → [ID=0x405] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1249 fuse: ← Getattr [ID=0x406 Node=0x3a Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1249 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1249 fuse: → [ID=0x406] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1250 fuse: ← Getattr [ID=0x407 Node=0x3a Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1250 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1250 fuse: → [ID=0x407] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1251 fuse: ← Getattr [ID=0x408 Node=0x3a Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1251 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1251 fuse: → [ID=0x408] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1252 fuse: ← Getattr [ID=0x409 Node=0x3a Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/file.go:49 fuse.(*file).Attr 1252 Attr(ncdu-exclude.txt)
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1252 fuse: → [ID=0x409] Getattr valid=1m0s ino=9273270375574213616 size=37 mode=-rw-r–r–
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1253 fuse: ← Getattr [ID=0x40a Node=0xe Uid=501 Gid=20 Pid=0] 0x0 fl=0
2024/07/30 11:26:38 fuse/dir.go:124 fuse.(*dir).Attr 1253 Attr()
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1253 fuse: → [ID=0x40a] Getattr valid=1m0s ino=6772515697055402813 size=0 mode=drwxr-x—
2024/07/30 11:26:38 restic/cmd_mount.go:159 main.runMount.func1 1254 fuse: ← Lookup [ID=0x40b Node=0xe Uid=501 Gid=20 Pid=0] ncdu-exclude.txt

Rawtaz, I’ll try to open a bug report on GitHub when I have a chance. I’ve never done this before, but I guess it’s time I learned. :slight_smile:

1 Like

To add onto this, I tried to test it… and it freezes my Finder completely after a few moments of trying to navigate into folders, until I kill restic.

restic 0.17.0 compiled with go1.22.5 on darwin/arm64

@akrabu So far it seems that macOS 13 works fine and the problem only happens on macOS 14, so can you tell us what macOS version you are on?