Gsutil批量脚本在GitBash正常运行,Linux CLI执行异常求助
解决Linux下gsutil cp命令提示成功但目标文件夹为空的问题
排查步骤及解决方案
1. 确认目标目录存在
Linux环境下gsutil cp不会自动创建不存在的目标目录,而Git Bash可能默认处理了目录创建逻辑。在脚本开头添加目录创建命令,确保目标路径存在:
mkdir -p /home/ds102e/workspace/mft/
2. 检查权限配置
- 验证当前用户对目标目录的读写权限:
ls -ld /home/ds102e/workspace/mft/
若权限不足,执行以下命令赋予权限:
chmod u+rwx /home/ds102e/workspace/mft/
- 确认gsutil所用账号有权限读取GCS存储桶文件,测试单条文件的访问权限:
gsutil ls gs://mycompany/archive/data/raw/integration/THY/2022/12/19/TKT_20221217.zip
3. 统一gsutil版本
Windows Git Bash与Linux上的gsutil版本可能存在差异,执行以下命令查看版本并更新:
# 查看当前版本 gsutil version # 更新到最新版 gcloud components update gsutil
4. 开启调试日志定位问题
执行命令时添加-D参数开启调试模式,查看完整执行流程,排查隐藏的错误:
gsutil -D cp gs://mycompany/archive/data/raw/integration/THY/2022/12/19/TKT_20221217.zip /home/ds102e/workspace/mft/
5. 修复脚本格式问题
若脚本是在Windows编写后传到Linux的,可能存在换行符或路径转义问题,用dos2unix转换格式:
dos2unix your_script.sh
6. 测试单条命令有效性
先单独执行一条命令,验证文件是否能正常下载:
gsutil cp gs://mycompany/archive/data/raw/integration/THY/2022/12/19/TKT_20221217.zip /home/ds102e/workspace/mft/test.zip
之后检查/home/ds102e/workspace/mft/test.zip是否存在,判断是单命令问题还是批量脚本问题。
内容的提问来源于stack exchange,提问作者avinash madala
相关产品推荐
相关产品推荐

