从android的ADB PULL中排除文件夹

问题描述 投票:0回答:2

所以我正在尝试对我的 Galaxy S8 的 SD 卡(实际的可移动 SD 卡)进行完整备份。所以我使用Android ADB功能来使用这个;我使用以下命令来备份我的 SD 卡;

“adb pull /storage/5C60-4517/” --> 这完全没问题,但是我有一个问题。

在我的 SD 卡中,有一个名为“PCMusic” 的文件夹,这是存储我所有音乐的地方。这与我的 PC 和网络 HDD 上的音乐相同,所以我想做的是 排除这个唯一的文件夹,因为我的 PC HDD 上已经有所有这些音乐。 这个文件夹大约 17GB,所以浪费了足够多的时间备份我的 SD 卡时。该文件夹位于 SD 卡的根驱动器上。

所以我想知道使用命令,如何从 sd 卡的根目录中排除这个文件夹?我想备份 SD 卡中存在的所有其他内容,除了名为“PCMusic”的音乐文件夹。

谢谢。 (我只是个新手!使用 Android 两个月了!)

android adb
2个回答
3
投票

我正在努力解决同样的问题,但对于我的内部SD。我不认为 adb 有内置选项,但是如果你使用的是 linux;这个“for循环”与“find”命令(当然可以根据个人需要进行修改)相结合,在我的内部SD上为我工作:

for file_or_dir in "`sudo adb shell find /sdcard/ ! -name "'Music'" -maxdepth 1 -mindepth 1`"
    do sudo adb pull "${file_or_dir}" /path/to/target/sdcard
done

此命令使用“adb shell”在设备本身上执行“find”命令,这会生成 /sdcard 中与名称“Music”不匹配的所有文件和目录的列表(sudo adb shell find /sdcard !-name “音乐”-最大深度 1 -最小深度 1)。

然后它循环遍历这个文件和目录列表,并将它们单独拉到/path/to/target/sdcard/。 (如果您有适当的 udev 规则,则可以省略“sudo”)

(基于此 reddit 评论:https://www.reddit.com/r/Android/comments/hnfo5/adb_wildcard_pull/c1wsmic/


0
投票

我遇到了类似的问题,我偶然发现了这个线程,但我需要脚本在 Windows 上运行,所以我重新创建了它:

FOR /F "delims=" %%F IN ('adb shell find /sdcard/ ! -name "'Download'" -maxdepth 1 -mindepth 1') DO (adb pull -p -a "%%F" "\path\to\target\sdcard")

“delims=”解决路径中有空格的问题

%%F 在批处理文件中工作,%F 来自控制台

我添加到 adb pull -p (显示进度条)和 -a (保留原始修改日期)

我不需要 sudo (可能是因为我在 TWRP)

由于某些文件名/路径太长,某些文件夹确实崩溃了。为了解决这个问题,我复制了那些使用:

adb exec-out "tar -ch sdcard/Android | gzip -1" > "\path\to\target\sdcard\sdcard_Android.tar.gz"

此选项速度慢很多,但有效。

使用更新的 adb 版本非常重要,在使用 adb 30 进行 abd pull 期间,我获得了 75Mbps 的速度,使用 adb 42(我相信是撰写本文时最新的版本)时,我获得了大约 700Mbps。

使用 tar 和 gzip 我得到了大约 50Mbps。

© www.soinside.com 2019 - 2024. All rights reserved.