Wim*_*Wim 5 windows linux rsync
我正在 Windows 和 Linux 系统之间同步一堆文件。由于并非所有 Windows 都关心大小写,因此 Windows 系统上的某些文件不再具有与 Linux 系统上相同的大小写。但是 rsync 现在将这些文件视为不同的文件并上传新副本。
是否可以让 rsync 忽略这种情况?
通常,Windows 会忽略大小写,但会保留大小写。如果您的文件名更改大小写,则一定是由于 rsync 以外的某个程序复制了文件并在复制过程中损坏了大小写。该程序可能配置错误。或者,如果您使用 Samba 服务器,则可能是配置错误。默认情况下,Samba 还保留文件名的大小写。
因此,也许您可以解决文件名意外更改大小写的问题。
然后,你会留下“只”的过滤器区分大小写的问题。如果这最终成为您的情况,并且您不愿意应用 Wim 建议的补丁,您可以在过滤器中使用字符类。
它既丑陋又烦人,但它有效:
--exclude="[Tt][Ee][Mm][Pp]/"
Run Code Online (Sandbox Code Playgroud)
或在过滤器文件中:
- Temp/
- temp/
- TEMP/
Run Code Online (Sandbox Code Playgroud)
或更通用但不可读的:
- [Tt][Ee][Mm][Pp]/
Run Code Online (Sandbox Code Playgroud)
如果要自动将过滤器文件转换为这种语法,可以使用以下 perl 命令:
perl -i.bak -pe 's/([a-z])/[\U$1\E$1]/g' your_rsync-filter.txt
Run Code Online (Sandbox Code Playgroud)
并将其转换回人类可读的形式
perl -i.bak -pe 's/ \[ [A-Z] ([a-z]) \] /$1/xg' your_rsync-filter.txt
Run Code Online (Sandbox Code Playgroud)
(该-i.bak
选项进行备份并就地转换文件而不是标准输出)
至少对于过滤器和包含/排除选项,在 rsync 中有一个不区分大小写的标志会非常好。在那之前,唯一的选择似乎是补丁或复杂的类似正则表达式的语法。
归档时间: |
|
查看次数: |
10243 次 |
最近记录: |