diff --git a/meta/classes/deb-dl-dir.bbclass b/meta/classes/deb-dl-dir.bbclass
index 3b1517dc..1fe9d40c 100644
--- a/meta/classes/deb-dl-dir.bbclass
+++ b/meta/classes/deb-dl-dir.bbclass
@@ -78,39 +78,46 @@ debsrc_download() {
 
 deb_dl_dir_import() {
     export pc="${DEBDIR}/${2}"
-    export rootfs="${1}"
-    sudo mkdir -p "${rootfs}"/var/cache/apt/archives/
+    export sc="${1}/var/cache/apt/archives/"
+    sudo mkdir -p "${sc}"
     [ ! -d "${pc}" ] && return 0
-    flock -s "${pc}".lock -c '
+    export tf=$(ls -1 "${pc}"/*.deb | head -n1)
+    [ ! -e "${tf}" ] && return 0
+    flock -Fs "${pc}".lock sudo -Es << 'EOFSUDO'
         set -e
         printenv | grep -q BB_VERBOSE_LOGS && set -x
 
-        sudo find "${pc}" -type f -iname "*\.deb" -exec \
-            cp -n --no-preserve=owner -t "${rootfs}"/var/cache/apt/archives/ {} +
-    '
+        rm -f "${sc}/"$(basename "${tf}")
+        ln -Pf -t "${sc}" "${tf}" 2>/dev/null ||:
+        if [ -r "${tf}" ]; then
+            find "${pc}" -type f -iname "*\.deb" -exec \
+                ln -Pf -t "${sc}" {} +
+        else
+            find "${pc}" -type f -iname "*\.deb" -exec \
+                cp -np owner --reflink=auto -t "${sc}" {} +
+        fi
+EOFSUDO
 }
 
 deb_dl_dir_export() {
     export pc="${DEBDIR}/${2}"
-    export rootfs="${1}"
+    export sc="${1}/var/cache/apt/archives/"
     mkdir -p "${pc}"
-    flock "${pc}".lock -c '
+    export tf=$(ls -1 "${sc}"/*.deb | head -n1)
+    [ ! -e "${tf}" ] && return 0
+    flock -F "${pc}".lock sudo -Es << 'EOFSUDO'
         set -e
         printenv | grep -q BB_VERBOSE_LOGS && set -x
 
-        find "${rootfs}"/var/cache/apt/archives/ \
-            -maxdepth 1 -type f -iname '*\.deb' |\
-        while read p; do
-            # skip files from a previous export
-            [ -f "${pc}/${p##*/}" ] && continue
-            # can not reuse bitbake function here, this is basically
-            # "repo_contains_package"
-            package=$(find "${REPO_ISAR_DIR}"/"${DISTRO}" -name ${p##*/})
-            if [ -n "$package" ]; then
-                cmp --silent "$package" "$p" && continue
-            fi
-            sudo cp -n "${p}" "${pc}"
-        done
-        sudo chown -R $(id -u):$(id -g) "${pc}"
-    '
+        rm -f "${pc}/"$(basename "${tf}")
+        ln -Pf -t "${pc}" "${tf}" 2>/dev/null ||:
+        if [ -r "${tf}" ]; then
+            find "${sc}" -maxdepth 1 -type f -iname '*\.deb' \
+                -exec ln -P -t "${pc}" {} + 2>/dev/null ||:
+        else
+            find "${sc}" -maxdepth 1 -type f -iname '*\.deb' \
+                -exec cp -n --reflink=auto -t "${pc}" {} +
+        fi
+        chown -R $(id -u):$(id -g) "${pc}"
+EOFSUDO
 }
