我有一个post-receive shell脚本:
#!/bin/bash
TGZNAME=imprv`date +%s`.tar.gz
TGZPATH=/var/git_out/imprv/
TGZFULL=$TGZPATH$TGZNAME
S3BUCKET=my-s3-bucket
S3PATH=s3://$S3BUCKET/imprv/
git --work-tree=/var/git_out/imprv/imprv --git-dir=/path/to/repositories/imprv/imprv.git checkout -f
echo " - creating tar "$TGZNAME >> /tmp/post-receive.log
tar -cjf $TGZFULL -C /var/git_out/imprv/imprv .
echo " - tar.gz created "$TGZFULL >> /tmp/post-receive.log
echo " - Uploading "$TGZFULL" to bucket "$S3PATH$TGZNAME >> /tmp/post-receive.log
s3cmd put $TGZFULL $S3PATH$TGZNAME --mime-type="application/gzip" >> /tmp/post-receive.log
echo " - operation complete" >> /tmp/post-receive.log
我的存储桶中没有任何内容,但是创建了tar文件,如果我手动输入s3cmd put命令,它就可以正常工作。
我正在拖尾日志文件,一切似乎都进行得很好,它会等待创建压缩文件,然后再移到下一个echo语句,所以它不会尝试放置文件在创建tar.gz文件之前。提前谢谢。
答案 0 :(得分:2)
要将文件上传到s3,您应该:
通过运行命令配置CLI
aws configure
然后aws s3 sync <local_from> s3://<bucket_name>
将本地目录与您的存储桶同步。
更新:
不要忘记安装所需的库:
aws cli
aws s3cmd