如何验证SD卡文件已全部迁移至Linux目录及其子目录?
验证SD卡文件已完整复制到目标目录的方法
方案1:用rsync做快速校验(推荐)
rsync不仅能复制文件,还能直接对比源目录和目标目录的差异,而且不需要实际修改文件。假设你的SD卡挂载在/mnt/sdcard,执行以下命令:
rsync -avn --delete /mnt/sdcard/ /home/pepa/dir1/
参数说明:
-a:归档模式,保留文件权限、时间戳等所有属性-v:显示详细操作信息-n:模拟运行,不会实际修改任何文件--delete:会提示目标目录比SD卡多的文件(比如你后来创建的子目录),可以忽略这些。如果命令执行后没有输出,说明SD卡的所有文件都已存在于dir1或其子目录中;有输出的话,列出的就是未复制成功的文件。
方案2:用diff直接对比目录
diff可以递归对比两个目录的所有内容,命令如下:
diff -r /mnt/sdcard/ /home/pepa/dir1/
-r:递归检查所有子目录
如果没有任何输出,说明两个目录的文件完全一致;如果有输出,会明确指出哪些文件在SD卡存在但目标目录没有,或者内容有差异。注意:目标目录里你后来新增的文件会被标记为“仅在目标存在”,这些可以不用管。
方案3:校验文件内容一致性(严谨版)
如果需要确认文件内容完全一致(不只是文件名匹配),可以用校验和对比:
- 先在SD卡目录生成所有文件的MD5校验清单:
cd /mnt/sdcard find . -type f -exec md5sum {} \; > /tmp/sdcard_md5.txt
- 再在目标目录生成校验清单:
cd /home/pepa/dir1 find . -type f -exec md5sum {} \; > /tmp/dir1_md5.txt
- 对比两个清单,找出SD卡有但目标没有的文件:
grep -v -f /tmp/dir1_md5.txt /tmp/sdcard_md5.txt
如果输出为空,说明SD卡所有文件的内容都已在目标目录存在;有输出的话,就是内容不匹配或者缺失的文件。
内容的提问来源于stack exchange,提问作者user2955884
相关产品推荐
相关产品推荐

