vsftp服务器同步文件

首先vsftp同步文件,并没有好的解决方案,网上有一些软件是可以定时同步文件的,我是用的是linux上的一款工具Rsync

首先先了解一下Rsync与scp的区别:点我

1.安装Rsync

两种安装方式:1:源代码编译安装,2:yum安装,因为我的虚拟机可以连接外网,所以我是使用yum安装,两台都要安装

[root@master /]# yum install rsync

安装完成后,输入命令 rsync ,如图说明安装成功

 

2.修改主从服务器配置文件

 

[root@master /]# vim /etc/rsyncd.conf 

 

将如下内容复制或替换进去

#工作中指定用户(可以不指定为0)

uid = 0

gid = 0

#相当于黑洞.出错定位

use chroot = no

#有多少个客户端同时传文件

max connections = 200

#超时时间

timeout = 300

#进程号文件

pid file = /var/run/rsyncd.pid

#日志文件

lock file = /var/run/rsync.lock

#日志文件

log file = /var/log/rsyncd.log

#模块开始

#模块名称随便起(可以是多个)

[home]

#需要备份的目录

path = /home

#表示出现错误忽略错误

ignore errors

#表示网络权限可写(本地控制真正可写)

read only = false

#这里设置IP或让不让同步

list = false

#指定允许的网段(即主ftp服务器)

hosts allow = 192.168.81.3

#拒绝链接的地址,一下表示没有拒绝的链接。

hosts deny = 0.0.0.0/32

#不要动的东西(默认情况)

#虚拟用户

auth users = rsync_backup

#虚拟用户的密码文件

secrets file = /etc/rsync.password

其中标红的部分一定要注意:

第一个标红的部分表示:模块名称,之后使用rsync传输文件要用到

第二个标红的部分表示:模块根路径,这个路径一定要存在否则会报错 错误为:@ERROR: chdir failed 

第三个标红的部分表示:允许哪些地址来使用rsync请求,多个地址之间使用逗号分隔

第四个标红的部分表示:密码文件

3.备份服务器配置虚拟用户的密码文件

[root@slave /]# echo "rsync_backup:123456" >/etc/rsync.password

[root@slave /]# cat /etc/rsync.password

rsync_backup:123456 #注:rsync_backup为虚拟用户,123456为这个虚拟用户的密码

[root@inotify-slave /]# chmod 600 /etc/rsync.password #为密码文件提权,增加安全性

4、主服务器配置虚拟用户密码

[root@master ~]# echo "123456" >/etc/rsync.password

[root@master ~]# cat /etc/rsync.password

123456 #注意:这里只要写密码即可,切记。

[root@master ~]# chmod 600 /etc/rsync.password

5、准备工作

1.启动Rsync服务端(即备用服务器)

[root@master /]# rsync --daemon --config=/etc/rsyncd.conf

先说明一下,这种启动方式很麻烦,之后关闭重启需要 使用kill -9 关闭进程,然后再删除进程文件,才能重启,后面会使用脚本来启动rsync

2.如前面的配置文件所述(第二个标红处),在备份服务器建立【第二个标红处】上的路径,也就是说 ,我需要建立 /home 目录

3.在主服务器上建立任意文件夹,文件

6:测试

命令:

 

[root@master /]# rsync -avz /home/pic rsync_backup@192.168.81.4::home --password-file=/etc/rsync.password

 

命令的含义是 将主服务器/home/pic 目录下的文件,文件夹同步到从服务器上的 home模块中 注意标青色的部分,对照,上面的标红的第一部分,好了,如果出现如下所示,表示同步成功,便可以去看从服务器中的文件了

 

7.编写同步脚本脚本(主服务器)

[root@master /]# vim /usr/local/bin/rsync_push.sh
#!/bin/bash
rsync -avz /home/pic rsync_backup@192.168.81.4::home --password-file=/etc/rsync.password

赋予脚本可执行权限

[root@master bin]# chmod a+x /usr/local/bin/rsync_push.sh

 

将脚本加入crontab(主服务器)

[root@master etc]# cd /etc/
[root@master /]# crontab -e

加入如下代码:

*/1 * * * * /usr/local/bin/rsync_push.sh

以上代码表示,每分钟执行一次rsync同步脚本 ,(具体执行时间设定,参照这里) 

 输入命令查看crontab脚本

[root@master etc]# crontab -l

 

 8.使用脚本启动关闭rsync

[root@slave1 pic]# vim /etc/init.d/rsync 

将如下内容复制粘贴

#!/bin/bash 
  
#this script for start|stop rsync daemon service 
#date:2012/2/13 
  
status1=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep') 
pidfile="/var/run/rsyncd.pid" 
start_rsync="rsync --daemon --config=/etc/rsyncd.conf" 
  
function rsyncstart() { 
  
    if [ "${status1}X" == "X" ];then 
  
        rm -f $pidfile       
  
        ${start_rsync}   
  
        status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep') 
          
        if [  "${status2}X" != "X"  ];then 
              
            echo "rsync service start.......OK" 
              
        fi 
  
    else 
  
        echo "rsync service is running !"    
  
    fi 
} 
  
function rsyncstop() { 
  
    if [ "${status1}X" != "X" ];then 
      
        kill -9 $(cat $pidfile) 
  
        status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep') 
  
        if [ "${statusw2}X" == "X" ];then 
              
            echo "rsync service stop.......OK" 
        fi 
    else 
  
        echo "rsync service is not running !"    
  
    fi 
} 
  
  
function rsyncstatus() { 
  
  
    if [ "${status1}X" != "X" ];then 
  
        echo "rsync service is running !"   
      
    else 
  
         echo "rsync service is not running !"  
  
    fi 
  
} 
  
function rsyncrestart() { 
  
    if [ "${status1}X" == "X" ];then 
  
               echo "rsync service is not running..." 
  
               rsyncstart 
        else 
  
               rsyncstop 
  
               rsyncstart    
  
        fi       
}  
  
case $1 in 
  
        "start") 
               rsyncstart 
                ;; 
  
        "stop") 
               rsyncstop 
                ;; 
  
        "status") 
               rsyncstatus 
               ;; 
  
        "restart") 
               rsyncrestart 
               ;; 
  
        *) 
          echo 
                echo  "Usage: $0 start|stop|restart|status" 
          echo 
esac

 

给脚本设置可执行权限:

[root@slave1 pic]# chmod a+x /etc/init.d/rsync

启动命令:

[root@master /]# service rsync start

停止命令

[root@master /]# service rsync stop

 

posted @ 2018-02-27 17:31  陈无问  阅读(651)  评论(0编辑  收藏  举报