(Solved) Directory symlinks restored as empty directories instead of symlinks

Hello there, asking for some help with this

I’m using:

Server: UrBackup Server v2.0.31.1544
Client: UrBackup Client Backend v2.0.30.0
OS (in both): Ubuntu 14.04.4 LTS
Kernel: 3.13.0-87-generic

My client directory contains some symlinks:

[23:52:01] vagrant backup-client01 / $ ll /backup
lrwxrwxrwx 1 vagrant vagrant   11 Jul 27 23:43 dir1 -> dir1.12-34b/
drwxr-xr-x 2 vagrant vagrant 1024 Jul 27 20:55 dir1.12-34b/
drwxr-xr-x 3 vagrant vagrant 1024 Jul 27 20:55 dir2.1-43b/
-rw-r--r-- 1 vagrant vagrant    0 Jul 27 20:55 f1.mkv
-rw-r--r-- 1 vagrant vagrant    0 Jul 27 20:55 f1.mpg
-rw-r--r-- 1 vagrant vagrant    0 Jul 27 20:55 f2.mkv

Backups are working fine, when I check the server backups directory (/backup/urbackup/ in my case), they looks fine:

[23:55:10] root backup-srv ~ $ ll /backup/urbackup/backup-client01/current/backup/
lrwxrwxrwx  1 urbackup urbackup    21 Jul 27 23:43 dir1 -> ../backup/dir1.12-34b/
drwxr-x---  2 urbackup urbackup  4096 Jul 27 20:55 dir1.12-34b/
drwxr-x---  3 urbackup urbackup  4096 Jul 27 20:55 dir2.1-43b/
-rwxr-x---  1 urbackup urbackup     0 Jul 27 20:55 f1.mkv
-rwxr-x---  1 urbackup urbackup     0 Jul 27 20:55 f1.mpg
-rwxr-x---  1 urbackup urbackup     0 Jul 27 20:55 f2.mkv

But when I restore current or past backups, the symlinks are restored as empty directories and the owner:group changes to root (please note dir1/ which was a symlink in the original ls)

[23:56:55] root backup-client01 / $ rm -rf /backup/*
[23:57:07] root backup-client01 / $ ls /backup/
[23:57:11] root backup-client01 / $ urbackupclientctl restore-start -b last
Starting restore. Waiting for backup server... |
Restore completed successfully.
[23:57:30] root backup-client01 / $ ll /backup/
drwxr-x--- 2 root    root     1024 Jul 27 23:57 dir1/
drwxr-xr-x 2 vagrant vagrant  1024 Jul 27 20:55 dir1.12-34b/
drwxr-xr-x 3 vagrant vagrant  1024 Jul 27 20:55 dir2.1-43b/
-rw-r--r-- 1 vagrant vagrant     0 Jul 27 20:55 f1.mkv
-rw-r--r-- 1 vagrant vagrant     0 Jul 27 20:55 f1.mpg
-rw-r--r-- 1 vagrant vagrant     0 Jul 27 20:55 f2.mkv

This wouldn’t be a problem for regular files, but when backing up applications (like Zimbra which is the one that I’m having problems now) that depends on symlinks, the restore is useless, unless manual intervention (and a lot of scripting) is performed for fixing symlinks/owners.

Any help would be appreciated

Thanks in advance,
Aldo

PS: My logs are available, but the scenario is easy to reproduce

Thanks for reporting. Will be fixed with the next version.

I can confirm that this issue has been solved :slight_smile:
Thanks a lot @uroni and keep the great work!!

Server: UrBackup Server v2.0.32.0
Client: UrBackup Client Controller v2.0.31.0
OS (in both): Ubuntu 14.04.4 LTS
Tested with Zimbra 8.6.0_GA_1200

[00:31:31] root mail ~/tmp $ cd /opt/
[00:31:41] root mail /opt $ ls
lost+found/  zimbra/ 
[00:31:42] root mail /opt $ /etc/init.d/zimbra status
Host mail.devopsec.local
	amavis                  Running
	antispam                Running
	antivirus               Running
	ldap                    Running
	logger                  Running
	mailbox                 Running
	memcached               Running
	mta                     Running
	opendkim                Running
	proxy                   Running
	service webapp          Running
	snmp                    Running
	spell                   Running
	stats                   Running
	zimbra webapp           Running
	zimbraAdmin webapp      Running
	zimlet webapp           Running
	zmconfigd               Running
[00:31:48] root mail /opt $ /etc/init.d/zimbra stop
Host mail.devopsec.local
	Stopping vmware-ha...skipped.
		/opt/zimbra/bin/zmhactl missing or not executable.
	Stopping zmconfigd...Done.
	Stopping zimlet webapp...Done.
	Stopping zimbraAdmin webapp...Done.
	Stopping zimbra webapp...Done.
	Stopping service webapp...Done.
	Stopping stats...Done.
	Stopping mta...Done.
	Stopping spell...Done.
	Stopping snmp...Done.
	Stopping cbpolicyd...Done.
	Stopping archiving...Done.
	Stopping opendkim...Done.
	Stopping amavis...Done.
	Stopping antivirus...Done.
	Stopping antispam...Done.
	Stopping proxy...Done.
	Stopping memcached...Done.
	Stopping mailbox...Done.
	Stopping logger...Done.
	Stopping dnscache...Done.
	Stopping ldap...Done.
[00:32:35] root mail /opt $ rm -rf zimbra
[00:32:40] root mail /opt $ ls
lost+found/
[00:32:57] root mail /opt $ urbackupclientctl restore-start -b last
Starting restore. Waiting for backup server...  done
Preparing restore... done
[==============================================] 100% 15.1773 GB/15.1836 GB at 8.84992 MBit/s
Restore completed successfully.
[00:36:51] root mail /opt $ ls
lost+found/  zimbra/
[00:37:17] root mail /opt $ ll zimbra
total 208
lrwxrwxrwx  1 root   root      34 Jun 27 00:40 altermime -> /opt/zimbra/altermime-0.3-20100505/
drwxr-xr-x  3 root   root    4096 Jun 27 00:40 altermime-0.3-20100505/
lrwxrwxrwx  1 root   root      29 Jun 27 00:40 amavisd -> /opt/zimbra/amavisd-new-2.9.0/
drwxrwxr-x  4 root   root    4096 Jun 27 00:40 amavisd-new-2.9.0/
lrwxrwxrwx  1 root   root      27 Jun 27 00:41 aspell -> /opt/zimbra/aspell-0.60.6.1/
drwxr-xr-x  6 root   root    4096 Jun 27 00:41 aspell-0.60.6.1/
drwxr-xr-x  2 zimbra zimbra  4096 Jun 27 22:53 backup/
lrwxrwxrwx  1 root   root      22 Jun 27 00:40 bdb -> /opt/zimbra/bdb-5.2.36/
drwxr-xr-x  6 root   root    4096 Jun 27 00:40 bdb-5.2.36/
drwxr-xr-x  2 root   root    4096 Jun 27 00:40 bin/
lrwxrwxrwx  1 root   root      32 Jun 27 00:40 cbpolicyd -> /opt/zimbra/cbpolicyd-2.1.0-beta/
drwxrwxr-x  5 root   root    4096 Jun 27 00:40 cbpolicyd-2.1.0-beta/
lrwxrwxrwx  1 root   root      25 Jun 27 00:40 clamav -> /opt/zimbra/clamav-0.98.4/
drwxr-xr-x  9 root   root    4096 Jun 27 00:40 clamav-0.98.4/
drwxr-xr-x 11 zimbra zimbra  4096 Jul 29 23:56 conf/
-rw-------  1 root   root    2557 Jun 27 00:43 config.23056
drwxrwxr-x  2 root   root    4096 Jun 27 00:40 contrib/
lrwxrwxrwx  1 root   root      23 Jun 27 00:40 curl -> /opt/zimbra/curl-7.38.0/
drwxr-xr-x  6 root   root    4096 Jun 27 00:40 curl-7.38.0/
lrwxrwxrwx  1 root   root      32 Jun 27 00:40 cyrus-sasl -> /opt/zimbra/cyrus-sasl-2.1.26.2z/
drwxr-xr-x  6 root   root    4096 Jun 27 00:40 cyrus-sasl-2.1.26.2z/
drwxr-xr-x 14 zimbra zimbra  4096 Jun 27 00:41 data/
drwxrwxr-x  3 zimbra zimbra  4096 Jul 29 23:58 db/
drwxr-xr-x  2 zimbra zimbra  4096 Jun 27 00:40 docs/
lrwxrwxrwx  1 root   root      24 Jun 27 00:40 dspam -> /opt/zimbra/dspam-3.10.2/
drwxr-xr-x  7 root   root    4096 Jun 27 00:40 dspam-3.10.2/
drwxr-xr-x  4 zimbra zimbra  4096 Jun 27 00:41 extensions-extra/
drwxr-xr-x  2 zimbra zimbra  4096 Jun 27 00:41 fbqueue/
lrwxrwxrwx  1 root   root      25 Jun 27 00:40 heimdal -> /opt/zimbra/heimdal-1.5.2/
drwxr-xr-x  7 root   root    4096 Jun 27 00:40 heimdal-1.5.2/
lrwxrwxrwx  1 root   root      24 Jun 27 00:41 httpd -> /opt/zimbra/httpd-2.4.10/
drwxr-xr-x 15 root   root    4096 Jun 27 00:41 httpd-2.4.10/
drwxr-xr-x  3 zimbra zimbra  4096 Jun 27 00:50 index/
drwxr-xr-x  9 root   root    4096 Jun 27 00:40 j2sdk-20140721/
lrwxrwxrwx  1 root   root      26 Jun 27 00:40 java -> /opt/zimbra/j2sdk-20140721/
lrwxrwxrwx  1 root   root      46 Jun 27 00:41 jetty -> /opt/zimbra/jetty-distribution-9.1.5.v20140505/
drwxrwxr-x 14 root   root    4096 Jun 27 00:41 jetty-distribution-9.1.5.v20140505/
drwxrwxr-x  5 root   root    4096 Jun 27 00:41 lib/
drwxrwxr-x  4 root   root    4096 Jun 27 00:41 libexec/
lrwxrwxrwx  1 root   root      26 Jun 27 00:40 libtool -> /opt/zimbra/libtool-2.2.6b/
drwxr-xr-x  6 root   root    4096 Jun 27 00:40 libtool-2.2.6b/
drwxr-xr-x  2 zimbra zimbra 12288 Jul 29 23:59 log/
drwxrwxr-x  3 zimbra zimbra  4096 Jun 27 00:40 logger/
lrwxrwxrwx  1 root   root      46 Jun 27 00:41 mailboxd -> /opt/zimbra/jetty-distribution-9.1.5.v20140505/
lrwxrwxrwx  1 root   root      27 Jun 27 00:40 mariadb -> /opt/zimbra/mariadb-10.0.15/
drwxrwxr-x  8 root   root    4096 Jun 27 00:41 mariadb-10.0.15/
lrwxrwxrwx  1 root   root      28 Jun 27 00:41 memcached -> /opt/zimbra/memcached-1.4.17/
drwxr-xr-x  6 root   root    4096 Jun 27 00:41 memcached-1.4.17/
drwxr-xr-x  3 root   root    4096 Jun 27 00:40 mta/
lrwxrwxrwx  1 root   root      27 Jun 27 00:40 mysql -> /opt/zimbra/mariadb-10.0.15/
lrwxrwxrwx  1 root   root      28 Jun 27 00:40 net-snmp -> /opt/zimbra/net-snmp-5.7.2.1/
drwxr-xr-x  9 root   root    4096 Jun 27 00:40 net-snmp-5.7.2.1/
lrwxrwxrwx  1 root   root      30 Jun 27 00:41 nginx -> /opt/zimbra/nginx-1.2.0-zimbra/
drwxr-xr-x  6 root   root    4096 Jun 27 00:41 nginx-1.2.0-zimbra/
lrwxrwxrwx  1 root   root      26 Jun 27 00:40 opendkim -> /opt/zimbra/opendkim-2.9.2/
drwxr-xr-x  6 root   root    4096 Jun 27 00:40 opendkim-2.9.2/
lrwxrwxrwx  1 root   root      30 Jun 27 00:40 openldap -> /opt/zimbra/openldap-2.4.39.2z/
drwxrwxr-x  8 root   root    4096 Jun 27 00:40 openldap-2.4.39.2z/
lrwxrwxrwx  1 root   root      26 Jun 27 00:40 openssl -> /opt/zimbra/openssl-1.0.1j/
drwxr-xr-x  6 root   root    4096 Jun 27 00:40 openssl-1.0.1j/
lrwxrwxrwx  1 root   root      27 Jun 27 00:40 pflogsumm -> /opt/zimbra/pflogsumm-1.1.5/
drwxrwxr-x  4 root   root    4096 Jun 27 00:40 pflogsumm-1.1.5/
lrwxrwxrwx  1 root   root      29 Jun 27 00:40 postfix -> /opt/zimbra/postfix-2.11.1.2z/
drwxr-xr-x  6 root   root    4096 Jun 27 00:40 postfix-2.11.1.2z/
drwxr-xr-x  3 zimbra zimbra  4096 Jul 29 23:55 redolog/
lrwxrwxrwx  1 root   root      23 Jun 27 00:40 rsync -> /opt/zimbra/rsync-3.1.1/
drwxr-xr-x  4 root   root    4096 Jun 27 00:40 rsync-3.1.1/
drwxr-xr-x  2 root   root    4096 Jun 27 12:46 shells/
lrwxrwxrwx  1 root   root      28 Jun 27 00:40 snmp -> /opt/zimbra/net-snmp-5.7.2.1/
drwxr-xr-x  7 zimbra zimbra  4096 Jun 27 00:44 ssl/
drwxr-xr-x  4 zimbra zimbra  4096 Jun 27 00:51 store/
lrwxrwxrwx  1 root   root      24 Jun 27 00:40 tcmalloc -> /opt/zimbra/tcmalloc-2.2/
drwxr-xr-x  5 root   root    4096 Jun 27 00:40 tcmalloc-2.2/
lrwxrwxrwx  1 root   root      24 Jun 27 00:40 zeromq -> /opt/zimbra/zeromq-3.2.3/
drwxr-xr-x  5 root   root    4096 Jun 27 00:40 zeromq-3.2.3/
drwxrwxr-x  7 root   root    4096 Jun 27 00:40 zimbramon/
drwxrwxr-x  2 zimbra zimbra  4096 Jun 27 00:41 zimlets/
drwxr-xr-x 19 zimbra zimbra  4096 Jun 27 00:49 zimlets-deployed/
drwxr-xr-x 20 zimbra zimbra  4096 Jul 29 23:56 zmstat/
[00:37:20] root mail /opt $ ## Links are back, and metadata (owner:group) is ok
[00:37:37] root mail /opt $ /etc/init.d/zimbra start
Host mail.devopsec.local
	Starting ldap...Done.
	Starting zmconfigd...Done.
	Starting logger...Done.
	Starting mailbox...Done.
	Starting memcached...Done.
	Starting proxy...Done.
	Starting amavis...Done.
	Starting antispam...Done.
	Starting antivirus...Done.
	Starting opendkim...Done.
	Starting snmp...Done.
	Starting spell...Done.
	Starting mta...Done.
	Starting stats...Done.
	Starting service webapp...Done.
	Starting zimbra webapp...Done.
	Starting zimbraAdmin webapp...Done.
	Starting zimlet webapp...Done.
[00:38:20] root mail /opt $ ## It's working!!  Thx a lot