从 Linux 复制到 Windows 时缺少文件

从 Linux 复制到 Windows 时缺少文件

我遇到了一种奇怪的情况,我不知道如何解决它:我在虚拟机上运行 Windows 10,它共享一个目录。此目录使用 SMB 挂载到 Linux 机器上。问题是,当我尝试将一个文件夹(里面有 700 个文件)从 Linux 复制到这个 SMB 目录时,有些文件不会被复制。但问题是,我尝试了、,cp甚至复制到目标,但仍然无法获取里面的所有文件。此外,丢失的文件数量并不总是相同的——我得到了 670 到 700 个文件,但方式不可靠。而且,这个“错误”是无声的,所以我甚至不知道什么时候以及为什么有些文件没有被复制。scprsyncunzip

我甚至不知道如何调试这个问题,无论如何都不知道如何修复它,所以非常感谢任何帮助。

答案1

原来是复制过程开始时出现了某种超时问题。经过几次测试,我能够隔离问题并重现它。在目标上创建目录和复制其中的文件之间,出现了超时,因此第一个文件(随机数)未被复制。为什么?我不知道。

原始流程如下:

/source/directory/files.zip --> /target/directory/files/file_1
                                                 /files/file_2
                                                 :
                                                 :
                                                 /files/file_x

所以,

unzip /source/directory/files.zip -d /target/directory

应该导致

/target/directory/files/file_1 to file_x

像上面一样解压缩,或者在不同的本地目录中解压缩,然后cpmv像这样

unzip /source/directory/files.zip
cp -r /source/directory/files /target/directory

或者

unzip /source/directory/files.zip
mv /source/directory/files /target/directory

效果不太好。

我最终完成了如下所示的两步脚本,并在两个步骤之间设置了延迟。

unzip /source/directory/files.zip
mkdir /target/directory/files
sleeep 2
mv /source/directory/files/* /target/directory/files

相关内容