GCP Cloud Storage命令详解和日常使用案例
gsutil是与 Google Cloud Storage 交互的重要工具,支持多种操作和自动化脚本。通过掌握常用命令和使用案例(备份+恢复+定期上传日志+大规模数据迁移+定期清理备份+检索文件),可以有效管理存储在 GCS 中的数据,提高工作效率。
·
gsutil 是与 Google Cloud Storage 交互的重要工具,支持多种操作和自动化脚本。通过掌握常用命令和使用案例,可以有效管理存储在 GCS 中的数据,提高工作效率。

1. gsutil 命令概述
gsutil 是一个命令行工具,用于与 Google Cloud Storage 进行交互。基本语法如下:
bash复制代码
gsutil [OPTION] COMMAND [ARGS...]
- OPTION:可选参数,用于设置 gsutil 的行为。
- COMMAND:要执行的操作(如
cp,ls,rm等)。 - ARGS:命令参数。
2. 常用命令示例
2.1. 身份验证
在使用 gsutil 之前,确保已通过 gcloud 进行身份验证:
gcloud auth login
2.2. 管理存储桶
列出所有存储桶:
gsutil ls
创建存储桶:
gsutil mb -l us-central1 gs://BUCKET_NAME
查看存储桶的详细信息:
gsutil ls -L -b gs://BUCKET_NAME
删除存储桶:
gsutil rb gs://BUCKET_NAME
2.3. 管理对象
上传文件到存储桶:
gsutil cp LOCAL_FILE_PATH gs://BUCKET_NAME/
从存储桶下载文件:
gsutil cp gs://BUCKET_NAME/OBJECT_NAME LOCAL_FILE_PATH
列出存储桶中的对象:
gsutil ls gs://BUCKET_NAME
删除存储桶中的对象:
gsutil rm gs://BUCKET_NAME/OBJECT_NAME
复制对象:
gsutil cp gs://SOURCE_BUCKET/OBJECT_NAME gs://DESTINATION_BUCKET/
移动对象:
gsutil mv gs://BUCKET_NAME/OBJECT_NAME gs://BUCKET_NAME/NEW_OBJECT_NAME
2.4. 同步文件夹
将本地文件夹同步到存储桶:
gsutil rsync -r LOCAL_DIRECTORY gs://BUCKET_NAME/
将存储桶中的内容同步到本地文件夹:
gsutil rsync -r gs://BUCKET_NAME LOCAL_DIRECTORY
3. 使用案例
3.0 配置调度
# 编辑 crontab
crontab -e
# 添加以下行以每天午夜备份
0 0 * * * /path/to/backup_script.sh
# 添加以下行以每小时上传日志文件
0 * * * * /path/to/upload_log_script.sh
3.1. 备份和恢复
使用 gsutil 进行数据备份和恢复的脚本示例:
#!/bin/bash
# 定义存储桶和本地目录
BUCKET_NAME="your-bucket-name"
LOCAL_DIR="/path/to/local/directory"
# 备份数据到 GCS
gsutil rsync -r $LOCAL_DIR gs://$BUCKET_NAME/backup/
# 恢复数据从 GCS
gsutil rsync -r gs://$BUCKET_NAME/backup/ $LOCAL_DIR
3.2. 定期上传日志文件
可以设置 cron 作业定期上传日志文件到 GCS:
# 每天午夜上传日志文件
0 0 * * * gsutil cp /var/log/myapp.log gs://your-bucket-name/logs/
3.3. 大规模数据迁移
如果需要将大量数据从一个存储桶迁移到另一个存储桶:
gsutil -m cp -r gs://source-bucket/* gs://destination-bucket/
3.4 清理过期备份
这个脚本将删除超过特定天数的备份。
#!/bin/bash
# 定义变量
BUCKET_NAME="your-bucket-name"
DAYS=30
# 删除过期备份
gsutil -m rm -r gs://$BUCKET_NAME/backup_* -m -d "$(date -d "$DAYS days ago" +%Y-%m-%d)"
# 输出清理完成信息
echo "Expired backups older than $DAYS days have been deleted from gs://$BUCKET_NAME"
3.5 检索某个关键字的文件是否存在******
gsutil ls gs://$BUCKET_NAME/**:列出存储桶中所有对象的完整路径。grep "$KEYWORD":过滤出包含指定关键字的文件。if [ -z "$MATCHING_FILES" ]; then:检查匹配的文件列表是否为空。
#!/bin/bash
# 定义变量
BUCKET_NAME="your-bucket-name" # 替换为你的存储桶名称
KEYWORD="your-keyword" # 替换为要搜索的关键字
# 列出存储桶中的所有文件,并过滤包含关键字的文件
MATCHING_FILES=$(gsutil ls gs://$BUCKET_NAME/** | grep "$KEYWORD")
# 检查是否找到了匹配的文件
if [ -z "$MATCHING_FILES" ]; then
echo "没有找到包含关键字 '$KEYWORD' 的文件。"
else
echo "找到以下包含关键字 '$KEYWORD' 的文件:"
echo "$MATCHING_FILES"
fi
4. 帮助和文档
获取帮助:
gsutil help
查看特定命令的帮助:
gsutil cp -h
更多推荐

所有评论(0)