【发布时间】:2014-11-14 16:26:19
【问题描述】:
我在服务器上有一大堆文件,我想将这些文件上传到 S3。这些文件以 .data 扩展名存储,但实际上它们只是一堆 jpeg、png、zip 或 pdf。
我已经编写了一个简短的脚本,它可以找到 mime 类型并将它们上传到 S3 上,它可以工作,但速度很慢。有什么方法可以使用 gnu 并行运行以下内容?
#!/bin/bash
for n in $(find -name "*.data")
do
data=".data"
extension=`file $n | cut -d ' ' -f2 | awk '{print tolower($0)}'`
mimetype=`file --mime-type $n | cut -d ' ' -f2`
fullpath=`readlink -f $n`
changed="${fullpath/.data/.$extension}"
filePathWithExtensionChanged=${changed#*internal_data}
s3upload="s3cmd put -m $mimetype --acl-public $fullpath s3://tff-xenforo-data"$filePathWithExtensionChanged
response=`$s3upload`
echo $response
done
此外,我相信这段代码总体上可以得到很大的改进 :) 非常感谢您提供反馈提示。
【问题讨论】:
-
可以使用 Python 和 boto 并行上传
-
Nod 我本可以用 go 或其他语言写一些东西,但我试图“全部用 bash”来做这件事.. 没有特别的原因。
-
Aye :) 我也读过,但我无法解决的是它的重要部分,这就是我如何创建要并行发送的文件列表。跨度>
-
您不能将
find -name "*.data"重定向到一个文件并将该文件传递给并行吗?find -name "*.data" > mydata.txtparallel -j5 "doit {}" < mydatatxt
标签: bash amazon-s3 parallel-processing s3cmd gnu-parallel