ADB pulling files from /data/data fails due to symlinks. How to skip symlinks in ADB pull? I can run 

adb pull /data/data/com.xlythe.saolauncher/databases ./


or

adb pull /data/data/com.xlythe.saolauncher/files ./


and it works fine. However, if I try

adb pull /data/data/com.xlythe.saolauncher ./


It fails with the error:


  adb: error: failed to copy '/data/data/com.xlythe.saolauncher/lib' to
  './com.xlythe.saolauncher/lib': remote No such file or directory


It happens because the lib folder is actually a symlink to /data/app-lib/com.xlythe.saolauncher  

Now, if I wanted only com.xlythe.saolauncher I would just do it by hand copying one folder at time, but I want instead to pull all /data/data at once.
So I need a way to tell ADB to just skip symlinks instead of failing the copy.
Any hints?
Method 1:

If you're okay with getting the output file as a .tar archive, try this command:


  adb exec-out tar c data/data > data_backup.tar


Make sure to omit the leading / in your path. (Source)

Method 2:

If you want to copy file-wise, use the following script written by me:

#!/bin/bash
## Run as: ./filename.sh &lt;source_folder&gt; &lt;destination_folder&gt;
## If no &lt;destination_folder&gt; is provided, it's stored in current directory.

location=$1
if [ -z "$2" ]
  then
    destination=.
else
  destination=$2
fi

## Find the full path of all the files in the given directory, and retrieve each file one by one

while read line
do
  ## Create the directory where the file will reside, by removing the filename alone from the fullpath.
  ## Thanks to https://stackoverflow.com/a/9022471/5002496
  mkdir -p $destination"${line%/*}"
  adb pull $line $destination$line
done &lt;&lt;&lt; `adb shell find $location -type f`

## The find binary in Android doesn't seem to show symlinks when '-type f' option is used.
## Source: https://stackoverflow.com/a/16303559/5002496


Save it as adb_pull.sh, run chmod 777 adb_pull.sh and run it like:


  ./adb_pull.sh /data/data data_backup


All the contents from /data/data from Android device will be stored into data_backup folder.
(Note: DON'T specify the source folder like /data/data/ with an additional / after the folder name)

Tested and working on my Ubuntu 17.04, using an Android 7.1 device.
Note: To access /data partition completely via ADB, you need to run adb root. (more help..)