如何用gsutil与Cloud Shell监控GCS存储桶传输目录的最新修改时间?
解决方案
方法1:过滤最近N分钟内修改的文件
gsutil ls -l输出的时间格式是YYYY-MM-DD HH:MM:SS,和date -I'hours'的格式不匹配,所以直接grep会失效。可以用时间戳对比的方式筛选:
- 先计算出N分钟前的时间戳(比如最近10分钟):
START_TIME=$(date -d "-10 minutes" +%s)
- 用
awk处理gsutil的输出,提取文件时间并转成时间戳对比:
gsutil -m ls -l gs://my_bucket/my_directory | awk -v start="$START_TIME" '{ if ($1 ~ /^[0-9]+$/) { # 只处理文件行(跳过目录汇总行) time_str = $2 " " $3 cmd = "date -d \"" time_str "\" +%s" cmd | getline file_time close(cmd) if (file_time >= start) { print $0 } } }'
你可以根据需要调整-10 minutes的数值,这个命令会只输出对应时间段内修改的文件。
方法2:查看最新修改的几个文件
如果只需要快速确认传输是否在持续,直接取最新的几个文件即可:
gsutil -m ls -l gs://my_bucket/my_directory | grep -v "^TOTAL" | sort -k2,2 -k3,3 | tail -10
grep -v "^TOTAL"去掉末尾的总大小统计行sort -k2,2 -k3,3按日期和时间排序tail -10取最后10个最新的文件,看它们的时间是否是最近的,就能判断传输是否在继续。
内容的提问来源于stack exchange,提问作者sdg
相关产品推荐
相关产品推荐

