阿里云网站如何建设视频,怎么学网站开发,做网站的费用记什么会计科目,青海保险网站建设公司数据同步工具使用总结【rclone、rsync、scp】一、数据处理背景二、数据处理方法对比1、数据关系梳理2、不同工具处理方法3、经验总结三、工具扩展知识1、rclone工具介绍#xff08;1#xff09;、rclone概述#xff08;2#xff09;、安装工具及配置本地文件迁移到云上服务…
数据同步工具使用总结【rclone、rsync、scp】一、数据处理背景二、数据处理方法对比1、数据关系梳理2、不同工具处理方法3、经验总结三、工具扩展知识1、rclone工具介绍1、rclone概述2、安装工具及配置本地文件迁移到云上服务本地文件同步到云上服务2、rsync工具介绍1、rsyncRemote Sync远程同步2rsync同步源3、配置rsync源配置源的两种表达方式免交互格式3、scp工具介绍一、数据处理背景
作为数据工作者日常工作中常见工作有数据同步网络数据抓取系统数据入库日志数据搜集还有数据分析、挖掘等等。数据数据同步工作本地数据文件的复制本地服务器间数据同步本地服务器到网络存储网盘、NAS、对象存储等的数据同步网络存储之间的数据同步大数据非结构性数据同步等。本文主要是希望将十几个T的数据从A服务器同步到B服务器数据源是由MinIO实现的对象存储服务提供部署在C服务器mount挂载在A服务器制定路径由于服务器访问安全问题访问策略上如此定义。
二、数据处理方法对比
1、数据关系梳理
数据源由MinIO服务提供挂载在A服务器制定路径。在数据同步过程我们无需关注A服务器和C服务器之间的访问关系。在数据同步效率上可能带来的瓶颈由a、A服务器和C服务器之间的网络带宽b、C服务器提供MinIO服务的并发能力。A服务器和B服务器可通过SSH访问但无法访问C服务器。 B服务器ssh访问A服务器端口默认22 用户名root 密码1qazwsx A服务器IP:192.168.1.100; 数据路径/data/bigdata B服务器数据路径/data/bigdata; 数据路径/data/bigdata
2、不同工具处理方法
scp复制 简单直接比较适合小文件传输没有复杂的配置。该命令和本地cp命令参数大致相同区别在于跨服务器复制。命令格式sudo scp [属性参数] 源数据路径 目标数据路径如果源数据路径为远程服务器则意味着数据从远程服务器复制到本地如果源数据路径为本地则意味着数据由本地复制到远程服务器。登录B服务器执行如下脚本
sudo scp -r root192.168.1.100:/data/bigdata /data/上述命令实现数据从A服务器复制到B服务器。该命令在执行大文件复制时可能因为网络环境因素导致数据复制终端不支持断点续传。
rsync同步 支持断点续传同步执行失败可以再次执行检查数据状态继续完成前次未同步数据Linux系统包自带工具需要单独安装命令参数相对复杂日常简单的数据同步工作基本满足需求数据传输效率较scp高些结合inotify-tools可实现数据实时同步; parallel可以实现多线程并行处理命令格式sudo rsync [属性] 源数据路径 目标数据路径如果源数据路径为远程服务器则意味着数据从远程服务器复制到本地如果源数据路径为本地则意味着数据由本地复制到远程服务器。登录B服务器执行如下脚本
sudo rsync -av root192.168.1.100:/data/bigdata /data/bigdata上述命令实现数据从A服务器到B服务器数据同步。适合比较大的文件同步支持断点续传。需要注意的是源数据路径和目标数据路径均需指定明确存在的路径然后将路径下所有数据资源同步到目标路径下不会创建根路径名称。
rclone同步 支持断点续传可实现服务器间的数据同步复制工作功能非常强大需要自主安装的第三方工具包。支持本地数据同步功能具有与unix命令rsync、cp、mv、mount、ls、ncdu、tree、rm和cat相当的强大云功能支持大文件的快速传输默认支持多线程数据同步效率大约是rsync的三倍命令格式sudo rclone 源数据路径 目标数据路径 [属性]如果源数据路径为远程服务器则意味着数据从远程服务器复制到本地如果源数据路径为本地则意味着数据由本地复制到远程服务器。登录B服务器首先需要配置rclone配置文件
sudo rcllone config 按照向导提示配置远程服务器的参数信息。证书部分如果均为空则按照用户名密码方式认证生成参数结果如下 配置参数也可以复制如下信息仅仅修改标识符服务器B的IPuser, port, 其他保持不变。
[svra] # 标识符很重要可以随意起
type sftp
host 192.168.1.100 # 改为服务器B的ip
user root # 默认root用户
port 22 # 默认22端口如果是其他端口请修改
# key_file ~/.ssh/rclone-merged #证书认证可以删除该行仅仅用户名密码认证方式
shell_type unix
md5sum_command md5sum # 向导生成时可以选择为空
sha1sum_command sha1sum # 向导生成时可以选择为空执行如下命令实现数据同步
sudo rclone sync svra:/data/bigdata /data/bigdata -u -v -P --transfers20 --ignore-errors --buffer-size128M --drive-acknowledge-abuse上述命令实现数据从A服务器到B服务器数据同步。适合比较大的文件同步支持断点续传。需要注意的是源数据路径和目标数据路径均需指定明确存在的路径然后将路径下所有数据资源同步到目标路径下不会创建根路径名称。
3、经验总结
scp 小白救星但大文件是噩梦。优势命令简单、加密传输、系统预装致命缺陷断点续传0传输10GB文件若中断必须重头再来适用场景单文件1GB、临时备份、内网低风险环境rsync企业级神器增量同步碾压全场。核心理由仅传输差异部分节省带宽70%–partial断点续传bwlimit5000限速5MB/s避免挤爆业务实测数据同步100GB变化文件scp需1.5小时 → rsync仅18分钟rclone强大的数据同步工具云时代数据搬运神奇。支持几乎所有云存储网盘本地服务器之间的数据同步。重点需要维护好配置文件中各个存储资源信息
三、工具扩展知识
1、rclone工具介绍
1、rclone概述
Rclone 是一款的命令行工具支持在不同对象存储、网盘间同步、上传、下载数据。 官网网址https://rclone.org/ Github 项目https://github.com/ncw/rclone 最近有一个不幸的消息是Amazon 禁止了 rclone 在他家存储上使用好忧伤。 新闻地址https://forum.rclone.org/t/rclone-has-been-banned-from-amazon-drive/2314 新闻地址https://www.lowendtalk.com/discussion/115117/rclone-banned-from-amazon-drive 支持的主流对象存储有 Google Drive Amazon S3 Openstack Swift / Rackspace cloud files / Memset Memstore Dropbox Google Cloud Storage Amazon Drive Microsoft One Drive Hubic Backblaze B2 Yandex Disk
The local filesystem
2、安装工具及配置
工具安装 以Ubuntu系统为例执行在线安装命令亦可下载安装包离线安装。
sudo -v ; curl https://rclone.org/install.sh | sudo bash资源配置 执行下面命令按照向导选择对应资源配置类型生成配置文件
sudo rclone config
Current remotes:
n) New remote
s) Set configuration password
q) Quit config
n/s/q q生成配置文件类型举例 服务器资源 [svra] # 标识符很重要可以随意起
type sftp
host 192.168.1.100 # 改为服务器B的ip
user root # 默认root用户
port 22 # 默认22端口如果是其他端口请修改
# key_file ~/.ssh/rclone-merged #证书认证可以删除该行仅仅用户名密码认证方式
shell_type unix
md5sum_command md5sum # 向导生成时可以选择为空
sha1sum_command sha1sum # 向导生成时可以选择为空S3协议类型 # cat /root/.config/rclone/rclone.conf [src] #s数据源服务type s3provider Minioenv_auth falseaccess_key_id xxxxxxsecret_access_key xxxxxxregion cn-east-1endpoint http://10.0.176.163:22829location_constraint server_side_encryption [des] #目标数据服务服务type s3provider Minioenv_auth falseaccess_key_id xxxxxxsecret_access_key xxxxxxregion cn-east-1endpoint http://10.0.176.163:20445location_constraint server_side_encryption 服务期间免密登录设置按需 生成密钥对 在客户端上执行命令生成密钥对。然后合并秘钥最终会在~/.ssh/目录下生成 rclone.pubrclone以及rclone-merged 三个文件 注意ssh生成的秘钥文件保存在当前用户目录下的.ssh目录下即~/.ssh/ ssh-keygen -q -t rsa -b 4096 -C rclone key -N -f ~/.ssh/rclone #静默生成rclone密钥对
cd ~/.ssh/
cat rclone* rclone-merged # 将密钥对合并否则会连接失败复制公钥到远程访问服务器 命令方式复制 假设服务器的ip是192.168.1.100ssh端口是22使用以下命令然后输入服务器的密码即可。 ssh-copy-id -i ~/.ssh/rclone.pub -f -p 22 root192.168.1.100 #自行修改为你自己的手动方式复制 在客户端上打开rclone.pub复制里面的内容在服务器上~/.ssh/的目录下新建authorized_keys文件,粘贴内容到authorized_keys 挂载远程服务到本地路径 使用rclone mount命令将远程服务挂载到本地 sudo rclone mount svra:/data/bigdata /data/bigdata --allow-other --allow-non-empty --umask 0002
ll /data/bigdata后台运行rclone nohup sudo rclone sync svra:/data/bigdata /data/bigdata -u -v -P --transfers20 --ignore-errors --buffer-size128M --drive-acknowledge-abuse sync.log 2 1 其他例子 #复制最近7天的消息 --max-age 7d ,支持d、h、m、s将minio:test的最近7天数据复制到minio1:test并将日志写入copyrclone.log
#不带--max-age 7d则是复制所有数据
nohup rclone -P copy --max-age 7d --no-traverse minio:test minio1:test copyrclone.log 21 #保留最近30天的数据30天前的全部删除 --min-age 30d ,支持d、h、m、s删除minio:test 30天前的数据并将日志写入derclone.log
#不带--mix-age 30d则是删除所有数据
#相反--max-age 30d则是删除最近30天的数据
nohup rclone -P delete --min-age 30d --no-traverse minio:test derclone.log 21 ### 3、命令介绍
- Rclone将一个目录树从一个存储系统同步到另一个。它的语法是这样的语法[选项] 子命令 参数 参数…
- 常见子命令查看一个远端目录rclone ls remote:path拷贝一个本地目录到远端的目录rclone copy /local/path remote:path将本地目录同步到远端的目录rclone sync --interactive /local/path remote:pathrclone最常用的命令如下完整的命令列表可以通过help或者是rclone提供的文档查看bashrclone config - Enter an interactive configuration session.rclone copy - Copy files from source to dest, skipping already copied.rclone sync - Make source and dest identical, modifying destination only.rclone bisync - Bidirectional synchronization between two paths.rclone move - Move files from source to dest.rclone delete - Remove the contents of path.rclone purge - Remove the path and all of its contents.rclone mkdir - Make the path if it doesnt already exist.rclone rmdir - Remove the path.rclone rmdirs - Remove any empty directories under the path.rclone check - Check if the files in the source and destination match.rclone ls - List all the objects in the path with size and path.rclone lsd - List all directories/containers/buckets in the path.rclone lsl - List all the objects in the path with size, modification time and path.rclone md5sum - Produce an md5sum file for all the objects in the path.rclone sha1sum - Produce a sha1sum file for all the objects in the path.rclone size - Return the total size and number of objects in remote:path.rclone version - Show the version number.rclone cleanup - Clean up the remote if possible.rclone dedupe - Interactively find duplicate files and delete/rename them.rclone authorize - Remote authorization.rclone cat - Concatenate any files and send them to stdout.rclone copyto - Copy files from source to dest, skipping already copied.rclone genautocomplete - Output shell completion scripts for rclone.rclone gendocs - Output markdown docs for rclone to the directory supplied.rclone listremotes - List all the remotes in the config file.rclone mount - Mount the remote as a mountpoint.rclone moveto - Move file or directory from source to dest.rclone obscure - Obscure password for use in the rclone.confrclone cryptcheck - Check the integrity of an encrypted remote.rclone about - Get quota information from the remote.官网 https://rclone.org/### 4、应用场景
#### 从一个集群服务迁移到另一个集群服务
从一个集群将对应的文件迁移到另一个集群的应用是比较常见的一种应用情况下面以对象服务的迁移为例进行简单的介绍首先我们需要对两个服务都进行配置第一个集群是test1第二个集群是test2现在需要将test1集群中的桶bucket1迁移到test2中。可以使用如下的命令
bash
rclone copy test://bucket1 test2://bucket1如果在test2集群上没有这个桶bucket1的话我们可以选择先手动在test2上创建对应的桶bucket1也可以选择添加参数 --create-empty-src-dirs来自动创建
rclone --create-empty-src-dirs copy test1://bucket1 test2://bucket2如果想要实时监控进度的话可以使用参数—progress
本地文件迁移到云上服务
本地存在文件需要上云的情况下也可以使用rclone来完成这个任务
rclone copy $localpath $remote://$bucket/$prefix可以用这个参数结构执行命令来完成任务也可以根据实际情况添加相应的参数。
本地文件同步到云上服务
本地文件在拷贝过一次后或者是首次直接迁移到云端也可以使用sync命令来完成
rclone sync $src_path $dest_patheg: rclone sync /mnt/test test://bucket1/test sync与copy最大的区别在于sync命令是以“同步”为目的也就是说如果存在一个文件dest端有而src端没有的话会将dest端的文件清理掉。
2、rsync工具介绍
1、rsyncRemote Sync远程同步
一款开源的快速备份工具 支持本地复制 也可以在不同主机例如其他SSH、rsync主机之间镜像同步整个目录树支持增量备份并保持钳接和权限。 采用优化的同步算法传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
2rsync同步源
在远程同步任务中负责发起rsync司步操作的客户机称为发起端而负责响应来自客户机的rsync同步操作的服务器称为同步源(备份源)。在同步过程中同步源负责提供文件的原始位置发起端应对该位置具有读取权限。 例 A服务器同步B服务器的数据B服务器就是备份源 反过来B服务器同步A服务器的数据那么A服务器就是备份源
3、配置rsync源 基本思路 建立rsyncd.conf配置文件、独立的rsync账号文件 配置文件rsyncd.conf 需手动配置语法类似于Samba配置 认证配置auth users、secrets file不加则为匿名rsync账号文件 采用“用户名密码”的格式记录每行一个用户记录 独立的账号数据不依赖系统账号 启用rsync服务 通过 --daemon独自提供服务rsync --daemon 可以通过执行kill $(cat /var/run/rsyncd.pid)关闭服务 rsync命令
#命令的用法
rsync [选项] 原始位置 目标位置#----------常用选项--------------------------
-r递归模式包含目录及子目录中的所有文件。
-l对于符号链接文件仍然复制为符号链接文件。
-v显示同步过程的详细verbose信息。
-z在传输文件时进行压缩compress。
-a归档模式保留文件的权限、属性等信息等同于组合选项“-rlptgoD”。
-p保留文件的权限标记。
-t保留文件的时间标记。
-g保留文件的属组标记仅超级用户使用。
-o保留文件的属主标记仅超级用户使用。
-H保留硬连接文件。
-A保留 ACL 属性信息。
-D保留设备文件及其他特殊文件。
--delete删除目标位置有而原始位置没有的文件,即删除差异文件保留一致性。
--checksum根据校验和而不是文件大小、修改时间来决定是否跳过文件。
--password-filefile从file中得到密码用于免交互处理file文件的权限要是600配置源的两种表达方式
将指定的资源下载到本地/root 目录下进行备份。 格式一 用户名主机地址::共享模块名 例如 backuper192.168.163.10::wwwroot /opt
格式二
rsync://用户名主机地址/共享模块名
例如
rsync://backuper192.168.163.10/wwwroot /opt免交互格式
echo 密码 /etc/密码文件
chmod 600 /etc/密码文件#设置周期性任务
crontab -e
30 22 * * * /usr/bin/rsync -az --delete --password-file/etc/密码文件 backuper192.168.163.10::wwwroot /optsystemctl restart crond
systemctl enable crond
-----------------------------------
rsync进程数量 rsync支持多线程
https://blog.51cto.com/u_16213679/103512773、scp工具介绍
系统内核命令基本能力不再赘述。