阿里云OSS数据同步工具OssImport的使用笔记

背景

为什么会想到要使用OssImport这个东东的?这个东东又是用来干嘛使的?

起因是这样子的

一大早来,老板下令:近日平台收入有下滑趋势,查下平台的核心API接口访问是否一切正常,确认下是否是API访问异常导致收入下跌了!

这下可还了得,赶紧查下业务日志,确认下API是否一切正常,收入下跌这锅太重,可别错扣在老夫头上了。

开始干活

打开Xshell,远程登录Linux主机,cd进入业务日志目录。唉,一看,居然还有上次分析业务日志遗留下的临时分析文件,一顿cd命令,发现还有好多子目录也是不再需要的垃圾目录,为了有个清爽的心情,执行rm -rf,扫清一切乱七八糟,OK,这下整个世界都安静了。

接下来,就是要找到前些天的压缩备份业务日志文件啦,"cd ../",回到上级目录,没有!再"cd ../"回到上上级目录,还是没有!直接"cd /path/to/logs/backup"(/path/to/logs/backup:指的是业务日志压缩备份存放的目录),哈哈,彩蛋,居然是空空如也~~~~~ 冷静,好好想想,再冷静,好好再想想~~~ 尼玛,rm -rf 把老子全部的历史业务备份日志文件统统删得干干净净~~~

这下可彻底方了,赶紧一顿"百度一下",又请教有深厚技术背景的老板,看看有没数据恢复的解决方案,折腾半天,没找到有效的数据恢复解决方案,心都凉凉了。还好老板送安心剂来了:算了,别折腾了,历史日志就别管了,好好追踪分析下今天和明天的数据看看有没有问题也差不多能行了。

这一关,暂时算是过去了,但是想想服务器里面还躺着数据库备份日志,WEB服务器备份日志,后续的业务备份日志,等等各种其他备份数据,实在说来,业务日志没了,影响倒不是特别大。但是,万一哪天,数据库出现异常,我又一高兴,rm -rf 把数据库备份都给干掉,那就玩儿得透彻了。

吃一堑,自然不能就这么白吃了,至少有两点,以后是要做到的:

1、rm -rf:坚决不再用了,就算再有信心说这些文件都是垃圾文件,可以一通删掉,也难保不会一时脑子发热看走眼!

2、日志数据就在本地备份一份还是有蛮大安全风险的,公司刚好有用到阿里云的OSS产品,所以,自然而然在OSS做个二次备份是个不错的选择。所以,我就需要有个能够同步服务器文件到阿里云OSS的工具,一顿搜索,就找到OssImport这个宝贝了。

OssImport是什么,可以用来干什么?

以下是阿里云官方对OssImport工具的描述:

OssImport工具可以将本地、其它云存储的数据迁移到OSS,它有以下特点:

支持的丰富的数据源,有本地、七牛、百度BOS、AWS S3、Azure Blob、又拍云、腾讯云COS、金山KS3、HTTP、OSS等,并可根据需要扩展;
支持断点续传;
支持流量控制;
支持迁移指定时间后的文件、特定前缀的文件;
支持并行数据下载、上传;
支持单机模式和分布式模式,单机模式部署简单使用方便,分布式模式适合大规模数据迁移。

OssImport下载安装

# 在当前工作目录下创建ossimport目录
mkdir ossimport
cd ossimport

# 下载解压
wget http://gosspublic.alicdn.com/ossimport/standalone/ossimport-2.3.1.zip
unzip ossimport-2.3.1.zip

# 查看ossimport的目录结构
ossimport
├── bin
│ └── ossimport2.jar  # 包括Master、Worker、Tracker、Console四个模块的总jar
├── conf
│ ├── local_job.cfg   # 单机Job配置文件
│ └── sys.properties  # 系统运行参数配置文件
├── console.bat         # Windows命令行,可以分布执行调入任务
├── console.sh          # Linux命令行,可以分布执行调入任务
├── import.bat          # Windows一键导入,执行配置文件为conf/local_job.cfg配置的数据迁移任务,包括启动、迁移、校验、重试
├── import.sh           # Linux一键导入,执行配置文件为conf/local_job.cfg配置的数据迁移任务,包括启动、迁移、校验、重试
├── logs                # 日志目录
└── README.md           # 说明文档,强烈建议使用前仔细阅读

OssImport单机模式配置

此配置文件大部分配置项采用默认值即可,以下只罗列需要修改的配置项,即本地待同步目录以及OSS目的端信息

vim conf/local_job.cfg

#源前缀,默认为空,如果srcType=local,则此目录是本地目录,如果是其他类型,则是源Bucket里需要同步的Object的前缀,注意如果是本地目录,需要完整目录路径(以'/'进行分割并且以'/'结尾,例: c:/example/)
srcPrefix=/home/admin/logs/bak/nginx_bak/

#目的 access key
destAccessKey=Jwd1******nMnZBs

#目的 secret key
destSecretKey=ir8Qt*****jwh5b0eF******xM5QE

#目的endpoint,请根据您的实际oss区域填写,默认为杭州的域名,如果用阿里云ecs虚拟机做迁移的,请使用internal域名,不计费且不受虚拟机带宽限制(非虚拟机无法使用);例:http://oss-cn-hangzhou-internal.aliyuncs.com
#注意:域名里不要带上bucket前缀,oss域名帮助页面:https://help.aliyun.com/document_detail/31837.html
destDomain=http://oss-cn-hangzhou-zmf.aliyuncs.com

#目的bucket,不需要加上"/"
destBucket=mybucket

#目标前缀,默认为空,直接放在bucket下(如果要将数据同步到oss的某个目录下,请以'/'结尾),注意:oss不支持以 '/' 作为文件的开头,所以destPrefix请不要配置以'/'做为开头
#一个本地文件路径为 srcPrefix + relativePath的文件,迁移到oss的路径为destDomain/destBucket/destPrefix + relativePath
#一个云端文件路径为 srcDomain/srcBucket/srcPrefix + relativePath的文件,迁移到oss的路径为destDomain/destBucket/destPrefix + relativePath
destPrefix=docs/

#数据迁移时,是否跳过已经存在的文件。当设置为true时,根据文件的size和LastModifiedTime判断是否跳过;为false时,总是覆盖OSS上已有文件。jobType为audit时此项不生效。
isSkipExistFile=true

同步本地文件到OSS的配置示例文件:https://github.com/aliyun/ossimport/blob/master/conf/local/job.cfg

执行数据同步

# 执行import.sh脚本,启动文件同步
sh import.sh

# 也可以为import.sh脚本添加可执行权限,然后直接执行
chmod +x import.sh
./import.sh

参考

  1. 阿里云OssImport官方文档:https://help.aliyun.com/document_detail/56990.html

你可能感兴趣的:(阿里云产品)