ustcmirror/gsutil-rsyncgsutil-rsync是一个基于gsutil工具的Docker镜像,专门用于实现本地文件系统与Google Cloud Storage (GCS)存储桶之间的数据同步。该镜像封装了gsutil的rsync命令,提供了便捷的配置方式和定时同步功能,适用于需要定期从GCS同步数据的场景。
bashdocker run -d \ -e GCS_SRC=gs://my-bucket/path \ -e LOCAL_DEST=/data \ -v /path/to/local/data:/data \ ***/gsutil-rsync
bashdocker run -d \ -e GCS_SRC=gs://my-bucket/path \ -e LOCAL_DEST=/data \ -e CRON="0 */6 * * *" \ # 每6小时同步一次 -v /path/to/local/data:/data \ ***/gsutil-rsync
yamlversion: '3' services: gsutil-sync: image: ***/gsutil-rsync restart: always environment: - GCS_SRC=gs://my-bucket/path - LOCAL_DEST=/data - CRON="0 */12 * * *" # 每12小时同步一次 - SYNC_OPTIONS=-r -c -d - LOG_LEVEL=info volumes: - /path/to/local/data:/data - /path/to/service-account.json:/etc/gcs/service-account.json logging: driver: "json-file" options: max-size: "10m" max-file: "3"
| 环境变量 | 描述 | 默认值 |
|---|---|---|
GCS_SRC | GCS源路径,格式为gs://bucket/path | 无,必填 |
LOCAL_DEST | 本地目标路径 | /data |
CRON | 定时任务表达式,如"0 */6 * * *"表示每6小时 | 无,不设置则立即执行一次后退出 |
SYNC_OPTIONS | gsutil rsync的额外参数 | -r -c |
LOG_LEVEL | 日志级别,可选值:debug, info, warn, error | info |
GCS_KEY_FILE | GCS服务账号密钥文件路径 | /etc/gcs/service-account.json |
SYNC_TIMEOUT | 同步操作超时时间(秒) | 3600 |
LOG_FILE | 日志文件路径 | /var/log/gsutil-rsync.log |
为了访问GCS存储桶,需要提供有效的GCP服务账号密钥:
/etc/gcs/service-account.jsonSYNC_OPTIONS环境变量可配置的常用参数:
-r: 递归同步子目录-c: 基于文件内容(而非时间戳和大小)进行比较-d: 删除本地存在但GCS中不存在的文件-n: 执行"干运行",只显示将要执行的操作而不实际执行-P: 保留文件的权限和时间戳-q: 安静模式,减少输出信息完整的选项列表可参考gsutil rsync文档
容器会将同步日志输出到标准输出和指定的日志文件(默认/var/log/gsutil-rsync.log)。建议通过Docker的日志驱动配置日志轮转,避免日志文件过大。
-d选项时要格外小心,可能会删除本地文件manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务