except KeyError:
                         u = member.uid
                     try:
-                        if member.issym() and hasattr(os, "lchown"):
+                        if member.issym and hasattr(os, "lchown"):
                             os.lchown(dirpath, u, g)
                         else:
                             os.chown(dirpath, u, g)
         '''
         Add member dir to be restored at the end
         '''
-        if self.canchown:
+        if not self.canchown:
             self._directories.append(DirItem(name=member.name, mode=member.mode,
                 mtime=member.mtime))
         else:
             self._directories.append(DirItem(name=member.name, mode=member.mode,
                 mtime=member.mtime, gname=member.gname, uname=member.uname,
-                uid=member.uid, gid=member.gid))
+                uid=member.uid, gid=member.gid, issym=member.issym()))
 
 class DirItem(object):
     def __init__(self, **kwargs):