我希望能够将git存储库同步到AWS S3进行备份。此外,我希望公众能够git clone
备份。我的步骤是:
s3cmd mb s3://lktesting git update-server-info s3cmd -P sync .git/ s3://lktesting s3cmd ws-create s3://lktesting s3cmd ws-info s3://lktesting
我以为这曾经有用,但现在我得到了:
git clone http://lktesting.s3-website-ap-southeast-1.amazonaws.com/ Cloning into 'lktesting.s3-website-ap-southeast-1.amazonaws.com'... error: The requested URL returned error: 403 Forbidden (curl_result = 22, http_code = 403, sha1 = bf866b95d9517ea38e213740cead5cf1c313f5aa) Checking connectivity... done.
有人知道我在想什么吗?
下面的Git对象.git
可能作为单个文件存在,也可能存在git pack中。在Git的哑HTTP协议将尝试获取一个对象作为一个单独的文件,且仅当此失败,“404未发现”,它会寻找一个包。
显然,如果您向所有人授予“列表”权限,则Amazon S3存储桶将仅返回404代码:如何为存储桶中不存在的密钥提供S3存储桶返回404(而不是403)/
更新:您可以使用AWS CLI和来自s3api的put-bucket-acl分配必要的权限。
在S3存储桶中托管可克隆git存储库的完整命令序列:
BUCKET=my-bucket-name # Setup aws s3 mb s3://$BUCKET aws s3api put-bucket-acl --bucket $BUCKET --acl public-read # Sync git update-server-info aws s3 sync --acl public-read .git s3://$BUCKET # Clone git clone https://$BUCKET.s3.amazonaws.com