Minio数据迁移
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盘、光盘等介质实现数据的迁移