如何为Google Cloud Storage增量备份配置7天旧文件自动删除?
实现GCS Coldline桶7天增量备份自动删除旧文件的方案
我来帮你搞定这个备份自动清理的需求,结合你当前的操作,咱们分几步来实现:
1. 开启存储桶版本控制(可选但推荐)
如果你希望保留文件的修改历史(比如本地文件更新后,桶里的旧版本能先存7天再删掉),先给你的Coldline桶开启版本控制,这样每次同步替换文件时,旧版本会被保留下来:
gsutil versioning set on gs://my_bucket
要是你不需要保留版本,只想删掉超过7天的文件,这一步可以跳过。
2. 配置生命周期规则,自动清理7天前的文件
GCS的生命周期规则可以自动帮你删除过期对象,咱们先写一个配置文件(比如叫lifecycle_config.json):
{ "rule": [ { "action": { "type": "Delete" }, "condition": { "age": 7, "matchesStorageClass": ["COLDLINE"] } } ] }
如果刚才开了版本控制,想要只清理旧版本(保留当前正在使用的版本),就把配置改成这样:
{ "rule": [ { "action": { "type": "Delete" }, "condition": { "age": 7, "matchesStorageClass": ["COLDLINE"], "isLive": false } } ] }
这个规则会删除创建满7天的非当前版本文件,当前版本会一直留着,直到被新文件替换后变成旧版本,再等7天自动删除。
接下来执行命令把这个规则应用到桶上:
gsutil lifecycle set lifecycle_config.json gs://my_bucket
可以用下面的命令检查规则有没有生效:
gsutil lifecycle get gs://my_bucket
3. 优化你的rsync同步命令
你现在用的gsutil -m rsync -r /usr/local/apache/htdocs gs://my_bucket已经能实现增量上传——只会传本地新增或修改过的文件,不会动桶里已经存在的旧文件,很适合备份场景。
要是你希望桶里的文件和本地完全同步(本地删了的文件,桶里也跟着删),可以加个-d参数,但这个操作有风险,建议先在测试环境验证再用:
gsutil -m rsync -r -d /usr/local/apache/htdocs gs://my_bucket
4. 把备份自动化(可选)
要是想每天自动执行同步,用Linux的cron就可以。比如每天凌晨2点跑备份:
- 打开crontab编辑器:
crontab -e
- 加一行配置:
0 2 * * * /usr/bin/gsutil -m rsync -r /usr/local/apache/htdocs gs://my_bucket
保存退出后,系统就会每天自动帮你完成增量备份啦。
这样一套配置下来,你的网站数据会定期同步到Coldline桶,超过7天的旧文件(或旧版本)会被自动清理,完美满足你的保留期要求。
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

