一、准备工作
工具
rclone:开源的对象存储在线迁移工具,用于文件和目录的同步,支持阿里云的oss、minio 、亚马逊S3 等。
注意事项
#centos 7设置时区
timedatectl set-timezone Asia/Shanghai
#时间同步
ntpdate ntp.aliyun.com
二、部署过程
工具安装
curl https://rclone.org/install.sh | sudo bash
由于是外网地址,下载安装很麻烦,这里提供下载二进制包
下载地址
https://yepk.lanzouy.com/ikHOKlua7ra 密码:minio
https://pan.baidu.com/s/1rSZ6fzRXbjtYYIDYlVSTGQ?pwd=9tz7 提取码: 9tz7
rclone 运行文件放在
/usr/bin
目录下
生成配置文件
rclone config
#按照提示一步步,输入相应配置,即可。生成的文件位于:/root/.config/rclone/rclone.conf目录下。
注:熟练的话,一般可以直接手动创建此文件,放在指定目录就可以了。我工作中一般手动编辑创建此文件。
手动创建配置文件
[source] #声明 自定义名字1
type = s3 # 类型
provider = Minio
env_auth = false
access_key_id = access_key_id # Minio的key
secret_access_key = secret_access_key # minio的secret_access_key
region = cn-east-1 # 时区默认这个
endpoint = 地址 例:http://192.168.0.11:9000
location_constraint =
server_side_encryption =
[target] #声明 自定义名字2 不能重复
type = s3
provider = Minio
env_auth = false
access_key_id = access_key_id
secret_access_key = secret_access_key
region = cn-east-1
endpoint = 地址 例:http://192.168.0.11:9000
location_constraint =
server_side_encryption =
acl = public-read-write #配置公开读权限
配置文件位于:${HOME}/.config/rclone/rclone.conf
目录下。
开始迁移
sudo rclone -P sync source:bucket_name/dir_name/ target:bucket_name/dir_name/
# 格式 rclone -P sync(同步) source(自定义名字1):bucket_name(桶名)/dir_name(文件夹或文件名)/ target(自定义名字2):bucket_name/dir_name/
Rclone命令
常用命令
文件上传
rclone copy /home/backup gdrive:backup # 本地路径 配置名字:谷歌文件夹名字
文件下载
rclone copy gdrive:backup /home/backup
列表
rclone ls gdrive:backup
rclone lsl gdrive:backup # 比上面多一个显示上传时间
rclone lsd gdrive:backup # 只显示文件夹
新建文件夹
rclone mkdir gdrive:backup
挂载
rclone mount gdrive:mm /root/mm &
rclone mount gdrive:mm /root/mm --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 &
卸载
fusermount -qzu /root/mm
其他命令
# https://softlns.github.io/2016/11/28/rclone-guide/
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。
rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。 –dry-run标志来检查要复制、删除的数据
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 - 交互式查找重复文件,进行删除/重命名操作。
--transfers 1 #限制线程
--min-size 10G #大小限制
-P #显示进度
常用参数
--s3-provider Other
--max-backlog #N # 在 sync/copy/move 时使用,占用 N 倍 KB 内存
--buffer-size=SIZE # 加速 sync/copy/move
--bwlimit UP:DOWN # 上传下载限速,b|k|M|G
--size-only 使用sync功能配合此参数,表示只有文件大小有变化才会同步文件,可能存在文件大小未变但是文件已经发生变化,不推荐使用;
--checksum 通过md5判断文件是否有变化,md5发生变化时才会同步文件;如果source是本地磁盘,这会带来较多的磁盘和CPU消耗;如果source和destination都是对象存储,则推荐使用这个参数;
--update --use-server-modtime 通过mtime判断文件是否变化,只有当本地文件的mtime较新时,文件才会上传
--fast-list rclone默认的遍历方式是单独处理每个目录,每个目录调用1次API。使用这个参数将会将所有文件信息加入内存(1000个文件进行1次API调用),1个文件消耗1k内存。
--no-traverse 当destination中文件较多时,使用此参数将会直接查找这个文件,而不是通过文件列表
--max-age 限制文件最大age,用来上传最近的文件
--s3-no-head 默认上传后会通过head检测文件是否已经上传,通过此参数可关闭。
--s3-upload-cutoff 文件大于这个值会使用分片上传,默认值是200M,最大值是5G https://rclone.org/s3/#s3-upload-cutoff
--s3-disable-checksum 不计算md5
--s3-upload-concurrency 默认值4,有多少chunck同时上传,如果传少量大文件,提高这个参数可以提升带宽。
--s3-chunk-size 默认值 5M
--s3-max-upload-parts 默认值10000
--s3-force-path-style 默认值true
--s3-v2-auth 默认值false
--s3-list-chunk 默认值1000,每次list返回的key数量
举例:
./rclone copy --checksum --update --use-server-modtime -P target:html/static/ /html/static
当md5变化Mtime比本地新时更新
官方网站:
https://rclone.org/flags/