NAS数据迁移工具的Windows版本,下载后解压即用。用于将对象存储(如OSS、七牛等)或本地磁盘上的文件同步到 NAS文件系统。
一. 功能
Nasimport具有以下特性:
- 支持的数据源:本地磁盘、OSS、七牛、百度对象存储、金山对象存储、又拍云、亚马逊 s3、腾讯云 cos、HTTP链接;
- 支持存量数据同步(允许指定只同步某个时间点之后的文件);
- 支持增量数据自动同步;
- 支持断点续传;
- 支持并行数据下载和上传。
二. 使用方法
运行要求
需要在能够挂载目标NAS文件系统的ECS虚拟机上运行该迁移工具。能否挂载NAS文件系统及如何挂载详见:
点击查看其中的SMB
支持的操作系统
- Windows Server 2008 标准版 SP2 32位
- Windows Server 2008 R2 数据中心版 64位
- Windows Server 2012 R2 数据中心版 64位
- Windows Server 2016 数据中心 64位
部署及配置
首先,在您本地服务器上创建同步的工作目录(这里以C:NasImport作为示例),并且将【nasimport】工具包下载在该目录中。
- 下载
- 创建一个新的工作目录,并将压缩包解压到目录中
- 编辑工作目录下的配置文件,即config/sys.properties
建议您直使用配置默认值。如有特殊要求,可以编辑配置字段值
运行服务
NasImport命令
- 提交任务:
nasimport -c config/sys.properties submit <your-job-configuration>
- 取消任务:
nasimport -c config/sys.properties clean <job-name>
- 查看任务:
nasimport -c config/sys.properties stat detail
- 重试任务:
nasimport -c config/sys.properties retry <job-name>
- 启动服务:
nasimport -c config/sys.properties start
启动服务
- 进入工作目录,并在当前目录中打开一个命令行
- 在命令行中运行
nasimport –c config/sys.properties start
备注:
- 请保持nasimport处于运行状态。或者,用户可以将其设置为一个Windows后台服务
- 启动nasimport时,可以将日志重定向到文件,方便以后查看`nasimport -c
configsys.properties start > nasimport.log 2>&1`
定义任务
configlocal_job.cfg是一个任务定义文件的模板,用户可以按照此模板来定义自己的任务。
备注:
- 如果配置了自动增量模式,则任务会定期被执行以扫描最新的数据,该任务永远不会结束。
- 对于 srcType 为 youpai 的情况,由于又拍云本身 API 限制,list 文件的操作无法实现 checkpoint,在 list 完成之前杀掉进程会导致重新 list 所有文件的操作。
示例任务提交
这里,我们尝试将本地的C:\Program Files\Internet Explorer复制到NAS上。
- 编辑任务:复制一份configlocal_job.cfg到工作目录,编辑以下项
注意,destMountDir要选择一个当前不存在的盘符,否则会和已经存在的产生冲突。destMountTarget为NAS的挂载点。
- 提交任务:在工作目录重新启动一个命令行,运行
nasimport -c config\sys.properties submit local_job.cfg
注意事项:
- 如果有同名任务正在执行,则提交任务会失败。
- 如果您需要暂停同步任务,您可以停止 nasimport 进程,需要同步时重启 nasimport 进程即可,重启后会按照上次的进度继续上传。
查看任务状态
在命令行中输入nasimport -c config\sys.properties stat detail
这里会显示当前任务的总体的执行进度,并且会显示当前正在执行的 task进度。例如上文中:“4158464/30492741”表示:总共需要上传的数据量(4158464字节)/已经上传完成的数据量(30492741字节)。“1/1” 表示:总共需要上传的文件个数(1个)/已经上传完成的文件个数(1个)。
迁移工具会将用户提交的一个 job 任务分解为多个 task 并行执行,当所有的 task 都执行完成之后,job 任务才算执行完成。任务执行完成之后,JobState 会显示为”Succeed”或者”Failed”,表示任务执行成功或者失败。如果任务执行失败,可以通过以下文件查看各个task失败的原因:
master/jobs/$jobName/failed_tasks/*/audit.log
对于任务失败的情况,我们在工具中已经做了较为充分的重试,对于可能由于数据源或者目标源暂时不可用引起的失败情况,可以通过如下命令尝试重新执行失败的 TASK:
nasimport -c config/sys.properties retry <job-name>
一段时间后,再次运行stat detail命令,
此时,SucceededTasks
为1,表示任务已经完成。打开文件浏览器,可以看到,h:盘中,已经有相关的文件了:
常见失败原因
- 任务配置出错,比如 access key/id 出错,权限不足等,这种情况下通常现象是所有task都失败,具体确认需要查看工作目录下的nasimport.log 文件(启动nasimport时需要将日志重定向到此文件,或者,直接在运行nasimport start的命令行上直接查看)。
- 源文件名的编码方式与系统默认的文件名编码方式不符,例如在 windows下文件名默认为 gbk 编码,linux 下默认为 utf-8 编码,对于数据源是 nfs 的情况下较容易出现该问题。
- 上传过程中源目录的文件发生了修改,这种情况在 audit.log 里会提示SIZE_NOT_MATCH 相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到 nas。
- 源文件在上传过程中被删除,导致下载文件时失败。
- 数据源出现问题导致下载数据源文件失败。
- 没有先杀掉进程再执行 clean 有可能会导致程序执行异常。
- 程序异常退出,任务状态为 Abort,这种情况请联系我们(请加旺旺群:1562614356 )。
建议
在配置迁移服务时,如果源端是 oss,请将 srcDomain 设为带 internal 的内网域名,可以省掉从 oss 源端下载的流量费,仅收取 oss 访问次数的费用,且可以获得更快的迁移速度,oss 内网域名您可以从 oss 控制台获取。
如果您的 NAS 在专有网络中,且源端是 oss,请将 srcDomain 设为 oss 提供 的VPC 环境域名,各 Region 对应的 VPC 环境域名:点击查看。