linux http文件服务_Linux服务器之间文件如何实现实时同步传输

48293e900b5676293c31c73650c042eb.png 1 2739949b166d1cbf171bbdca81cde6b5.png

最近在做服务器迁移的时候,遇见了一个很头疼的问题。那就是我原本的服务器数据实在是太多了高达250G,而且不能在短时间立马切换。所以需要一个过渡期,但是在此期间又会新增文件或者用户修改文件,那么如何实时传输文件的时候仅仅传输已经变更的文件了。

5044e3d208acfeb6cbb638737264903e.png

使用场景

        现有服务器A和服务器B,如果服务器A的指定目录(例如 /iiske/daxi/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /www/daxi/ )。

数据镜像备份工具Rsync

        Rsync是一个非常快速和灵活的文件复制工具。它支持本机或者是和远程服务器间的文件复制。Rsync使用了delta-transfer算法,它只需要传送源端和目标端的文件差异部分,大大减少了网络带宽的消耗和复制耗费的时间。Rsync多用于数据备份和镜像。

        Rsync使用了快速检查算法,通过比较文件大小或最后修改时间的变化来判断文件是否需要同步。

Rsync连接远程主机有两种方式:使用ssh或rsync daemon。这里使用Rsync方式来实现远程文件备份。

在Linux中也可以使用 scp 命令进行服务器之间文件数传。

Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。 例如:   A :/home/xiaoke/a.txt      B :/home/xiaoming/ 将服务器A文件a.txt拷贝到服务器B下面

scp    /home/xiaoke/a.txt    root@192.168.18.111:/home/xiaoming/

 如果是文件夹则添加  -r scp  -r   /home/xiaoke    root@192.168.18.111:/home/xiaoming/ 注:-r  递归复制整个目录。 48293e900b5676293c31c73650c042eb.png 2

Rsync的安装与操作

安装Rsync

        分别在服务器A和服务器B执行:

sudo yum install rsync

9f8903421cf6dc2311adcf9623d10011.png

安装完毕后,会发现rsync的配置文件位于 etc/rsyncd.conf 。该文件使用daemon方式同步时需要使用,这里用不着也就不描述了。

配置服务器A和B之间的免密登录:

服务器A执行:

ssh-keygen#注意,在这里会生成一个公钥,这个公钥拷贝到那个服务器#则进入该服务器不需要再输入密码,记住一定不要输入公钥名和密码#只需要敲回车就OK了,否则你会头疼,小编就因为这个问题折腾了很久。这个没有#任何说明完全靠后面的提示摸索出来的。生成公钥过程一定不要输入任何东西,直接回车直接回车直接回车!!!#生成密钥复制公钥到远程主机ssh-copy-id root@IP

   报错:/usr/bin/ssh-copy-id: ERROR: No identities found

 一开始在网上搜索原因的时候,大部分的都是说ssh-copy-id -i id_rsa.pub root@ip地址 中的公钥不存在或者应该加上-i 等,但是都没有解决我的问题,后来在发现是dsa与rsa的问题, 所以我建议大家先看一下执行的是 ssh-keygen -t dsa 还是 ssh-keygen -t rsa ,以免在执行 ssh-copy-id -i /root/.ssh/id_rsa.pub root@ip地址 报错:/usr/bin/ssh-copy-id: ERROR: No identities found

894cf37c8eef70ece0394439df8afe22.gif

    注意,上面这个问题慎重执行,容易生成多个公钥。不建议操作。

如果你按照这个方法没有解决问题,那么你可以看看笔者上面ssh-keygen所述部分。 

166b81ff10d8a0667fb93db74ab4b1ed.gif

rsync -avPz --progress  /iiske/   134.222.44.121:/xke把当前A服务器iiske目录下的文件拷贝到    B服务器134.222.44.121的xke目录下如果进入需要输入密码,则表示你的公钥不在B服务器上面,重复上面的操作就可以。

写入脚本中(不是必须)

vim auto.sh#脚本代码#!/bin/bashecho "***程序开始执行***"  rsync -avPz --progress  /iiske/   134.222.44.121:/xkeecho  "***程序结束***"/bin/bash  auto.sh #运行  sudo nohup一直执行,复制xshell退出时程序结束
#!/bin/bashecho "****ok***"inotifywait -mrq --timefmt '%d/%m/%y %H:%M'  --format '%T%w%f%e'  -e  modify,delete,create,attrib  /iiske | while read filedo echo "开始执行" rsync -avPz --progress /iiske/ 122.212.34.221:/xke rsync -avPz --delete /iiske/ 122.212.34.221:/xke echo "ok"done

运行中有任何问题可以私信作者。

996aeb492e999b6a4ae54f875694011d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值