Rclone使用管道将 tar 与 rclone 结合,实现多目标云盘同步上传

通过 tar + 管道(pipe)+ rclone rcat 的方式,可以实现“边打包边上传”的流式操作,无需在本地生成压缩文件,大幅节省磁盘空间并减少 IO。


一、流式上传的原理

  • tar:负责压缩并将数据输出到标准输出(stdout)
  • 管道 |:将前一个命令的输出传给下一个命令
  • tee:将同一份数据流分发到多个进程
  • rclone rcat:从标准输入接收数据并直接上传到云盘

通过这些组合,可以做到“一次压缩,同时上传到多个云服务”。


二、示例:一次打包同时上传到天翼盘、百度网盘、移动云盘(通过 Alist)

tar --zstd -cf - -C /root/docker . \
| tee \
    >(rclone rcat --progress alist:/天翼/docker/docker_$(date +%Y%m%d).tar.zst) \
    >(rclone rcat --progress alist:/移动/Rclone/docker/docker_$(date +%Y%m%d).tar.zst) \
| rclone rcat --progress alist:/百度/docker/docker_$(date +%Y%m%d).tar.zst

三、命令详解

1. tar 压缩部分

tar --zstd -cf - -C /root/docker .
  • --zstd:使用 zstd 压缩算法(速度快、压缩率高)
  • -c:创建压缩包
  • -f -:输出到标准输出(- 代表 stdout)
  • -C /root/docker .:进入指定目录后压缩该目录所有内容

为什么推荐 zstd?

  • 比 gzip 更快
  • 压缩率更高
  • CPU 利用效率更好 适合大型数据备份场景。

2. tee 实现多目标同步上传

tee >(rclone rcat ...)
  • tee:复制数据流到多个“接收者”
  • >( ... )进程替换,意味着把数据传递给括号内的命令

3. 每个云盘的 rclone rcat 上传

上传到天翼云:

rclone rcat --progress alist:/天翼/docker/docker_20240101.tar.zst

上传到移动云盘:

rclone rcat --progress alist:/移动/Rclone/docker/docker_20240101.tar.zst

上传到百度网盘(主流最后一条管道):

rclone rcat --progress alist:/百度/docker/docker_20240101.tar.zst

每个目标路径都可以根据你的 Alist 目录结构自由修改。


四、效果

  • 一次压缩,多处上传 无需重复打包三次,节省时间和 CPU。
  • 无需本地生成 tar 文件 所有数据全程通过管道传输。
  • 减少磁盘 IO、降低空间占用 非常适合大数据备份、服务器资源有限等场景。