我是亚马逊s3的新手,所以我只是想知道如何设置自动每日备份?
谢谢!
答案 0 :(得分:2)
我认为duplicati
比s3cmd
更合适。 s3cmd
是S3
的命令行管理工具,但duplicati
是专为备份而设计的。见http://www.duplicati.com/
更新: 如果您想要在Linux中没有某些高级功能的简单备份,则另一种选择是https://github.com/victorlin/avoid_disaster
答案 1 :(得分:1)
在我看来,最简单的方法是使用s3cmd
工具(S3命令行):
您可以在此处找到相关信息:http://s3tools.org/s3cmd
您可以设置压缩所有文件的cronjob,包括数据库转储,然后使用s3cmd
[编辑]
在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)
您有三种选择:
如果恢复速度不是问题,您只需要每日备份,并且备份大文件,那么您应该使用冰川生命周期规则将您的桶备份到冰川。
但是,当您执行此操作时,生命周期规则将警告您,如果文件大小小于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