所以我正在尝试对我的 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 两个月了!)
我正在努力解决同样的问题,但对于我的内部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/)
我遇到了类似的问题,我偶然发现了这个线程,但我需要脚本在 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。