全部产品
Search
文档中心

文件存储 NAS:迁移数据至阿里云NAS

更新时间:Sep 13, 2024

配置数据传输中转节点后,您还要使用迁移工具迁移数据至阿里云文件存储NAS。本文介绍如何通过迁移工具将非阿里云的数据迁移至文件存储NAS。

前提条件

已配置数据传输中转节点ECS实例。具体操作,请参见配置数据传输中转节点

使用SFTP客户端迁移数据

当有少量文件需要一次性上传时,建议您在本地系统上安装使用SFTP客户端来完成。此方案具有以下优点:

  • 支持众多操作系统平台。

  • 提供图形化操作界面。

  1. 为本地操作系统安装SFTP客户端。

    SFTP的客户端工具有多种版本,以下示例中使用的是FileZilla,请选择适合您本地操作系统的版本下载安装SFTP客户端

  2. 建立SFTP客户端与中转节点ECS之间的连接。

    1. 打开FileZilla客户端,按照如下说明进行配置。单击Quickconnect,建立连接。

      在本地客户端与ECS服务端的连接建立之后,左侧区域会显示本地文件系统,右侧区域会显示服务端ECS的文件系统。U-D NFS0201

      参数

      说明

      Host

      中转节点ECS的公网IP地址。例如,192.0.2.1。

      Username

      中转节点ECS的用户名,且该用户拥有读写NAS文件系统目录的权限。例如,root。

      说明
      • Linux ECS实例的默认用户名为:root或ecs-user。

      • Windows ECS实例的默认用户名为:administrator。

      Password

      中转节点ECS的登录密码。例如,root登录密码。

      说明

      如果您忘记了中转节点ECS实例的密码,可通过重置实例登录密码重新为中转节点ECS实例设置登录密码。具体操作,请参见重置实例登录密码

      Port

      SFTP端口号,默认为22。

    2. 在页面右侧区域,设置Remote site中的路径为挂载了NAS文件系统的路径(例如/mnt),单击回车即可查看到NAS中的文件列表。

      UD-NFS0202

  3. 上传数据。

    将左侧区域中的文件或目录拖拽到右侧区域,即完成数据上传。

使用rsync命令行工具迁移数据

当有大量文件上传或需要频繁上传任务时,建议您在本地系统安装使用rsync命令行工具执行上传任务,此方案具有以下优点:

  • 上传后的文件元数据不变(包括属主及权限信息)。

  • 支持数据增量同步。

  • 本地Linux或macOS系统可配置crontab向云上NAS自动备份数据。

  1. 安装rsync工具。

    • Linux操作系统

      操作系统

      执行命令

      CentOS

      使用yum包管理器安装rsync。

      sudo yum install rsync

      Redhat

      Ubuntu

      使用apt包管理器安装rsync。

      sudo apt-get install rsync

      Debian

      说明

      如果您使用的其他版本Linux,请使用对应的包管理器安装rsync工具。

    • macOS操作系统

      请下载安装homebrew包管理器,然后执行以下命令安装rsync工具。

      brew install rsync
    • Windows操作系统

      请下载安装Cygwin模拟环境,您可以在安装过程中搜索安装rsync工具,也可以手动下载编译安装rsync

      说明

      需在VPC安全组打开SSH(TCP 22)端口。

  2. 上传数据。

    执行以下命令,将本地目录以增量同步的方式,上传到阿里云NAS。

    rsync -avP DirToSync/ root@192.0.2.0:/mnt/DirToSync/

    命令中的参数请根据实际值修改,参数含义如下:

    参数

    说明

    DirToSync

    需要上传的本地目录名。

    root

    上传目标NAS文件系统目录的属主。

    192.0.2.0

    已挂载文件存储NAS文件系统的Linux/Windows ECS公网IP。

    /mnt

    ECS实例中用来挂载NAS的路径。

    说明
    • rsync命令中的源路径结尾必须带有正斜线(/),否则同步后数据路径不匹配。

    • 您还可以利用rsync并发拷贝上传数据到阿里云文件存储NAS,命令如下。

      threads=<线程数量>; 
      src=<源路径/>; 
      dest=<目标路径/>; 
      rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )

      例如,线程数量为10,原路径为/abc ,目标路径为/mnt1

      threads=10; 
      src=/abc/; 
      dest=/mnt1/; 
      rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )
  3. 可选:配置定时上传备份任务。

    本地Linux或macOS操作系统,可以基于rsync命令,通过crontab配置定时上传备份任务。

    • Linux操作系统

      1. 创建本地系统到ECS的无密码通道。具体操作,请参见通过密钥认证登录Linux实例

        执行以下命令,确认连接成功。

        ssh -i ~/.ssh/ecs.pem root@1.2.3.4
        说明

        ~/.ssh/ecs.pem为密钥文件在本地的存储路径。

      2. 配置crontab。

        执行crontab -e命令打开编辑器,配置定时上传任务,配置内容如下。

        0 23 * * * rsync -av -e "ssh -i ~/.ssh/ecs.pem" ~/Documents/ root@192.0.2.0:/mnt/Documents/

        这项crontab配置将会在每天23时0分把本机登录用户的Documents目录自动上传备份数据到阿里云NAS。您可以根据实际需求替换配置中的参数。

    • macOS操作系统

      1. /usr/sbin/cron目录配置硬盘访问权限。

        请进入系统设置,单击Security & Privacy > Privacy > Full Disk Access,单击解锁,单击+,选择Macintosh HD目录,按cmd+shift+.组合键显示隐藏目录,选择/usr/sbin/cron

      2. 创建本地系统到ECS的无密码通道。具体操作,请参见通过密钥认证登录Linux实例

        执行以下命令,确认连接成功。

        ssh -i ~/.ssh/ecs.pem root@1.2.3.4
        说明

        ~/.ssh/ecs.pem为密钥文件在本地的存储路径。

      3. 配置crontab。

        执行crontab -e命令打开编辑器,配置定时上传任务,配置内容如下。

        0 23 * * * rsync -av -e "ssh -i ~/.ssh/ecs.pem" ~/Documents/ root@1.2.3.4:/mnt/Documents/

        这项crontab配置将会在每天23时0分把本机登录用户的Documents目录自动上传备份数据到阿里云NAS。您可以根据实际需求替换配置中的参数。

    说明

    当您使用rsync工具迁移数据性能较差时,可以尝试使用fpsync工具实现多线程迁移。具体操作,请参见附录:使用fpsync命令行工具迁移数据

使用Robocopy工具迁移数据

Robocopy是Windows系统自带的目录复制命令,该功能可以创建两个文件结构完全的镜像副本而不复制任何不需要的重复文件,同时还允许您保留所有相关文件信息,包括日期、时间戳等等。同时您也可以通过在windows ECS上安装最新的Python程序配置migration.py脚本实现海量数据迁移。

  1. 登录用于迁移数据的阿里云ECS实例。

  2. 迁移数据。

    执行以下命令,将源文件系统(Z盘)中的数据迁移到目标文件系统(Y盘)中。

    robocopy Z:\ Y:\ /e /w:5 /z /mt:32
    说明

    仅迁移指定目录下的数据,不包括指定目录。

    重要字段说明如下,请根据实际情况替换。

    参数

    说明

    /mt

    设置并发的线程数。默认值为8。

    取值为1~128。

    本文示例32个线程进行多线程复制。

    /w

    设置每次错误重试的间隔秒数。

    /z

    开启断点续传。

    /e

    拷贝所有子目录(包括空目录)。

    /copyall

    复制所有的文件信息。包含:

    • 数据

    • 属性

    • 时间戳

    • 访问控制列表(ACL)

    • 所有者信息

    • 审计信息

    说明

    如果您想加速迁移海量数据(例如,10 T以上的上亿小文件),可通过在windows ECS上安装最新的Python程序执行迁移。具体操作,请参见如何加速迁移数据至NAS SMB协议文件系统

  3. 检查迁移结果。

    迁移完后,执行以下Robocopy命令,检查目标文件系统是否与源文件系统一致。

    ROBOCOPY Z:\ Y:\ /e /l /ns /njs /njh /ndl /fp /log:reconcile.txt

    重要字段说明如下,请根据实际情况替换。

    参数

    说明

    /e

    仅列出目录(包括空目录)。

    /l

    不修改或复制文件,仅记录差异。

    /fp

    指在日志中包括文件的完整路径(仅在省略/ndl时有必要)。

    /ns

    指不在日志中包括文件大小。

    /ndl

    指不在日志中包括文件夹。

    /njs

    指不包括作业摘要。

    /njh

    不包括作业头。

    /log:reconcile.txt

    将迁移结果写入reconcile.txt日志中。如果已存在,将覆盖现有日志。

使用IIS FTP迁移数据

当有少量文件需要一次性上传时,建议您在本地系统配置FTP客户端来完成,此方案具有以下优点:

  • 支持众多操作系统平台。

  • 提供图形化操作界面。

在ECS上配置IIS FTP服务以及在本地系统配置FTP客户端,具体配置方式请参见设置Windows IIS Web服务

说明
  • 需在VPC安全组打开对应的FTP TCP端口。

  • 您也可以配置其他FTP服务端和客户端进行公网上传下载数据。

  • 弹性公网IP对入方向流量不收费,仅对出方向流量收费。也就是说,从公网上传数据到NAS不会收取流量费用,而从NAS下载数据则会收取流量费用。计费详情请参见弹性公网IP按量付费

附录:使用fpsync命令行工具迁移数据

  1. 下载并安装fpsync工具。

    wget -N https://github.com/martymac/fpart/archive/fpart-1.1.0.tar.gz -P /tmp
    tar -C /tmp/ -xvf /tmp/fpart-1.1.0.tar.gz
    cd /tmp/fpart-fpart-1.1.0
    sudo yum install -y automake libtool
    autoreconf -i
    ./configure
    make
    sudo make install
    sudo yum install parallel -y
    printf "will cite" | parallel --bibtex
    sudo yum install -y rsync
  2. 拷贝整个文件目录。

    fpsync -n 10 -f 10000 /data/src/ /data/dst/
    说明

    更多关于fpsync工具的信息,请参见fpsync工具

相关文档

如果您需要从本地数据中心频繁读写NAS上的大量数据,则需要创建网络专线,从数据中心直接挂载NAS进行访问。更多信息,请参见本地数据中心访问文件系统

如果您需要上传大量数据到NAS,而公网访问ECS的带宽无法满足您的需求,建议先上传数据到OSS,然后将OSS数据迁移到NAS。具体操作,请参见控制台上传文件迁移实施

后续步骤

数据上传后,您可以在业务所属的ECS或容器上挂载NAS文件系统,共享访问NAS文件系统上的数据。

以ECS为例,您可以用Linux系统挂载NFS文件系统或Windows系统挂载SMB文件系统,然后就像访问本地数据一样访问NAS上的文件数据。具体操作,请参见挂载NFS协议文件系统挂载SMB协议文件系统

您也可以在云上搭建业务应用,在多台计算节点上通过程序大量读写NAS上的数据,例如使用Nginx代理服务器代理阿里云NAS通过Windows IIS服务访问阿里云NAS

如果您不再通过中转节点ECS上传或下载数据,可以将该ECS实例释放。具体操作,请参见释放实例