如何使用rsync的--files-from选项下载指定文件列表?
解决rsync通过
--files-from下载指定文件列表的问题 正确的文件列表写法
你的文件列表应该使用相对于远程源目录的路径,而非绝对路径或带服务器前缀的路径。
假设你的远程源目录是/home/remote/folder,那么files.txt的正确内容应为:
file1 file2 # 若文件在子目录下,直接写相对路径即可 subdir/file3
正确的rsync命令
结合sshpass的完整执行命令如下:
sshpass -p "my_pwd" rsync -av --partial --progress --files-from=files.txt <usr>@<remote>:/home/remote/folder/ /home/local/folder/
之前尝试的错误原因
- 第一种尝试的问题:你指定的远程源是
<usr>@<remote>(未限定到目标目录),同时文件列表用了远程绝对路径,rsync会从远程根目录查找这些路径,自然找不到对应文件。 - 第二种尝试的问题:完全省略了远程源参数,rsync没有文件来源,必然执行失败。
额外注意事项
- 如果下载的文件包含特殊字符(如空格),在
files.txt中直接写原路径即可,无需额外转义。 - 若要同步目录结构中的指定文件,无需额外加
--recursive,只要文件列表中的相对路径包含子目录,rsync会自动在本地创建对应的目录结构。
内容的提问来源于stack exchange,提问作者roschach
相关产品推荐
相关产品推荐

