Minio数据迁移

迁移方案有以下几种

1、使用Rclone实现minio数据的迁移

  • 使用场景:网络通畅,不同服务器间迁移、云存储系统迁移、支持分布式存储
  • 特性:使用需要安装rclone程序;安全,便捷;可维护性高

2、使用scp命令实现minio数据的迁移

  • 使用场景:网络通畅,不同服务器间迁移、支持分布式存储(但需要考虑分布式存储节点的配置,存在局限性,感谢@qq_38212332)
  • 特性:基于Linux本身Secure Copy实现;安全,便捷,简单易用

3、使用硬件媒介实现minio数据的迁移

  • 使用场景:网络通畅或者不同网络,不同服务器间迁移
  • 特性:安全,简单易用;但是耗时较多,操作繁琐

使用Rclone实现minio数据的迁移

1. 准备

1.1 使用工具

rclone是一个开源的命令行程序,用来同步文件和目录进或者出云存储系统。它旨在成为"云存储的rsync"

2. 实现

2.1 rclone安装
  • 在线安装

    bash curl https://rclone.org/install.sh | sudo bash
    
  • 压缩包

    # 方法1.上传文件到服务器
    # 方法2. 在线下载
    # curl -O http://downloads.rclone.org/rclone-current-linux-amd64.zip
    # 方法3. 在线下载
    # wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
    
    # 安装解压缩的依赖
    # yum -y install unzip
    
    # 解压
    unzip rclone-v1.56.0-linux-amd64.zip
    # 赋权
    chmod 0755 ./rclone-v1.56.0-linux-amd64.zip/rclone
    # 拷贝到 /usr/bin/ 可以直接使用 rclone命令
    cp ./rclone-v1.56.0-linux-amd64.zip/clone /usr/bin/
    # 删除源文件
    rm -rf ./rclone-v1.56.0-linux-amd64.zip
    
2.2 生成配置文件
2.2.1 运行配置命令

​ 生成的文件位置:/root/.config/rclone/rclone.conf

# ./rclone config
rclone config
2.2.2 配置参数

​ 第一步选择:n,输入name;依次进行参数的配置

2021/09/30 10:50:23 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
# 新建一个配置文件
n/s/q> n

name> minio
Storage> s3
provider> Minio
env_auth> false
access_key_id> minio
secret_access_key> 123
region> 
endpoint> http://172.23.27.112:9000
location_constraint>
acl> 3
server_side_encryption> 
sse_kms_key_id> 

# 高级配置(结束)
Edit advanced config?
y) Yes
n) No (default)
y/n> n
2.2.3 配置文件

​ 路径:/root/.config/rclone/rclone.conf

​ 备注:可以在一个配置文件中配置多份,使用[name]来区分

[oldminio]
type = s3
provider = Minio
env_auth = false
access_key_id = minio
secret_access_key = 123
region = cn-east-1
endpoint = http://IP:PORT
location_constraint =
server_side_encryption =

[newminio]
type = s3
provider = Minio
env_auth = false
access_key_id = minio
secret_access_key = 123
region = cn-east-1
endpoint = http://IP:PORT
location_constraint =
server_side_encryption =
2.3 使用
2.3.1 常见命令
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。
rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。
rclone move - 将源数据移动到目的地址。
rclone delete - 删除指定路径下的文件内容。
rclone purge - 清空指定路径下所有文件数据。
rclone mkdir - 创建一个新目录。
rclone rmdir - 删除空目录。
rclone check - 检查源和目的地址数据是否匹配。
rclone ls - 列出指定路径下所有的文件以及文件大小和路径。
rclone lsd - 列出指定路径下所有的目录/容器/桶。
rclone lsl - 列出指定路径下所有文件以及修改时间、文件大小和路径。
rclone md5sum - 为指定路径下的所有文件产生一个md5sum文件。
rclone sha1sum - 为指定路径下的所有文件产生一个sha1sum文件。
rclone size - 获取指定路径下,文件内容的总大小。.
rclone version - 查看当前版本。
rclone cleanup - 清空remote。
rclone dedupe - 交互式查找重复文件,进行删除/重命名操作。
2.3.2 常用操作
  • **rclone lsd:**列出指定path下,所有的目录、容器、桶。

    # remote 为配置文件中的[name]
    rclone lsd remote:path
    
  • rclone copy:将文件从源复制到目的地址,跳过已复制完成的。

    # `rclone copy` 复制指定路径下文件
    rclone copy source:sourcepath dest:destpath
    
  • **rclone sync:**同步的始终是 path 目录下的数据(空目录将不会被同步),而不是 path 目录。同步数据时,可能会删除目的地址的数据;建议先使用–dry-run 标志来检查要复制、删除的数据。同步数据出错时,不会删除任何目的地址的数据。

    rclone sync source:path dest:path
    
  • **rclone move:**同步数据时,可能会删除目的地址的数据;建议先使用–dry-run 标志来检查要复制、删除的数据。

    rclone move source:path dest:path
    
  • **rclone purge:**清空 path 目录和数据。

    rclone purge remote:path
    
  • **rclone mkdir:**创建 path 目录。

    rclone mkdir remote:path
    

使用scp命令实现minio数据的迁移

1. 准备

1.1 使用工具

scp:secure copy,是Linux 系统基于ssh登录进行安全的远程文件拷贝命令,用于Linux之间复制文件和目录。

1.2 基本语法
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2

scp [可选参数] file_source file_target 

2. 实现

2.1 使用实例
  • 从本地复制到远程

    复制文件

    # 指定了用户名,命令执行后需要再输入密码
    # 指定了远程的目录,文件名字不变
    scp local_file remote_username@remote_ip:remote_folder 
    # 指定了文件名
    scp local_file remote_username@remote_ip:remote_file 
    
    # 没有指定用户名,命令执行后需要输入用户名和密码
    # 仅指定了远程的目录,文件名字不变
    scp local_file remote_ip:remote_folder 
    # 指定了文件名
    scp local_file remote_ip:remote_file 
    

    复制文件夹

    # 指定了用户名,命令执行后需要再输入密码
    scp -r local_folder remote_username@remote_ip:remote_folder 
    # 没有指定用户名,命令执行后需要输入用户名和密码
    scp -r local_folder remote_ip:remote_folder 
    
  • 从远程复制到本地

    与本地到远程相反

    scp remote_username@remote_ip:remote_folder local_file
    scp -r remote_username@remote_ip:remote_folder local_folder 
    
2.2 minio迁移

在旧服务器执行如下命令,拷贝文件

命令:

1)scp -r 原bucket路径 用户名@IP:新bucket路径

2)输入密码

3)循环将原minio存储服务器中所有的bucket都拷贝到新minio服务器

例如:

# 从原minio桶test 复制到指定地址的minion指定桶中,未说明则新建形同名称桶
scp -r /opt/minio/data/test root@172.18.21.126:/opt/minio/data/

# 会提示输入密码
password:

使用硬件媒介实现minio数据的迁移

场景:不同网段、网络不通时

通过U盘、光盘等介质实现数据的迁移

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐