一、方案背景 由于服务器上数据量越来越大,备份的数据会占用硬盘空间(虽说云硬盘可随时扩容,但是存在风险),定时将备份上传到COS。不仅节省服务器硬盘空间,也大大提高备份数据的安全性、可靠性。

二、操作步骤 1、软件依赖:JDK1.7 或以上 下载链接:https://github.com/tencentyun/cos_migrate_tool_v5

2、解压缩工具包,或者使用git clone直接克隆到本地 Windows 解压并保存到某个目录,例如 C:\Users\Administrator\Downloads\cos_migrate Linux 解压并保存到某个目录 unzip cos_migrate_tool_v5-master.zip && cd cos_migrate_tool_v5-master 迁移工具结构 正确解压后的 COS Migration 工具目录结构如下所示: COS_Migrate_tool |——conf #配置文件所在目录 | |——config.ini #迁移配置文件 |——db #存储迁移成功的记录 |——dep #程序主逻辑编译生成的JAR包 |——log #工具执行中生成的日志 |——opbin #用于编译的脚本 |——src #工具的源码 |——tmp #临时文件存储目录 |——pom.xml #项目配置文件 |——README #说明文档 |——start_migrate.sh #Linux 下迁移启动脚本 |——start_migrate.bat #Windows 下迁移启动脚本 3、修改 config.ini 配置文件 在执行迁移启动脚本之前,需先进行 config.ini 配置文件修改(路径:./conf/config.ini) 以下为从本地迁移、备份到cos type 表示迁移类型,用户根据迁移需求填写对应的标识。本地[migrateType]的配置内容是type=migrateLocal。 配置迁移任务 用户根据实际的迁移需求进行相关配置,主要包括迁移至目标 COS 信息配置及迁移任务相关配置。 vim conf/config.ini中每项有详细解释说明 配置本地数据源 migrateLocal 若从本地迁移至 COS,则进行该部分配置,具体配置项及说明如下:

4、运行迁移工具 Windows 双击 start_migrate.bat 即可运行。 Linux 从config.ini配置文件读入配置,运行命令为: sh start_migrate.sh

迁移机制原理 COS 迁移工具是有状态的,已经迁移成功的会记录在 db 目录下,以 KV 的形式存储在 leveldb 文件中。每次迁移前对要迁移的路径,先查找下 db 中是否存在, 如果存在,且属性和 db 中存在的一致, 则跳过迁移,否则进行迁移。这里的属性根据迁移类型的不同而不同,对于本地迁移,会判断 mtime。对于其他云存储迁移与 Bucket 复制,会判断源文件的 etag 和长度是否与 db 一致。因此,我们参照 db 中是否有过迁移成功的记录,而不是查找 COS,如果绕过了迁移工具,通过别的方式(如 COSCMD 或者控制台)删除修改了文件,那么运行迁移工具由于不会察觉到这种变化,是不会重新迁移的。

利用脚本实现分月备份 替换备份配置文件中的"月目录" #!/bin/sh Date=date |awk '{print $6}' Path=grep cosPath /data/soft/cos_migrate_tool_v5-master/conf/config.ini |awk -F '/' '{print $3}' #PATH=grep cosPath /data/scripts/cos.py |awk -F '/' '{print $3}' /usr/bin/sed -i "s/${Path}/${Date}/g" /data/soft/cos_migrate_tool_v5-master/conf/config.ini

crontab 0 1,13 * * * sh /data/script/bak.sh
0 2 * * * sh /data/soft/cos_migrate_tool_v5-master/start_migrate.sh 0 0 1 * * sh /data/script/cosdate.sh #每月执行一次