我的 Windows 服务器上运行着一个虚拟 ubuntu 服务器。该服务器连接了 2 个外部硬盘,安装在 ubuntu 上。
现在我尝试运行 rsync 来同步我的桌面和 Windows 服务器上的目录。
我这样做如下:
rsync -av --update [email protected]:/home/seagate/Syncfolder/Pictures/ /syncs/pictures
是/syncs/pictures
的符号链接/cygdrive/c/../pictures
。所有这些符号链接均正常工作,并且远程目录也存在。
现在,当我运行上述 rsync 命令时,它会执行以下操作:
created directory /syncs/pictures\#015
这实际上会在我的 /syncs/ 文件夹中创建一个名为“pictures”的目录。因此不在符号链接中。在符号链接旁边:
$ ls
pictures pictures?
当我在目标位置添加尾部斜杠时:
rsync -av --update [email protected]:/home/seagate/Syncfolder/Pictures/ /syncs/pictures/
它在我的塔上的实际图片文件夹中创建一个名为“#015”(奇怪的点)的目录!
我认为这与编码有关?
我使用 notepad++ 编写了所有 bash 脚本并将其编码为 ANSI。
答案1
这里的根本问题(至少就我而言)是,所讨论的文件在脚本文件末尾有 CR+LF 字符的 Windows 约定,而不是仅使用 LF 的 *nix 约定。要解决此问题,您需要更改脚本文件本身,使其遵循 *nix 约定。上面的答案提出了几种很好的方法。一些编辑器(例如 Notepad++)内置了类似的功能。
答案2
我通过运行解决了这个问题dos2unix在 Windows 上,所有脚本文件均如此。在 Linux 上也可以这样做。