为什么 rsync 在目标上创建一个未命名的文件夹?

为什么 rsync 在目标上创建一个未命名的文件夹?

我使用以下脚本将带有前缀的文件夹old_及其内容放在 USB 硬盘上。由于某种原因,rsync创建一个无名文件夹,将数据复制到其中。

rsync -vrhm --stats --progress --include='**/' --include='**/old_*/**'  --exclude='@Recycle' --exclude='*' /share/Projekte/ /share/02-18-Harburg/

我怎样才能改变这个?
另外,我想知道是否可以rsync删除以前从源传输的这些文件?

编辑:

这是我尝试选项卡目录时得到的结果:

$ cd 02-18-Harburg/^M/2017/

该文件夹具有以下名称:

$ ls -lisah
total 0
27 0 drwxr-xr-x 1 admin administrators 0 2018-05-18 13:32 ?/

在此输入图像描述

答案1

in^M02-18-Harburg/^M/2017/回车符。您的脚本具有 Windows 风格的 CRLF 行结尾,因此路径rsync显示为.它尽职尽责地创建了一条具有该名称的路径。/share/02-18-Harburg/<CR>

(该^M符号通常指的是击中Ctrl+M。将回车符作为字符的更常见的符号是\r。)

dos2unix用, 或 之类的内容修复脚本中结尾的行sed -i 's/\r//' script(假设是 GNU sed)。

ls不喜欢将文件名中的特殊字符输出到终端,因此它打印 a ?。这实际上是一件好事,因为无论如何你都无法在终端上看到真正的 CR。用于ls --quoting-style=shell-escape让它以不太明确的格式打印文件名。

相关内容