Timeshift快照同步至S3后体积暴涨原因及解决方法
问题原因
- Timeshift的快照靠硬链接节省空间:本地同一个文件的多份快照版本用硬链接指向同一份数据,所以
/timeshift/snapshots实际只占7GB,但每个硬链接在文件系统里显示为独立条目。 - S3不支持硬链接机制,
s3 sync或s3 cp会把每个硬链接当成独立文件上传,等于把所有快照的完整数据重复传了一遍,最终S3里的体积就是所有快照未去重的总和(也就是100GB)。
解决方法
方法1:打包快照后上传(最直接)
用tar打包快照目录时保留硬链接特性,只存储一份重复数据,再上传到S3:
# 进入根目录 cd / # 打包快照,--hard-dereference参数会处理硬链接,只保留一份实际数据 tar -czf timeshift_snapshots.tar.gz --hard-dereference timeshift/snapshots # 上传到S3 aws s3 cp timeshift_snapshots.tar.gz s3://你的存储桶名称/目标路径/ # 本地打包完成后可删除压缩包(可选) rm timeshift_snapshots.tar.gz
方法2:用rclone同步(支持硬链接去重)
rclone能识别硬链接,同步时自动去重,避免重复上传:
- 安装rclone:
sudo apt install rclone
- 配置rclone连接S3(按引导输入AWS密钥、存储桶信息等):
rclone config
- 同步快照到S3:
rclone sync /timeshift/snapshots s3:你的存储桶名称/timeshift-snapshots --links
--links参数让rclone处理硬链接,只上传一次实际数据。
方法3:先清理旧快照再同步(减少上传量)
如果不需要保留太多旧快照,先清理本地过时快照再同步:
- 用命令行清理30天前的快照:
sudo timeshift --delete --older-than 30d
- 再用
s3 sync或上述方法同步,上传的总数据量会大幅降低。
内容的提问来源于stack exchange,提问作者user7472559
相关产品推荐
相关产品推荐

