rsync 在 cifs 安装的驱动器上创建 0 字节文件

har*_*jay 4 mount samba cifs rsync

嗨,自 Ubuntu 10.04 以来,我一直在成功地使用 rsync 将文件从我的外部驱动器备份到 cifs 安装的共享驱动器

现在在 13.04 中,我使用以下命令获得了一个奇怪的行为

rsync -av /media/hari/MyExtDrive/  /home/MyDFSMountedCIFSDrive/DataBackup/
Run Code Online (Sandbox Code Playgroud)

“MyDFMSMountedCIFSDrive”使用选项挂载

sudo mount -t cifs //10.1.1.11/dfsroot/archive/ /home/MyDFSMountedCIFSDrive -o user=hari,rw,nosuid,gid=1000,uid=1000,hard
Run Code Online (Sandbox Code Playgroud)

现在当我使用 rsync 命令时。整个目录结构已创建。我在子目录中有几个文件带有“img”扩展名。子目录也被适当地创建。但是对于这些子目录中的文件,我有一个以“.”开头的零字节文件。并有一个奇怪的十六进制扩展名

实际文件

P_248509-A_060.img   36MB
Run Code Online (Sandbox Code Playgroud)

而是 rsync 创建(注意开头的“.”)

.P_248509-A_060.img.CluiPK  0 bytes
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么

我可以使用“cp -R”并准确地复制这些文件。我还没有看到 rsync 在我的 10.04 系统上这样做。有任何想法吗?

har*_*jay 5

所以我让这个工作,但我仍然不知道为什么它失败了。

首先,我了解到的 0 字节的 .P_248509-A_060.img.CluiPK 文件是一个临时文件。rsync 创建这些临时文件,然后将其移至最终名称。

我想通了这是因为在 10.04 的盒子上,一个类似的 rsync 给出了消息说它无法将 .P_248509-A_060.img.CluiPK 重命名为 P_248509-A_060.img

我还在这里阅读了这个问题其中第二个答案表明 .XXXX 文件是临时文件

最后,一旦我知道这些是临时文件,我就在 google 上搜索并在超级用户上找到了这个解决方案

所以用我的命令替换

rsync -av /media/hari/MyExtDrive/  /home/MyDFSMountedCIFSDrive/DataBackup/ -T /tmp
Run Code Online (Sandbox Code Playgroud)

或者

rsync -av /media/hari/MyExtDrive/  /home/MyDFSMountedCIFSDrive/DataBackup/ --inplace
Run Code Online (Sandbox Code Playgroud)

文件被准确、完整地复制。

现在我的问题是,为什么 rsync 没有告诉我它因为临时文件的某些问题而失败。我很困惑,因为它默默地失败了。我不知道源磁盘或 cifs 安装的目标驱动器是什么导致它静默失败!