s3的新功能:如何在Amazon s3中设置自动备份?

时间:2014-02-11 19:44:27

标签: amazon-s3

我是亚马逊s3的新手,所以我只是想知道如何设置自动每日备份?

谢谢!

3 个答案:

答案 0 :(得分:2)

我认为duplicatis3cmd更合适。 s3cmdS3的命令行管理工具,但duplicati是专为备份而设计的。见http://www.duplicati.com/

更新: 如果您想要在Linux中没有某些高级功能的简单备份,则另一种选择是https://github.com/victorlin/avoid_disaster

答案 1 :(得分:1)

在我看来,最简单的方法是使用s3cmd工具(S3命令行):

您可以在此处找到相关信息:http://s3tools.org/s3cmd

您可以设置压缩所有文件的cronjob,包括数据库转储,然后使用s3cmd

将其上传到S3存储桶

[编辑]

在Debian上安装它,你可以运行:

sudo apt-get install s3cmd

然后,您的主目录中需要一个名为.s3cfg的配置文件:

这是一个示例:

[default]
access_key = <put AWS your access key here>
secret_key = <put AWS your secret access key here>
bucket_location = US

您可以使用IAM获取AWS访问密钥并创建用户:

http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html

答案 2 :(得分:0)

您有三种选择:

  1. 使用冰川自动备份
  2. 使用第三方服务
  3. 使用脚本
  4. 备份到单独的s3存储桶

    如果恢复速度不是问题,您只需要每日备份,并且备份大文件,那么您应该使用冰川生命周期规则将您的桶备份到冰川。

    但是,当您执行此操作时,生命周期规则将警告您,如果文件大小小于256.0KB,则这不是最有效的解决方案。您可能会收到如下警告:

      

    将较小的物体转移到冰川可能会增加成本

         

    此存储桶中对象的平均大小为16.0KB *,较小   比推荐的256.0KB用于降低Glacier Storage的成本   类。将较小的对象转换为Glacier Storage Class可以   增加存储成本因为额外的32KB的Glacier指数   添加了数据和8KB的S3元数据。

    如果是这种情况,那么您应该将您的存储桶备份到&#34;备份存储桶。&#34;以下步骤将有助于解决冰川问题。

    1。)在此处创建一个备份存储桶:https://console.aws.amazon.com/s3/home

    2。)使用如下的用户策略创建用户:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Stmt1426742219000",
                "Effect": "Allow",
                "Action": [
                    "s3:AbortMultipartUpload",
                    "s3:GetObject",
                    "s3:GetObjectAcl",
                    "s3:GetBucketPolicy",
                    "s3:GetBucketAcl",
                    "s3:GetObjectVersion",
                    "s3:ListBucket",
                    "s3:ListBucketMultipartUploads",
                    "s3:ListMultipartUploadParts"
                ],
                "Resource": [
                    "arn:aws:s3:::test",
                    "arn:aws:s3:::test/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:AbortMultipartUpload",
                    "s3:GetObject",
                    "s3:GetObjectAcl",
                    "s3:GetBucketPolicy",
                    "s3:GetBucketAcl",
                    "s3:GetObjectVersion",
                    "s3:ListBucket",
                    "s3:ListBucketMultipartUploads",
                    "s3:ListMultipartUploadParts",
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::test-backup",
                    "arn:aws:s3:::test-backup/*"
                ]
            }
        ]
    }
    

    这允许您从应用程序可访问存储桶中获取数据并将数据备份到备份存储桶,但备份用户无法从备份存储桶中删除数据,如果您的服务器受到损害,这一点非常重要需要从这些备份中恢复。您可以在此处创建政策:https://console.aws.amazon.com/iam/home#policies 然后将其添加到用户https://console.aws.amazon.com/iam/home#users

    3.。)在此处{>> 3}}

    启用备份存储区的版本控制

    4.。)您可以使用s3cmd将一个桶备份到另一个桶。从此处下载并配置该工具:https://console.aws.amazon.com/s3/home

    #CONFIGURATION
    export bucket_to_backup='test';
    export backup_bucket='test-backup'; 
    export AWS_ACCESS_KEY_ID=ASDFDSAFADSFDASF;
    export AWS_SECRET_ACCESS_KEY=adsfdsaf86adsf5adsf568aadf75ads;
    s3cmd --access_key=$AWS_ACCESS_KEY_ID --secret_key=$AWS_SECRET_ACCESS_KEY --recursive sync s3://$bucket_to_backup s3://$backup_bucket;
    

    您可以在shell脚本中设置这些命令,并让它们在crontab进程中运行。

    5.。)一旦有多个备份,您可能希望限制备份版本中存储的版本数量,以节省存储成本。您可以通过在存储桶属性下的aws s3控制台中的存储桶上创建生命周期规则来执行此操作。在那里你可以删除超过一定天数的版本。

    6。)一旦你保存了各种快照,你需要一种方法来恢复你的特定快照。这是一个PHP脚本,可以帮助您这样做:

    export startSnapShotTimeStamp=1427577934;
    export endSnapShotTimeStamp=1427577939;
    #do the restore with php script
    php awsUtil.php sync test test-backup $startSnapShotTimeStamp-$endSnapShotTimeStamp
    

    时间戳的范围会将您的存储桶还原到备份中存储的两个时间戳之间的最新状态。

    您可以从此处下载恢复脚本:http://s3tools.org/s3cmd