Symlinks Not Working on macOS

Hello:

I’ve been running Urbackup through the Mac Backup Bouncer ( https://github.com/n8gray/Backup-Bouncer with a useful walk-through in http://www.hashbackup.com/technical/backup-bouncer ), and it’s thrown up an issue with symlinks not being backed up/restored correctly on macOS.

I’m using server version 2.2.9 and client version 2.2.5; I created a Backup Bouncer test image, duplicated it, backed it up, restored it (through the web GUI Restore button) and compared it against the pre-backup duplicate. There were two sets of symlink tests.

Here’s the first set of tests pre-backup:

Tools-HD:10-symlinks tools$ ls -la
total 48
drwxr-xr-x   8 tools     staff  272 16 Apr 11:32 .
drwxr-xr-x  23 tools     staff  850 16 Apr 11:32 ..
lrwxr-xr-x   1 tools     staff   12 16 Apr 11:32 broken_symlink -> ./bogus_file
lrwxr-xr-x   1 tools     staff   16 16 Apr 11:32 link2broken_symlink -> ./broken_symlink
-rw-r--r--   1 tools     staff   14 16 Apr 11:32 some-file
lrwxr-xr-x   1 tools     staff   11 16 Apr 11:32 symlink1 -> ./some-file
lrwxr-xr-x   1 tools     staff   11 16 Apr 11:32 symlink2 -> ./some-file
lrwxr-xr-x   1 tools     staff   10 16 Apr 11:32 symlink3 -> ./symlink1

And post-restore:

Tools-HD:10-symlinks tools$ ls -la
total 8
drwxr-xr-x   8 tools     staff  272 16 Apr 11:38 .
drwxr-xr-x  23 tools     staff  850 16 Apr 11:32 ..
-rwxr-x---   1 root      staff    0 16 Apr 11:38 broken_symlink
-rwxr-x---   1 root      staff    0 16 Apr 11:38 link2broken_symlink
-rw-r--r--   1 tools     staff   14 16 Apr 11:32 some-file
-rwxr-x---   1 root      staff    0 16 Apr 11:38 symlink1
-rwxr-x---   1 root      staff    0 16 Apr 11:38 symlink2
-rwxr-x---   1 root      staff    0 16 Apr 11:38 symlink3

And the second set of tests (for symlink ownership), pre-backup:

Tools-HD:15-symlink-ownership tools$ ls -la
total 32
drwxr-xr-x   6 tools     staff  204 16 Apr 11:32 .
drwxr-xr-x  23 tools     staff  850 16 Apr 11:32 ..
-rw-r--r--   1 tools     staff   14 16 Apr 11:32 some-file
lrwxr-xr-x   1 _www      _www    11 16 Apr 11:32 symlink1 -> ./some-file
lrwxr-xr-x   1 root      wheel   11 16 Apr 11:32 symlink2 -> ./some-file
lrwxr-xr-x   1 tools     staff   10 16 Apr 11:32 symlink3 -> ./symlink1

And post-restore:

Tools-HD:15-symlink-ownership tools$ ls -la
total 8
drwxr-xr-x   6 tools     staff  204 16 Apr 11:38 .
drwxr-xr-x  23 tools     staff  850 16 Apr 11:32 ..
-rw-r--r--   1 tools     staff   14 16 Apr 11:32 some-file
-rwxr-x---   1 root      staff    0 16 Apr 11:38 symlink1
-rwxr-x---   1 root      staff    0 16 Apr 11:38 symlink2
-rwxr-x---   1 root      staff    0 16 Apr 11:38 symlink3

The only error posted in the logs was a generated test extended attribute which was too large to be backed up (1.53726GB):

Eattry key 0 for "/backups/Tools HD-W123456/180416-1035/.hashes/bbtest/95-devices/devvn0" too large with size 1.53726 GB in "/backups/urbackup_tmp_files/58"

I hope that’s helpful!

Thanks,

Pants.

Ran it and I see a lot of … gaps on mac os. Hard links not being supported was already known. But I did not know macos had a file creation time. ACLs seem to need extra handling and are not included in the xattrs.

The bug where it gets stuck on device files on mac will be fixed with the next client version (now that I have a way to reproduce that one).

Thanks @uroni - much appreciated. I didn’t see all the errors you were listing - but I’m not an expert like you! :slight_smile:

Thanks for your hard work on this project - I feel it’s got a really strong future ahead of it, and looking forward to being a part of that!