由于某种原因,通过 MTP 熔丝接口从手机复制文件有时会导致文件损坏,丢失最后几个字节。我想在成功传输后删除每个文件,但是不是如果有问题,请删除它们。该mv
命令没有选项--verify
。我可以编写一个简短的脚本来复制、检查和删除,但我想知道是否有更优雅的现有命令可以处理这个问题?
作为奖励,最好从外部验证命令指定校验和匹配和成功(在本例中)jpeginfo -c
。我思考短读取是随机发生的,但我还没有真正测试过坏文件实际上并没有以这种方式缓存(否则会以相同的方式错误地读取两次)。因此,类似的东西mv --verify --verifywith='jpeginfo -c'
是理想的(其中jpeginfo -c
有一个测试 JPEG 文件正确性的命令,我知道该命令会在这些特定的截断文件上返回错误)。
答案1
rsync 可以使用--remove-source-files
.来自man rsync
(强调我的):
这告诉 rsync 从发送端删除属于传输一部分的文件(即非目录),并且已在接收方成功复制。
我不确定它如何验证成功的复制,除了如果在此过程中发生错误它不会删除它们。很可能这就是它所做的一切。
但是,如果界面默默地损坏文件,我认为即使复制/检查/删除也不能真正解决您的问题,因为即使检查也可能会产生错误的结果。
既然你提到了 MTP 和手机,我猜你使用的是 Android。如果您考虑使用替代的 FUSE 接口,您可能会想尝试数据库文件系统。