借助--files-from并行执行rsync批量同步多文件的方法咨询
批量并行执行rsync同步的方案
方法1:用parallel命令(推荐,更易控制并行数)
parallel是专门处理并行任务的工具,操作简单直观:
先安装parallel(系统默认可能没有):
- Debian/Ubuntu类系统:
sudo apt install parallel - RHEL/CentOS类系统:
sudo yum install parallel
- Debian/Ubuntu类系统:
运行并行同步命令:
parallel -j 5 rsync -av --files-from={} / user@remote-server:/ ::: exported-*.txt关键参数说明:
-j 5:设定同时跑5个rsync进程,数字可根据服务器性能调整--files-from={}:每个exported-N.txt文件会自动替换这里的{},作为rsync读取路径列表的依据/:本地根目录(因为你的文件里都是绝对路径,所以用根目录对应)user@remote-server:/:替换成你的实际远程服务器账号和地址,比如tom@10.0.0.5:/backup::: exported-*.txt:自动匹配所有exported-开头的txt文件
方法2:用xargs实现(系统自带,无需额外安装)
如果不想装新工具,用系统自带的xargs也能搞定:
ls exported-*.txt | xargs -P 5 -I {} rsync -av --files-from={} / user@remote-server:/
参数说明:
-P 5:允许同时运行5个进程-I {}:用每个文件名替换{}占位符ls exported-*.txt:先列出所有目标文件,再传给xargs处理
必看注意事项
- 务必把
user@remote-server:/替换成你的真实远程信息,要是同步到远程特定目录,注意本地绝对路径和远程目录的对应关系 - 提前配置SSH免密登录,不然每个rsync进程都会弹密码提示,并行执行会乱套
- 先拿单个文件测试:比如
rsync -av --files-from=exported-0.txt / user@remote-server:/,确认同步正常再批量跑
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

