diff --git a/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java b/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java
index 15f8e8a2ac9372f0fe16e35e4e50246ce9ebc490..7a5414716379e5b438d74b47e6f1caf7bdefb6c0 100644
--- a/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java
+++ b/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java
@@ -46,7 +46,8 @@ public class FileDAO {
                 + "content_type, content_encoding, content_length, content_md5, name, n.location_id,\n"
                 + "accept_views, provide_views, l.location_type, n.path <> n.relative_path AS virtual_parent,\n"
                 + "(SELECT user_name FROM users WHERE user_id = creator_id) AS username, n.job_id,\n"
-                + "base_path, get_os_path(n.node_id) AS os_path, ? AS vos_path, false AS is_directory\n"
+                + "base_path, get_os_path(n.node_id) AS os_path, ? AS vos_path, false AS is_directory,\n"
+                + "type = 'link' AS is_link\n"
                 + "FROM node n\n"
                 + "JOIN location l ON (n.location_id IS NOT NULL AND n.location_id = l.location_id) OR (n.location_id IS NULL AND l.location_id = ?)\n"
                 + "LEFT JOIN storage s ON s.storage_id = l.storage_dest_id\n"
@@ -175,6 +176,7 @@ public class FileDAO {
                 + "(SELECT user_name FROM users WHERE user_id = n.creator_id) AS username,\n"
                 + "base_path, get_os_path(n.node_id) AS os_path, get_vos_path(n.node_id) AS vos_path,\n"
                 + "n.type = 'container' AS is_directory, n.name, n.location_id, n.job_id\n"
+                + "n.type = 'link' AS is_link\n"
                 + "FROM node n\n"
                 + "JOIN node p ON p.path @> n.path\n"
                 + "LEFT JOIN location l ON l.location_id = n.location_id\n"
@@ -206,7 +208,8 @@ public class FileDAO {
                 + "n.accept_views, n.provide_views, l.location_type, n.path <> n.relative_path AS virtual_parent,\n"
                 + "(SELECT user_name FROM users WHERE user_id = n.creator_id) AS username,\n"
                 + "base_path, get_os_path(n.node_id) AS os_path, get_vos_path(n.node_id) AS vos_path,\n"
-                + "n.type = 'container' AS is_directory, n.name, n.location_id, n.job_id\n"
+                + "n.type = 'container' AS is_directory, n.name, n.location_id, n.job_id,\n"
+                + "n.type = 'link' AS is_link\n"
                 + "FROM node n\n"
                 + "JOIN node p ON p.path @> n.path\n"
                 + "LEFT JOIN location l ON l.location_id = n.location_id\n"
@@ -286,6 +289,7 @@ public class FileDAO {
         fi.setContentMd5(rs.getString("content_md5"));
         fi.setContentType(rs.getString("content_type"));
         fi.setDirectory(rs.getBoolean("is_directory"));
+        fi.setLink(rs.getBoolean("is_link"));
         fi.setJobId(rs.getString("job_id"));        
         int locationId = rs.getInt("location_id");
         if (!rs.wasNull()) {
diff --git a/src/main/java/it/inaf/ia2/transfer/persistence/model/FileInfo.java b/src/main/java/it/inaf/ia2/transfer/persistence/model/FileInfo.java
index eab700b09c7ac34dfcebecb11c7284893caae1a4..49f859ee60641f049d86dda2d212faf080c29664 100644
--- a/src/main/java/it/inaf/ia2/transfer/persistence/model/FileInfo.java
+++ b/src/main/java/it/inaf/ia2/transfer/persistence/model/FileInfo.java
@@ -16,6 +16,7 @@ public class FileInfo {
     private boolean isPublic;
     private boolean virtualParent;
     private boolean directory;
+    private boolean link;
     private List<String> groupRead;
     private List<String> groupWrite;
     private String ownerId;
@@ -108,6 +109,14 @@ public class FileInfo {
     public void setDirectory(boolean directory) {
         this.directory = directory;
     }
+    
+    public boolean isLink() {
+        return link;
+    }
+
+    public void setLink(boolean link) {
+        this.link = link;
+    }
 
     public boolean hasVirtualParent() {
         return virtualParent;
diff --git a/src/main/java/it/inaf/ia2/transfer/service/FileCopyService.java b/src/main/java/it/inaf/ia2/transfer/service/FileCopyService.java
index cc37b3ffac272216021783a18bc4b4d08c3c23e5..b18e684b1e4e7b80868912fb2e201c72e2cff3fb 100644
--- a/src/main/java/it/inaf/ia2/transfer/service/FileCopyService.java
+++ b/src/main/java/it/inaf/ia2/transfer/service/FileCopyService.java
@@ -107,7 +107,7 @@ public class FileCopyService {
         for (FileInfo destinationFileInfo : destinationFileInfos) {
             LOG.trace("Processing {} destination", destinationFileInfo.getVirtualPath());
             // Cycle on files only
-            if (!destinationFileInfo.isDirectory()) {
+            if (!destinationFileInfo.isDirectory() && !destinationFileInfo.isLink()) {
                 // Calculate source file vos path
                 String correspondingSourceVosPath
                         = this.getCorrespondingSourceVosPath(sourceRootVosPath,