我正在尝试跑步rsync -a --files-from=~/.rsync_file_list ~/destination
,它告诉我:rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]
。谁能告诉我我做错了什么?
该文件~/.rsync_file_list
仅包含以 开头的文件名列表~/
,并以换行符分隔(尽管我也尝试将它们全部列出在同一行上,但结果相同)。
如果我运行rsync -a ~/file ~/file2 ~/file3 ~/destination
它效果很好。那么我对这个--files-from
选项缺少什么?
答案1
好吧,我发现问题了。
- 包含文件名的文件必须包含仅有的文件名;没有路径,无论是相对路径还是其他路径;
- 指定后
--files-from=FILE
,rsync 需要一个源目录来查找列出的文件。
所以命令应该是rsync -a --files-from=~/.rsync_file_list $HOME/ /destination
.
.rsync_file_list
应该读:
file 1
file 2
file 3
答案2
使用“~”可能无法在“files-from”文件中工作,除非 rsync 足够智能来识别和翻译“~”符号。
当您在 shell 命令行中指定“~”作为命令的一部分时,它是壳本身将“~”转换为您的主目录前将参数传递给程序。因此,即使您输入rsync -a ~/file
,rsync
“看到”的实际上是解析的路径,或者rsync -a /home/foo/file
.
看Bash 波形符扩展了解更多信息。