使用管道(pipe)将 tar 和 rclone 结合起来,整个过程是流式传输的。简而言之,tar 命令压缩数据并直接通过管道传递给 rclone,而不是将文件先写入磁盘再上传,这样可以节省磁盘空间并且减少IO操作。

示例:Rclone备份同时上传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
  • tar --zstd -cf - -C /data/docker . 使用 zstd 压缩。
  • -cf - 表示将压缩内容输出到标准输出(而不是写入磁盘文件)。
  • rclone rcat 用于接收标准输入并将其上传到指定云盘。
  • 压缩速度:zstd 通常比 gzip 更快,尤其是在较高的压缩率下。因此,使用 zstd 可能会使得压缩过程比 gzip 更高效,特别是在处理大量数据时
  • tee 将标准输入的数据同时传递到多个管道。使用了进程替换 >(rclone rcat ...),这样压缩后的数据就会被同时上传到多个目标。
  • >(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):这个命令会将压缩数据上传到 Alist 移动的指定路径。
  • rclone rcat --progress alist:/百度备份/docker/docker_$(date +%Y%m%d).tar.zst:最后,压缩数据会上传到百度的指定目录。
如果觉得我的文章对你有用,请随意赞赏