【文件迁移】通过rsync工具进行文件迁移

rsync解决了我的哪些问题?

 在以往工作中,进行文件迁移时,如果文件当前所在服务器S与迁移目标服务器C不在同一网络下,我会直接在Xftp上进行拖拽。由于S服务器与C服务器网络不通,Xftp首先会将文件从服务器S传输至本地,再从本地上传至目标服务器C。这不仅会占用本地电脑大量的存储空间,本地电脑也不能关机或者断网,否则传输都会中断,此外由于本地电脑空间的限制,只能将文件拆分后进行批量上传,否则将直接把本地电脑空间沾满。

使用rsync后,文件不再需要从本地走一遍,而且直接从S端传输到C端,节省了工作量以及传输时间。

使用rsync的前提

文件当前所在服务器S与迁移目标服务器C在同一网络下,或者目标服务器C所在的网络有一台可以访问公网的服务器C0。

我这里是第二种情况,所以本篇文章只讲述如何通过中间公网服务器C0的nginx转发进行rsync文件同步。如果文件当前所在服务器S与迁移目标服务器C在同一网络下可以直接略过Nginx配置的那一段。

rsync的下载

在文件当前所在服务器S与迁移目标服务器C中下载rsync。

yum install -y rsync

rsync的配置

1、在迁移目标服务器C中配置rsync

vim /etc/rsyncd.conf

具体配置如下:

uid = nobody
gid = nobody
port = 10061 #rsync的端口,默认873
use chroot = yes
max connections = 20
strict mode=yes
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[backup_prod_app]  #模块名称,有多个客户端时就复制整个模块
        path = /data/历史数据/basehistory/ #将文件同步到目标服务器C的哪个文件夹
        comment = backup app files
        ignore errrors
        read only=no
        write only=no
        hosts allow=*
        hosts deny=*
        list=false
        uid=root
        gid=root
        auth users=rsync_user #同步用户名
        secrets file=/etc/rsync.pwd #rsync密码的文件名和位置

2、创建用户和组

groupadd rsync

useradd -s /sbin/nologin -M -g rsync rsync_user  #组名在前,用户名在后

3、创建认证用户和密码文件并修改权限

echo "rsync_user:123456" >/etc/rsync.pwd #录入用户名和密码创建密码文件

chmod 600 /etc/rsync.pwd #修改权限

4、创建同步目录并授予权限

mkdir /data/历史数据/basehistory/  

chown -R rsync_user:rsync /data/历史数据/basehistory/  #用户名在前,组名在后

5、开放10061端口

firewall-cmd --add-port=10061/tcp --permanent --zone=public

firewall-cmd --reload

6、启动rsync

systemctl start rsyncd #启动

# systemctl restart rsyncd #重启

systemctl enable rsyncd #开机启动

7、验证rsync是否启动

netstat -anlpt | grep rsync

8、在S服务器下创建用户(组)

groupadd rsync
useradd -s /sbin/nologin -M -g rsync rsync_user #组在前,名在后

9、在S服务器下配置密码文件

echo "123456" > /etc/rsync.pwd  #由于我们要在同步命令里指定用户名,所以这里不指定用户名,指定密码就行,密码注意和上面的密码要一致
chmod 600 /etc/rsync.pwd

nginx的配置

在和C同一网络下的C0上安装nginx,并在tcp模块(stream)下进行下面的配置,然后重启nginx

upstream rsync {
    server 192.168.30.20:10061;
}

server{
    listen 10061;
    proxy_pass rsync;
}

文件推送

执行以下命令进行文件推送和验证

rsync -av --port=10061 /data/basehistory/ rsync_user@111.2.224.6::backup_prod_app --password-file=/etc/rsync.pwd

这里的/data/basehistory/代表需要同步的文件在S服务器的位置。

参考文章

Centos7.x部署使用rsync和lsyncd实现文件的实时同步/备份

原文中有更多关于rsync的介绍,以及利用lsync进行实时差异文件同步,可以前去参考。

原文有一处错误,配置的密码文件/etc/rsync.pwd文件前后不一致,会导致同步时报错。

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值