高阶9 如何自动同步本地数据与S3

现代化的很重要的一块是自动化管理和运维,在经过入门级的学习以后,几乎所有的同学都会思考这个问题,本文就是其中一个方向,即如何将本地数据自动同步到S3. -- D.C

简单来说,自动同步数据到AWS S3有以下几种方式:

[方法1] AWS Storage Gateway (AWS SGW)

前提 : 本地有存储服务器,可以将一部分资源划出来,安装storage gateway的软件虚拟成连接云端的存储介质。

SGW 可以将划分出来的存储资源虚拟成以下几种:

文档参考:点我

技术指导:微信群 or 联系AWS那边的对接BD

[方法2] AWS 命令行+定时脚本

简单来说就是依靠aws的cli命令,或者是SDK包命令,结合 系统本身的定时任务 来实现的。比如说Ubuntu的Cron,或者windows自带的定时任务。

#!/bin/bash

/usr/bin/aws s3 sync /本地文件夹 s3://桶名/文件夹名/
$ 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] 第三方同步软件

这一类软件就有不少了,比如:

sharex

Amazon S3 MultiThread Resume Migration Solution (Amazon S3多线程断点续传迁移) Breaking-point resume supported, suitable for mass files transimission to Amazon S3 多线程断点续传,充分利用带宽,适合批量的大文件S3迁移。

我无法理解那些我不能创造的东西。