一、直接打包并上传到远程
在 Linux 环境下,可以通过 tar → 管道 → rclone rcat 来实现“边压缩边上传”,无需生成本地压缩文件。
基本示例
tar -czf - /path/to/files | rclone rcat remote:backup.tar.gz
参数说明
-czf -:使用 gzip 压缩,并将输出写入标准输出(-表示不生成本地文件)。|:管道,将 tar 的输出传递给 rclone。rclone rcat:从标准输入接收数据并直接上传到远程存储。
二、Rclone 同步目录示例(带排除规则)
rclone sync /data/backup alist:/百度云盘/backup \
-P \
--log-file="/var/backup.log" \
--log-level=ERROR \
--exclude "panel/**" \
--delete-excluded \
--modify-window=1s
参数解释
--exclude "目录/**":排除某目录及其所有子文件夹。--checksum:基于校验和判断文件是否变化,而不是时间戳或大小。-P:显示实时进度。--log-file:将日志写入文件。--log-level=ERROR:只记录错误,日志更干净。
三、打包并分块上传
思路: 先用 tar 打包 → 再用 split 分块 → 最后上传每个分块。
方式一:使用 split 的 filter(需要新版本 split)
tar -czf - /path/to/files | \
split -b 200M - /tmp/backup_$(date +%Y%m%d).tar.gz.part \
--filter='rclone rcat remote:backup/$(basename "$FILE") --size-only'
$(basename "$FILE"):提取文件名(去掉路径)。
如果你的 split 版本较旧,不支持 $FILE 变量,则使用下面的方式。
四、方式二(通用):先分块,再批量上传
1. 打包并分块到 /tmp
cd /data && tar -czf - docker | \
split -b 200M - /tmp/docker_$(date +%Y%m%d).tar.gz.part
2. 批量上传所有分块
for FILE in /tmp/docker_$(date +%Y%m%d).tar.gz.part*; do
rclone rcat alist:/百度云盘/docker/$(basename "$FILE") --size-only < "$FILE"
done
五、下载分块文件
rclone copy remote:backup /path/to/local/backup \
--include "backup_20231030.tar.gz.part*"
示例:
rclone copy alist:/百度云盘/docker \
/data/backup \
--include "docker_20241030.tar.gz.part*"
六、合并分块文件
cat /path/to/local/backup/backup_20231030.tar.gz.part* \
> /path/to/local/backup/backup_20231030.tar.gz
示例:
cat /data/backup/docker_20241030.tar.gz.part* \
> /data/backup/docker_20241030.tar.gz
七、解压文件
tar -xzf /path/to/local/backup/backup_20231030.tar.gz \
-C /path/to/extract/directory
示例:
tar -xzf /data/backup/docker_20241030.tar.gz \
-C /data/backup/dockertest