对于名称中含有点和其他符号的目录,与 rsync 同步输出错误“无效参数 (22)”

Igo*_* V. 6 bash rsync filenames mkdir

我尝试使用 同步/dir1(ext4) 和/dir2(ntfs) rsync -azP,但出现以下错误:

rsync: recv_generator: mkdir "dir2/X.Y." failed: Invalid argument (22)

rsync: recv_generator: mkdir "dir2/CATSNDOGS\#123.11." failed: Invalid argument (22)
Run Code Online (Sandbox Code Playgroud)

请注意,目录X.Y.CATSNDOGS #123.11.是由其他方创建的,并按其名称命名,下载(使用 Python 脚本)到/dir1.

我无法cd进入这些目录,也ls -d没有列出它们。另一方面,基于 GUI 的nautilus完美地显示了它们以及其中的内容。

sch*_*ity 8

问题是rsync尝试在 NTFS 分区中创建包含非法字符的目录。来自命名约定

\n
\n

使用当前代码页中的任何字符作为名称,包括 Unicode 字符和扩展字符集中的字符 (128\xe2\x80\x93255),但以下字符除外:

\n
The following reserved characters:   \n > (less than)\n < (greater than)   \n : (colon)   \n " (double quote)   \n / (forward slash)   \n \\ (backslash)   \n | (vertical bar or pipe)   \n ? (question mark)   \n * (asterisk)\n
Run Code Online (Sandbox Code Playgroud)\n
\n

\n
\n

文件名或目录名请勿以空格或句点结尾。尽管底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。但是,可以将句点指定为名称的第一个字符。例如,“.temp”。

\n
\n
\n

您失败的目录有,或非法字符或以句点结尾。

\n