Windows 上的 rsync + 非 ASCII 文件名

Windows 上的 rsync + 非 ASCII 文件名

rsync是否有可以在当前 Windows 版本上运行的版本可以处理非 ASCII 文件名吗?我检查过的每个版本(包括 cwRsync 和 rsync.net 客户端)都无法处理名称中包含 Unicode 字符的文件。

rsync如果不存在这样的版本,那么其他我可以使用什么工具来实现 Windows 和 Linux 之间带宽高效的文件同步?

我正在通过相对较慢的链接同步大型、很少更改的文件树。rsync 样式的同步和完整复制方法之间的差异很大。

答案1

rsync 提供了--iconv文件名字符编码转换选项。它接受参数以对源和目标编码进行细粒度控制。

来自 rsync 手册页:

[...] you can fully specify what conversion to do by giving a 
local and a remote charset separated by a comma in the 
order --iconv=LOCAL,REMOTE, e.g.  --iconv=utf8,iso88591.

答案2

如果你尝试使用 DeltaCopy,那么请从以下位置获取支持 UTF-8 的 cygwin (=cygwin1.dll) http://www.oki-osk.jp/esc/utf8-cygwin/这个解决方案对于日本来说是必须的,而且至少从 2006 年起他们就已经拥有了它。

使用 7zip 两次解压 dll 二进制文件。然后从 DeltaCopy 程序文件夹中删除原始 cygwin1.dll 并替换新的。注意:旧的和新的外观完全相同。要清楚哪个是新的。在客户端和服务器上更改 dll 后,两台 Windows 计算机之间的传输正常。遗憾的是,当客户端控制台尝试显示具有多字节 UTF-8 字符的文件名时,它显示乱码,但传输正常。

我还没有尝试过如果备份服务器有 Linux 或其他类似于 UNIX 的操作系统(例如 Nas4Free)并且只有 Windows 机器中的客户端是固定的,会发生什么情况。

显然,rsync 可以处理 UTF-8,但 cygwin 不能。在 DeltaCopy 的 cygwin 中,UTF-8 文件名最初拼写错误,当尝试创建文件副本时,该文件似乎消失了。

相关内容