使用rsync从旧文件系统同步到CFS文件系统

文件存储 CFS

  • 动态与公告
    • 功能发布记录
    • 产品公告
      • 关于CFS监控指标调整公告
  • 产品描述
    • 产品介绍
    • 基本概念
    • 产品特性
    • 产品规格
    • 使用限制与建议
    • 应用场景
    • 选型指导
      • 如何选择CFS和PFS
      • 如何选用CFS、BOS和CDS
  • 产品定价
    • 按需计费
    • 存储包计费
    • 余额不足提醒和欠费处理
    • 计费案例
  • 快速入门
    • 入门概述
    • 快速入门(Linux)
    • 快速入门(Windows)
  • 操作指南
    • 开通服务
    • 管理文件系统
      • 创建文件系统
      • 删除文件系统
      • 查看文件系统详情
      • 设置文件系统容量上限
    • 挂载访问
      • 添加挂载点
      • BCC挂载与卸载CFS
        • Linux系统挂载与卸载
          • 单台BCC挂载与卸载SMB协议CFS
          • 多台BCC批量挂载与卸载NFS协议CFS
          • 单台BCC挂载与卸载NFS协议CFS
        • Windows系统挂载与卸载SMB协议CFS
        • 新购BCC时挂载CFS文件系统
      • CCE使用CFS
    • 权限组管理
    • 多用户访问控制
    • 数据加密
    • 管理标签
    • 备份
    • 监控与报警
      • 查看监控
      • 报警管理
      • 指标含义
    • 云审计
  • 典型实践
    • 为不同目录设置不同的用户权限
    • 跨地域或账号使用文件系统
    • 使用SFTP上传下载CFS文件系统数据
    • 使用rsync从旧文件系统同步到CFS文件系统
    • 使用Terraform管理CFS最佳实践
    • 性能测试方法
      • Linux系统性能测试方法
      • Windows系统性能测试方法
  • API参考
    • API功能更新记录
    • API概述
    • 接口概览
    • 通用说明
    • 服务域名
    • 错误码
    • 文件系统相关接口
      • 创建文件系统
      • 更新文件系统
      • 查询文件系统
      • 查询挂载客户端
      • 释放文件系统
      • 更新文件系统标签
    • 挂载点相关接口
      • 创建挂载点
      • 查询挂载点
      • 删除挂载点
    • 数据类型
  • Go-SDK
    • 概述
    • 初始化
    • 文件系统
    • 挂载点
    • 错误处理
  • 常见问题
    • 常见问题总览
    • 一般类问题
    • 计费类问题
    • NFS协议问题
    • SMB协议问题
  • 服务等级协议SLA
    • CFS服务等级协议(SLA)
所有文档
menu
没有找到结果,请重新输入

文件存储 CFS

  • 动态与公告
    • 功能发布记录
    • 产品公告
      • 关于CFS监控指标调整公告
  • 产品描述
    • 产品介绍
    • 基本概念
    • 产品特性
    • 产品规格
    • 使用限制与建议
    • 应用场景
    • 选型指导
      • 如何选择CFS和PFS
      • 如何选用CFS、BOS和CDS
  • 产品定价
    • 按需计费
    • 存储包计费
    • 余额不足提醒和欠费处理
    • 计费案例
  • 快速入门
    • 入门概述
    • 快速入门(Linux)
    • 快速入门(Windows)
  • 操作指南
    • 开通服务
    • 管理文件系统
      • 创建文件系统
      • 删除文件系统
      • 查看文件系统详情
      • 设置文件系统容量上限
    • 挂载访问
      • 添加挂载点
      • BCC挂载与卸载CFS
        • Linux系统挂载与卸载
          • 单台BCC挂载与卸载SMB协议CFS
          • 多台BCC批量挂载与卸载NFS协议CFS
          • 单台BCC挂载与卸载NFS协议CFS
        • Windows系统挂载与卸载SMB协议CFS
        • 新购BCC时挂载CFS文件系统
      • CCE使用CFS
    • 权限组管理
    • 多用户访问控制
    • 数据加密
    • 管理标签
    • 备份
    • 监控与报警
      • 查看监控
      • 报警管理
      • 指标含义
    • 云审计
  • 典型实践
    • 为不同目录设置不同的用户权限
    • 跨地域或账号使用文件系统
    • 使用SFTP上传下载CFS文件系统数据
    • 使用rsync从旧文件系统同步到CFS文件系统
    • 使用Terraform管理CFS最佳实践
    • 性能测试方法
      • Linux系统性能测试方法
      • Windows系统性能测试方法
  • API参考
    • API功能更新记录
    • API概述
    • 接口概览
    • 通用说明
    • 服务域名
    • 错误码
    • 文件系统相关接口
      • 创建文件系统
      • 更新文件系统
      • 查询文件系统
      • 查询挂载客户端
      • 释放文件系统
      • 更新文件系统标签
    • 挂载点相关接口
      • 创建挂载点
      • 查询挂载点
      • 删除挂载点
    • 数据类型
  • Go-SDK
    • 概述
    • 初始化
    • 文件系统
    • 挂载点
    • 错误处理
  • 常见问题
    • 常见问题总览
    • 一般类问题
    • 计费类问题
    • NFS协议问题
    • SMB协议问题
  • 服务等级协议SLA
    • CFS服务等级协议(SLA)
  • 文档中心
  • arrow
  • 文件存储CFS
  • arrow
  • 典型实践
  • arrow
  • 使用rsync从旧文件系统同步到CFS文件系统
本页目录
  • 操作步骤

使用rsync从旧文件系统同步到CFS文件系统

更新时间:2025-08-21

本文档提供了一种基于rsync的数据同步方案,帮助用户将存储在本地机房、其它云厂商的文件系统数据备份或迁移到百度智能云CFS中。

以下假设被同步的文件系统已经挂载在一台或者多台服务器上,路径为/old_fs。

操作步骤

  1. 登录云服务器

    1. 在云服务器BCC上绑定EIP,从而拥有公网IP。
    2. 确保远端服务器可以通过ssh方式登录到BCC的公网IP。
  2. 配置公钥

    登录远端服务器,执行如下命令:

    Plain Text
    1ssh-keygen -t rsa      #创建公钥,会提示输入信息,可以不用管,一直敲回车即可
    2cat ~/.ssh/id_rsa.pub  #查看生成的公钥,将这里的内容拷贝,准备输入下一步中的文件中 

    登录BCC,编辑文件~/.ssh/id_rsa.pub,将上一步拷贝的公钥,输入到这里。

    至此,现在从远端服务器,即可无需秘钥登录并访问BCC。

  3. 策略评估

    用户需要评估以下因素,以采用更合适的方式来同步数据:

    1. 同步期间是否可以暂停对已有文件系统的写入。如果可以,则只执行一次全量同步(同步方案4.1)。如果不可以,请评估同步期间的新写入数据量,若数据量很少,可以使用全量同步+一次增量同步(同步方案4.2),否则使用周期性同步方案4.3。
    2. 文件系统的数据量。若已有文件系统数据量较大,则分目录进行同步。每个子目录的同步,是不相关的,既可同时进行,也可序列化执行。同时,CFS支持多个虚机同时挂载,适当增加虚机的数量来并发执行子目录的同步可提高同步的速度。
  4. 同步方案

    同步过程会针对用户对旧文件系统是否有写操作而略有不同。下面分别讨论以下几种情况:

    4.1 用户没有写IO请求到原有文件系统

    首先确认CFS文件系统已经被mount到BCC上机器上的/mnt/cfs/或其他目录上,接着在远端服务器上执行如下命令:

    Plain Text
    1rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_1
    2rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_2
    3rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_3
    4...

    注释

    –z:允许压缩

    –v:冗长

    –r:递归

    user:bcc的登录账号

    bcc_ip:BCC的公有IP地址

    4.2 用户有少量的写IO请求到原有文件系统

    若用户有写IO的请求,此时通过rsync命令,不能保证原文件系统和CFS文件系统保持绝对同步。但rsync内部的算法可以保证两个文件系统是大部分同步的。用户可以在第一次rsync执行完毕后,暂停应用程序的写操作IO到原有文件系统。具体步骤如下:

    1. 用户对旧文件系统的写IO可以继续。在远端服务器上执行如下命令:
    Plain Text
    1rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_1
    2rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_2
    3rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_3
    4...
    1. 暂停用户对旧文件系统的写IO。在远端服务器上执行如下命令:
    Plain Text
    1rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_1
    2rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_2
    3rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_3
    4...

    第二次执行rsync操作时,由于已经做过一次同步操作,第二次会根据计算两个文件的差异,然后进行同步。因此,第二次执行rsync操作会快很多。

    4.3 用户有大量的写IO请求到原有文件系统

    当用户的应用程序有大量的写IO,同时又不能暂停IO的情况下。理论上无法通过同步保证旧文件系统和CFS的强一致性。此时可以考虑周期的运行rsync操作,尽可能让两个文件系统保持最大程度的一致。在Linux系统下,有多重周期执行命令的办法,这里我们推荐使用crontab,它可以方便的周期的调用rsync。例如:

    Plain Text
    1crontab -e

    接着将下列内容输入,其含义是每间隔1小时调动一次rsync命令。

    Plain Text
    1* */1 * * * rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_1

    可通过如下命令查看crontab命令是否配置成功。

    Plain Text
    1crontab -l

    当用户经过一段周期的从旧文件系统到百度CFS的同步后,选择一个合适时机,暂停应用程序对旧文件系统的写操作,同时删掉crontab的任务,操作如下:

    Plain Text
    1crontab -e #根据提示,删除rsync任务并退出

    最后再手动的执行以下rsync命令,再次确保两个文件系统完全同步。

    Plain Text
    1rsync -zvr /old_fs/sub_folder_1/ user@bcc_ip:/mnt/cfs/sub_folder_1
    2rsync -zvr /old_fs/sub_folder_2/ user@bcc_ip:/mnt/cfs/sub_folder_2
    3rsync -zvr /old_fs/sub_folder_3/ user@bcc_ip:/mnt/cfs/sub_folder_3
    4...

    此时,用户则可以从旧的服务器迁移应用程序到百度BCC服务器上。

  5. 统计结果

    每当执行完rsync后,会显示出这次同步的结果,其中包括:

    1. 同步花费的时间;
    2. 传送了多少字节;
    3. IO传送的速度;
    4. 一共有多少文件被同步。

上一篇
使用SFTP上传下载CFS文件系统数据
下一篇
使用Terraform管理CFS最佳实践