高阶9 如何自动同步本地数据与S3
现代化的很重要的一块是自动化管理和运维,在经过入门级的学习以后,几乎所有的同学都会思考这个问题,本文就是其中一个方向,即如何将本地数据自动同步到S3. -- D.C
简单来说,自动同步数据到AWS S3有以下几种方式:
-
AWS 服务:AWS Storage Gateway
-
AWS 命令行+定时脚本
-
第三方软件
[方法1] AWS Storage Gateway (AWS SGW)
前提 : 本地有存储服务器,可以将一部分资源划出来,安装storage gateway的软件虚拟成连接云端的存储介质。
SGW 可以将划分出来的存储资源虚拟成以下几种:
-
作为文件服务器连接。文件接口以网络文件共享的形式向本地服务器和应用程序提供对 Storage Gateway 的访问。数据经过缓存,可实现本地性能。存入 Amazon S3 之后,数据即可在 S3 中作为对象进行访问。您可以通过版本控制、跨区域复制等原生工具在 S3 中保护数据。
-
作为本地磁盘连接。虚拟成卷接口,将 Storage Gateway 以本地磁盘的形式提供给本地服务器和应用程序。这些卷中的数据可以传输到 Amazon S3 云存储中,并通过 Storage Gateway 服务进行访问。将数据存储在本地以获得最高性能(通过快照备份到云中),或者通过将常用数据存储在本地并将不常用的数据存储在云中,平衡延时和规模。
-
作为虚拟磁带库 (VTL) 连接。虚拟成磁带接口,用本地磁盘和云存储取代了备份磁带和磁带自动化设备。现有的备份和还原软件可将原生备份作业写入存储在 Storage Gateway 上的虚拟磁带中。虚拟磁带可迁移到 Amazon S3 中,最终存档到 Amazon Glacier 中,以便实现最低成本。数据通过您的备份应用程序进行访问,而且备份目录中仍然可以看到所有备份任务和磁带。
文档参考:点我
技术指导:微信群 or 联系AWS那边的对接BD
[方法2] AWS 命令行+定时脚本
简单来说就是依靠aws的cli命令,或者是SDK包命令,结合 系统本身的定时任务 来实现的。比如说Ubuntu的Cron,或者windows自带的定时任务。
-
设定好本机的AKSK,保证能访问到S3。
-
写一个包含AWS CLI 命令的 shell 脚本s3sync.sh如下,并设定755权限:
#!/bin/bash
/usr/bin/aws s3 sync /本地文件夹 s3://桶名/文件夹名/
- 设定自动执行该脚本的任务,此处以Ubuntu自带的cron为例(其他系统自行度娘):
$ service cron start
$ crontab -e # 创建并编辑一个计划,选择vim编辑器
# m h dom mon dow command
30 1 * * 6 /home/me/s3sync.sh
#保存退出
$ service cron restart
稍微解释下crontab的设置参数:
crontab中的每一行代表一个定期执行的任务,分为6个部分。前5个部分表示何时执行命令,最后一个部分表示执行的命令。每个部分以空格分隔,除了最后一个部分(命令)可以在内部使用空格之外,其他部分都不能使用空格。前5个部分分别代表:分钟,小时,天,月,星期,每个部分的取值范围如下:
时间 | 值 |
---|---|
分钟 | 0 - 59 |
小时 | 0 - 23 |
天 | 1 - 31 |
月 | 1 - 12 |
星期 | 0 - 6 |
* 0表示星期天
除了这些固定值外,还可以配合星号(*),逗号(,),和斜线(/)来表示一些其他的含义:
符号 | 值 |
---|---|
星号 | 表示任意值,比如在小时部分填写 * 代表任意小时(每小时) |
逗号 | 可以允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表示一分钟或三分钟 |
斜线 | 一般配合 * 使用,代表每隔多长时间,比如在小时部分填写 /2 代表每隔两分钟。所以 /1 和 * 没有区别, */2 可以看成是能被2整除的任意值。 |
举个例子:
6,30 * 2 * * xxx # 每个月2号,每小时的6分和30分执行一次任务
/4,/10 * * xxx # 每隔5分钟或10分钟执行一次任务,比如10:04,10:08,10:10,10:12
[方法3] 第三方同步软件
这一类软件就有不少了,比如:
- windows系统的如ShareX软件,主业是个截屏工具,但可以设置S3来进行数据自动上传。
- Linux的话推荐AWS自己开发的S3同步神器,在github上有链接,它支持本地到S3, 阿里到S3同步,海外S3和国内S3同步,只要一端在S3就行。
Amazon S3 MultiThread Resume Migration Solution (Amazon S3多线程断点续传迁移) Breaking-point resume supported, suitable for mass files transimission to Amazon S3 多线程断点续传,充分利用带宽,适合批量的大文件S3迁移。
我无法理解那些我不能创造的东西。