Google cloud storage 是否有一种快速方法可以确定gsutil cp未能复制哪个文件?
当我执行这个命令时Google cloud storage 是否有一种快速方法可以确定gsutil cp未能复制哪个文件?,google-cloud-storage,gsutil,Google Cloud Storage,Gsutil,当我执行这个命令时 $ cat sending.csv | gsutil -m cp -I gs://my-bucket/ 我得到这样的输出 Copying file://000000000077.jpg [Content-Type=image/jpeg]... CommandException: No URLs matched: Copying file://0
$ cat sending.csv | gsutil -m cp -I gs://my-bucket/
我得到这样的输出
Copying file://000000000077.jpg [Content-Type=image/jpeg]...
CommandException: No URLs matched:
Copying file://000000000086.jpg [Content-Type=image/jpeg]...
...
Copying file://000000002536.jpg [Content-Type=image/jpeg]... ETA 00:00:00
| [261/261 files][ 41.1 MiB/ 41.1 MiB] 100% Done 3.7 MiB/s ETA 00:00:00
Operation completed over 261 objects/41.1 MiB.
CommandException: 1 file/object could not be transferred.
我需要知道哪个文件传输失败,但我看不到一个简单的方法来获取这些信息
成功传输错误消息前后的文件
$ gsutil ls gs://my-bucket/000000000077.jpg
gs://my-bucket/000000000077.jpg
$ gsutil ls gs://my-bucket/000000000086.jpg
gs://my-bucket/000000000086.jpg
在sending.csv文件中,它们之间没有文件
$ cat sending.csv | nl | head
...
5 000000000077.jpg
6 000000000086.jpg
我尝试将-D选项传递给gsutil,但是输出太多,无法快速找到无法复制的单个文件
为了将要发送的文件列表与bucket中实际存储的文件列表进行比较,我执行了以下操作:
gsutil ls gs://my-bucket/*.jpg | sort | sed 's!.*/!!' > sent.csv
diff sending.csv sent.csv
但未发现任何差异。我想知道gsutil认为哪个文件传输失败。您可以使用
gsutil cp-L cp.log…
,它将以所述格式记录每个操作的日志
可选地,如果您只想重新运行该操作来复制未成功传输的文件,您可以考虑使用.< /p>,可以使用<代码> GSUTIL CP-L CP.log…<代码>,它将记录所描述的格式的每个操作的日志。
可选地,如果您只想重新运行该操作来复制未成功传输的文件,您可以考虑使用.< /p>
。该解决方案的唯一缺点是不能使用GSUTL并行化选项,并且文件将按顺序上传。
gsutil cp
如果操作成功,则返回0,否则返回非0值。我们可以在bash中使用$$
操作符检查这个返回值
假设sending.csv中每行包含一个文件:
#!/bin/sh
while read line
do
echo $line;
gsutil cp $line gs://my-bucket/
if [ $? -eq 0 ]
then
echo "$line successfully uploaded"
else
echo "Houston, we have a problem"
fi
done < files.csv
#/垃圾箱/垃圾箱
读行时
做
回声线;
gsutil cp$line gs://我的桶/
如果[$?-等式0]
然后
echo“$line已成功上载”
其他的
echo“休斯顿,我们有问题”
fi
完成
此解决方案的唯一缺点是,您不能将并行化选项与gsutil一起使用,文件将按顺序上载
gsutil cp
如果操作成功,则返回0,否则返回非0值。我们可以在bash中使用$$
操作符检查这个返回值
假设sending.csv中每行包含一个文件:
#!/bin/sh
while read line
do
echo $line;
gsutil cp $line gs://my-bucket/
if [ $? -eq 0 ]
then
echo "$line successfully uploaded"
else
echo "Houston, we have a problem"
fi
done < files.csv
#/垃圾箱/垃圾箱
读行时
做
回声线;
gsutil cp$line gs://我的桶/
如果[$?-等式0]
然后
echo“$line已成功上载”
其他的
echo“休斯顿,我们有问题”
fi
完成