支持长文件名的 Windows rsync,或者是一个好的替代方案?

支持长文件名的 Windows rsync,或者是一个好的替代方案?

我目前在 Linux 主机上使用 rsync 将内容从 Windows 复制到我的 Linux 机器。但我无法复制名称较长的文件。

我努力了增量复制同步, 和赛格威据我发现,当文件长度过长时,所有这些工具都会拒绝复制文件,这似乎在 255 个字符左右。

此问题已在 cwrsync 论坛上得到解决这里据说将来某个时候,当 cygwin 1.7 推出并支持 UTF8 时,这个问题可能会得到修复。甚至还有一个测试版本这里

我不太习惯在生产系统上使用测试版本。我希望有人知道另一个 rsync 选项。

作为 rsync 的替代方案,您是否知道另一种工具,我可以从 Windows 主机复制 Linux 上的目录结构,并且不会出现长文件或异常命名文件的问题?重要的是,我需要一个可以轻松跨 SSH 隧道工作的工具。有些系统超出了防火墙,我相信 SSH 是允许我使用的隧道。

答案1

我可能没抓住重点,但你有没有考虑过使用Robocopy在 Windows 上。它与 RSync 类似,但是您不能直接从应用程序中安排它。

可以通过为复制编写批处理文件然后创建计划任务来解决这个问题。Robocopy 是免费的,而且非常强大。我经常使用它通过 Samba 和网络在 Linux 和 Windows 之间复制文件,Robocopy 的恢复功能非常强大。

答案2

啊哈!您可以将 subst 与 rsync 一起使用。

如果您有一个深层目录树 d:\very\long\file\n\ame\etc\etc,那么实验表明您可以将 X: 替换为 d:\very\long\file\name\etc,然后 rsync 到 /cygdrive/x/whatever 并从 /cygdrive/x/whatever 进行 rsync。这在客户端和服务器端都有效。

现在,虽然您可以使用策略替换来减少文件名的长度,但我不知道这是否可以让您绕过 260 个字符的限制。这也可能不太方便。不过值得一试。

约翰·伦尼。

----8<----

http://www.ratsauce.co.uk/notablog/LongFilenames.asp对于长文件名我有些困惑。

我不知道有什么方法可以将 \\?\ 前缀添加到 Cygwin,而且显然当前版本的 Cygwin 内部不使用该前缀。据推测他们正在新版本中解决这个问题,这就是为什么它将支持长度超过 260 个字符的名称。我到处都使用 Cygwin rsync,因此像您一样,我热切地等待发布。

Cygwin rsync 还存在一些其他问题。除非您指定 cygwin=nontsec,否则它会弄乱 ACL,并且它往往会挂在非常大的目录中。在我死前要做的事情中,有一项是编写一个不会出现这些问题的 Windows 原生 rsync 版本。我相信这已经完成了,但只是商业版本,而不是公共领域版本。

JR

答案3

我建议你尝试齐奏 http://www.cis.upenn.edu/~bcpierce/unison/

它是 rsync 的一个非常有趣的替代品,因为它还可以提供双向同步(rsync 无法实现)。我已经在 2 台虚拟机上成功使用了它,对结果非常满意。

但就长文件名而言,我不知道它是否能按您希望的方式工作。

来自官方网站:

Unison 是一款适用于 Unix 和 Windows 的文件同步工具。它允许将一组文件和目录的两个副本存储在不同的主机上(或同一主机上的不同磁盘上),并分别进行修改,然后通过将每个副本中的更改传播到另一个副本来更新它们。

答案4

http://lists.samba.org/archive/rsync/2009-March/022955.html

http://www.okisoft.co.jp/esc/utf8-cygwin/有一个 UTF8 层,这会带来增加路径大小的副作用。根据其作者的说法,如果您想使用更多字符,您可以在补丁中增加常量。这似乎更加黑客化。

这可能不是远程同步的最佳选择,但它是 Windows rsync,声称支持更长的文件名。

相关内容