rsync-已发送增量文件列表但服务器上的文件未更新

rsync-已发送增量文件列表但服务器上的文件未更新

我正在使用台式计算机上的一些源文件。源文件在远程服务器上编译并运行。

由于我和服务器之间存在相当大的延迟,我决定使用rsync将文件复制到我的计算机,编辑它们,然后再次使用将它们同步回来rsync

但是有一个问题...rsync当我在我这边编辑完文件后将它们同步回服务器时,文件并没有更新。增量文件列表已发送,但文件内容未经修改。

这是我的 bash 会话的完整输出,它将详细解释发生的情况。

  • 我的本地机器上有一些文件。我使用 等编辑器编辑其中一个文件vim。文件结构相当通用。我有一个名为 的项目根目录2016-07-01,其中包含许多子文件夹和源文件。该文件夹仅以日期命名,作为版本控制的方法。

(重击)

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01
user@server's password: [enter password] 
sending incremental file list
2016-07-01/subfolder/
2016-07-01/subfolder/main.cpp

sent 2,238 bytes  received 272 bytes  557.78 bytes/sec
total size is 632,957  speedup is 252.17
  • 看起来 main.cpp 已经更新了,但是当我ssh进入服务器并用 打开它时vim,我发现它没有变化。为什么会发生这种情况?

  • 然后我再次运行相同的命令并产生以下输出......

(重击)

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01
user@server's password: [enter password] 
sending incremental file list

sent 1,342 bytes  received 36 bytes  110.24 bytes/sec
total size is 632,957  speedup is 459.33
  • 这次没有发送增量文件列表 - 我不知道为什么 - 就好像它rsync认为它已经更新了文件,因此实际上没有执行任何操作......

  • 如果我检查main.cpp一下,它肯定已经被改变了。

  • main.cpp服务器端没有变化。

我也尝试过使用-c标志来表示校验和而不是日期时间戳,再次看到了相同的结果。

答案1

简而言之,这是不是正确的命令...

$ rsync -av ./2016-07-01 user@server:./path-to-project/2016-07-01

正确的命令...

$ rsync -av ./2016-07-01 user@server:./path-to-project

笔记,目标没有正斜杠或目录名称- 当这些被忽略时,rsync将根据需要创建目录。我认为/2016-07-01意味着应该做两件不同的事情。不/意味着创建目录。我不确定2016-07-01如果添加/删除会产生什么效果/ 那里。也许有人可以澄清这一点。

还要注意,有 3 种方法可以寻址远程服务器上的目的地。

  • 使用上述方法,地址以 开头.。rsync 命令默认为用户主目录,因此这个到主目录的相对路径是有效的。

  • 你也可以从根目录输入完整的绝对路径。对我来说,这类似于/afs/servername/u/username/rest_of_path_from_home_dir

  • 最后,使用~扩展作为上述操作的快捷方式也将起作用。

相关内容