gsutil 是与 Google Cloud Storage 交互的重要工具,支持多种操作和自动化脚本。通过掌握常用命令和使用案例,可以有效管理存储在 GCS 中的数据,提高工作效率。

1. gsutil 命令概述

gsutil 是一个命令行工具,用于与 Google Cloud Storage 进行交互。基本语法如下:


bash复制代码

gsutil [OPTION] COMMAND [ARGS...]

  • OPTION:可选参数,用于设置 gsutil 的行为。
  • COMMAND:要执行的操作(如 cplsrm 等)。
  • 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

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐