使用gsutil向GCP存储桶自动备份时如何实现传输中文件压缩?
gsutil向GCP存储桶自动备份时如何实现传输中文件压缩?
嗨,我来帮你捋清楚这个问题~你之前的命令没生效,问题出在-z参数的用法上,它不支持直接用*通配符哦,得明确指定要压缩的文件扩展名才行。
正确的命令示例
如果要给常见的可压缩文件(比如文本、JSON、CSV、日志文件)做传输压缩,命令应该是这样的:
gsutil -m cp -r -z txt,json,csv,log /绝对路径/本地目录 gs://你的存储桶名称/目标路径
参数解释
-m:开启多线程传输,能大幅提升大文件或多文件的传输速度cp -r:递归复制指定目录下的所有文件和子目录-z [扩展名列表]:这里必须用逗号分隔具体的文件扩展名,只有匹配这些类型的文件会在传输时用gzip压缩,传到GCP桶里的是压缩后的版本,之后下载这些文件时会自动解压缩(除非你特意指定不自动解压缩)
关于GCP官方文档的说明
GCP官方文档里明确提到:gsutil cp命令的-z参数仅接受逗号分隔的文件扩展名列表,不支持通配符。它的作用是在上传过程中对指定类型的文件进行gzip压缩,既节省传输带宽,又能减少存储桶的占用空间。
Crontab定时备份的小提醒
因为crontab的执行环境和你平时登录的环境不一样,为了避免找不到命令或文件的问题,建议你:
- 用
which gsutil查一下gsutil的绝对路径,替换到命令里 - 本地目录和存储桶路径都用绝对路径
比如一个每天凌晨2点自动备份的crontab任务可以这么写:
0 2 * * * /usr/bin/gsutil -m cp -r -z txt,json,csv,log /home/yourname/backup-folder gs://your-bucket/backup
备注:内容来源于stack exchange,提问作者chargingBrontosaurus
相关产品推荐
相关产品推荐

