我在尝试使用 --exclude-from=excludefile.txt 选项从 rsync 命令中排除一些名称包含空格的文件夹时遇到了困难。到目前为止,我尝试过:
"Spaces in Folder Name"
'Spaces in Folder Name'
Spaces in Folder Name
"(fullpath)/Spaces in Folder Name"
'(fullpath)/Spaces in Folder Name'
(fullpath)/Spaces in Folder Name
and
"./Spaces in Folder Name"
'./Spaces in Folder Name'
./Spaces in Folder Name
但这些都不起作用。有什么想法吗?
答案1
有一个部分叫做高级用法在里面rsync
手册页其中写道:
高级用法
旧版本
rsync
要求在中使用引号空格SRC
,如以下示例:rsync -av host:'dir1/file1 dir2/file2' /dest rsync host::'modname/dir1/file1 modname/dir2/file2' /dest
这种分词在最新的 rsync 中仍然有效(默认),但不如第一种方法那么容易使用。
如果您需要传输包含空格的文件名,您可以指定
--protect-args
(-s
) 选项,或者您需要以远程 shell 可以理解的方式转义空格。例如:rsync -av host:'file\ name\ with\ spaces' /dest
所以我认为您只需要使用-s
命令行选项。
另一种方法是以某种方式在每个空格前面添加一个反斜杠,我认为这会更难做到。另外,如果您不需要此高级功能,那么就-s
足够了。
此外,该模式预计包含斜线和星号,如下所示:
# Matches the folder itself
Spaces in Folder Name
# Matches the sub-files directly inside the folder
Spaces in Folder Name/*
# Matches any file at any level found under folder
Spaces in Folder Name/**
# Or: matches the folder and any file under folder
Spaces in Folder Name/***
因此,您可能对最后一个感兴趣(请注意,它是在 2.6.7 版本中引入的,因此如果您有一个旧版本,那么普通名称 + 带有/
和两个的名称**
就适合您)。
答案2
我已设法通过使用以下语法来纠正它:
空间\ 在\ 文件夹\ 名称*
路径与“目标文件夹”相关,空格用反斜杠转义,并且必须在末尾放置一个神秘的星号。