`
jzkangta
  • 浏览: 157221 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rsync同步备份服务器(转)

阅读更多
转自http://litvip.com/2011/02/22/130
做系统维护,数据备份的重要性怎么强调都不过分,因此一款好用的备份工具是必不可少的,我独爱rsync,速度快、安全、
高效,接下来我就介绍如何配置通rsync同步备份服务器。

一般来说,一台linux服务器安装之后,直接用rysnc命令就就可以备份,但这仅仅是client,我们现在要做的是建立一台专门
的备份服务器来接收客户端的备份数据,所以我们需要配置rsync服务器,让它常驻系统,通常有2种方法,自身的daemon功能
和通过xinetd守护,但是无论哪种方法,都需要一个配置文件/etc/rsyncd.conf,需要我们自己创建。

客户端约定:
客户端1:test1.host1.com(192.168.0.1)
客户端2:test2.host2.com(192.168.0.2)

服务器端约定:
服务器ip:192.168.0.100
rsync配置文件:/etc/rsyncd.conf
备份文件存储主目录:/home/backup
客户端1数据存储目录:/home/backup/test1.host1.com
客户端1数据存储目录:/home/backup/test2.host2.com

接下来的操作,都是在备份服务器上进行的。

第一步,我们还是先检查一下系统是否安装了rsync。
[root@backup ~]# rpm -q rsync
rsync-2.6.8-3.1

看来我的系统已经安装了,如果你没安装,请执行下面的命令。
[root@backup ~]# yum -y install rsync

第二步,创建/etc/rsyncd.conf文件,内容如下。

#主要全局参数
uid = root
gid = root
use chroot = yes #为了安全考虑,让rsync运行于chroot环境
log file = /var/log/rsyncd.log #rsync的日志文件
pid file = /var/run/rsyncd.pid #rsync的pid文件
hosts allow = 192.168.0.0/24 #允许访问的网络(我还推荐你在系统防火墙里也要设置)
hosts deny = * #除了允许的之外,默认禁止访问

#为每个客户端服务器专门配置
[test1.host1.com]
comment = backup for test1.host1.com
path = /home/backup/test1.host1.com
read only = no
hosts allow = 192.168.0.1

[test2.host2.com]
comment = backup for test2.host2.com
path = /home/backup/test2.host2.com
read only = no
hosts allow = 192.168.0.2

保存退出,如果你需要更多配置参数,请参照man rsyncd.conf

第三步,准备备份数据的存储目录

[root@backup ~]# mkdir -p /home/backup/{test1.host1.com,test2.host2.com}

注:如果你需要备份2层以上的主目录,比如/var/lib/mysql/,最好事先在备份服务器上把要备份的多层主目录创建好。

[root@backup ~]# mkdir -p /home/backup/test1.host1.com/var/lib/mysql

第四步,各种东西准备好了,现在我们该启动rsync了,2种方法,你任选一种。

1.使用rsync的–daemon选项启动,rsync服务默认使用873号端口。

[root@backup ~]# rsync --daemon
[root@backup ~]# lsof -i:873
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
rsync 3464 root 3u IPv6 11515 TCP *:rsync (LISTEN)
rsync 3464 root 4u IPv4 11516 TCP *:rsync (LISTEN)

可以看到rsync已经启动成功了。如果你要把他添加到开机启动,可以通过/etc/rc.local文件,执行如下命令即可。

[root@backup ~]# echo '/usr/bin/rsync --daemon' >> /etc/rc.local

如果你需要终止它,执行

[root@backup ~]# pkill rsync
[root@backup ~]# lsof -i:873
[root@backup ~]#

可以看到已经关闭了。但是很多用户可能希望,像别的程序一样通过启动脚本/etc/init.d/xxxx来启动或者终止服务会更方
便,由于篇幅太长,我在后面的博文中再介绍。

2.xinetd守护
修改/etc/xinetd.d/rsync文件,把

disable = yes

改成

disable = no

然后重启xinetd即可,

[root@backup ~]# /etc/init.d/xinetd restart

如果你的xinetd开机并没自动启动的话,需要执行

[root@backup ~]# chkconfig xinetd on

第五步,到此为止,rsync服务器端已经完成了,接下来,我们以客户端test1.host1.com(192.168.0.1)为例,试试如何同
步文件。注意,该步操作时在客户端服务器上进行的。
约定:
备份脚本路径:/root/bin/backup.sh
需要备份的目录:/etc/ /home/

1.创建一个简单的备份脚本/root/bin/backup.sh,内容如下。

#!/bin/sh
#command
rsync=/usr/bin/rsync
echo=/bin/echo

#backup server info
remote_host=192.168.0.100
remote_path=test1.host1.com

#backup
backup_path="/etc/ /home/"
for path in $backup_path;
do
  date=`date "+%D %H:%M:%S"`
  $echo "--- Start Backup $path $date ----"
  $rsync -av --delete $path $remote_host::$remote_path$path
  date=`date "+%D %H:%M:%S"`
  $echo "--- End Backup $path $date ----"
done
exit 0

2.好了,我们来执行一下看看备份情况。

[root@test1 ~]# /root/bin/backup.sh
--- Start Backup /etc/ 02/22/11 09:48:36 ----
building file list ... done
created directory /etc
传送的每个文件的详细信息省略......
sent 2960717 bytes received 1828 bytes 658343.33 bytes/sec
total size is 2954407 speedup is 1.00
--- End Backup /home/ 02/22/11 09:50:20 ----

已经备份完毕了,你可以去备份服务器上去看看备份情况了。

到此为止,一个简单的rsync同步备份服务器的配置和备份测试都已经OK了,可是要是你的服务器是通过公网备份的话,就是
很危险的,接下来我再说明一下如何用ssh来加密我们备份数据的传输。

第六步,通过ssh加密传输。
约定:备份服务器在初期状态是通过密码认证登录的并且root可以登录。

1.接下来的操作是在客户端上进行的,我们还是以test1.host1.com(192.168.0.1)为例。

[root@test1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):直接回车
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):一定直接回车
Enter same passphrase again:一定直接回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
94:b7:51:5e:6b:6b:01:81:b2:e1:a6:6b:e8:56:a2:8c root@test1.host1.com

然后,把公钥通过scp复制到备份服务器(192.168.0.100)上去。

[root@test1 ~]# scp ~/.ssh/id_rsa.pub 192.168.0.100:/root/.ssh/
The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established.
RSA key fingerprint is 3c:fe:7e:0a:35:79:a2:cf:13:55:ba:87:8b:62:e5:cb.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.100' (RSA) to the list of known hosts.
root@192.168.0.100's password:
id_rsa.pub 100% 404 0.4KB/s 00:00

修改前面我们创建的backup.sh文件,在第5行后追加2行:

ssh=/usr/bin/ssh
key=/root/.ssh/id_rsa

把第16行

$rsync -av --delete $path $remote_host::$remote_path$path

改成

$rsync -av -e "$ssh -i $key" --delete $path $remote_host::$remote_path$path

2.接下来的操作在备份服务器端进行的,把刚刚复制到备份服务器的公钥追加到/root/.ssh/authorized_keys末尾。

[root@backup ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

[root@backup ~]# chmod 600 /root/.ssh/authorized_keys

3.最后,通过1和2小步将所有客户端的公钥都上传到备份服务器上之后,我们修改/etc/ssh/sshd_config
文件,禁止使用密码登陆。这一步也是在备份服务器上进行的。

PasswordAuthentication yes

改成

PasswordAuthentication no

重启sshd

[root@backup ~]#/etc/init.d/sshd restart

好了,现在你可以在你客户端执行备份脚本来备份了,如果你再加上crontab计划任务来执行,那么就更方便了。
比如我们追加每天早上4点30分备份,并把备份过程的信息和错误信息记录到/var/log/backup.log,那么修改/etc/crontab文
件,追加如下一行。

30 04 * * * root /root/bin/backup.sh >> /var/log/backup.log 2>&1

当然如果时间长了,日志文件/var/log/backup.log会很大,可以通过logrotate来管理日志,我将在以后的博文中介绍如何用logrotate来管理日志文件。

注1:可能有人会发现,一遍一遍的在各个客户端上生产公钥和密钥,然后把公钥复制到备份服务器上去,
而为什么不在备份服务器上生产公钥和密钥,然后把私钥复制到客户端去呢?这样当然也是可以的,但是所有的客户端都是用
同一套密钥和公钥认证,安全性降低了。同样我还推荐你定期更换密钥和公钥对。

注2:关于备份脚本你可以根据你自己的需求去完善,而且rsync的功能远不止这点。比如有的人想把/etc每天都备份,保存一个
星期的,这样我们可以先在本地创建一个专门的备份目录/backup,以星期为前缀打包/etc,然后再把备份目录上传到备份服务器上。

#backup for /etc
OLDLANG=$LANG
export LANG="us_EN.UTF-8"
weekday=`date +"%A"`
$tar -czvf /backup/${weekday}.etc.tar.gz /etc
export LANG=$OLDLANG

注3:由于备份服务器打开了root登录功能,建议你在防火墙里设置只能是客服端和管理端的ip可以连接22号端口。

注4:如果你总觉的打开了root登录还是危险,那么我们再在备份服务器端做如下限制,让rsync用root登录时只能执行我们允
许的命令。

修改/etc/ssh/sshd_config


PermitRootLogin yes

改成

PermitRootLogin forced-commands-only

然后重启sshd

创建一个检查命令是否允许的脚本/root/.ssh/checkcmd.sh,内容如下:

#!/bin/sh
if [[ "$SSH_ORIGINAL_COMMAND" =~ "rsync\ --server*" ]]
then
  $SSH_ORIGINAL_COMMAND
else
  echo "Reject"
fi

给脚本添加执行权限:

[root@backup ~]# chmod u+x /root/.ssh/checkcmd.sh

然后修改/root/.ssh/authorized_keys文件,在对应客户端的公钥前面追加选项,
还是以test1.host1.com(192.168.0.1)的公钥为例。
from="192.168.0.1",command="/root/.ssh/checkcmd.sh" ssh-rsa 密钥其他内容省略== root@test1.host1.com
分享到:
评论

相关推荐

    linux中rsync异步服务器实现文件同步与备份.docx

    linux中rsync异步服务器实现文件同步与备份.docx

    rsync同步备份工具

    包含rsync的服务器和客户端安装包,cwRsyncServer_4.1.0_fuq.zip安装在服务器端,另一个安装到客户端,版本为4.1.0。可以实现增量备份,断点续传等

    rsync备份海量文件时占用大量内存的解决方法

    linux发行版中大多都自带rsync,不过版本比较低,一般...备份的时候,rsync大约占用了将近2G的内存,大量内存的占用,造成服务器物理内存不足,进而使用到swap,然后产生更高的iowait(交换内存),进而造成rsync列表更慢

    centos7下rsync+crontab定期同步备份

    最近需求想定期备份内部重要的服务器数据到存储里面,接下来通过本文给大家分享centos7下rsync+crontab定期同步备份,感兴趣的朋友跟随小编一起看看吧

    文件定时备份,服务器文件同步备份

    在需要传同步文件出来的windows服务器上安装同步Rsync Server软件后,会在服务器上建一个管理员级别的SvcwRsync用户,安装完成后,会有一个提示信息,告诉我们该用户的密码,如果觉得密码简单,为了安全我们可以修改...

    RSync实现文件备份同步详解

    [rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一、什么是rsync  rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件...

    rsync配置方法(doc)

    本文主要讲述的是如何自架rsync服务器,以实现文件传输、备份和镜像。相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效; 目录 1. 什么是rsync; 2、rsync 服务器的理由和用途; 3、架设rsync...

    Rsync 服务器搭建

    rcp 的工具,随着它的功能的不断完善,渐渐的 rsync 成为独树一帜的备份同 步工具,目前它是由 rsync.samba.org 团队维护的。Rsync 使用所谓的 "rsync 算法",提供一个非常快速的档案传输,使本地和远端二部主机之间的 ...

    RSync实现文件同步备份配置详解

    rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。  rsync 包括如下的一些特性:  能更新整个目录...

    rsync服务器架设(数据同步文件增量备份).doc

    文章目录HYPERLINK"http://www.centos.bz/2011/06/rsync-server-setup/"\l"什么是rsync"\o"什么是rsync"什么是rsyncHYPERLINK"http://www.centos.bz/2011/06/rsync-server-setup/"\l"rsync的安装"\o"rsync的安装...

    ansible实现一键部署rsync服务,并将同步结果钉钉消息发送

    2) 调用钉钉机器人接口,采取markdown形式,此形式可以定义一个固定的标题,比如:rsync同步情况汇总,这样在钉钉机器人安全设置里,只需要将标题设为关键字即可,具体发送内容千奇百怪也没关系。另外两种方式各有...

    同步好工具Rsync

    rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分...本文主要讲述的是如何自架rsync服务器,以实现文件传输、备份和镜像。相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效;

    Linux下文件实时自动同步备份

    文章目录前言文章重点一、rsync+inotify 简介1、rsync简介2、inotify简介二、整体架构三、同步节点部署(rsync)1、安装rsync2、配置rsync四、源服务器节点部署(rsync+inotify)1、安装rsync2、配置rsync3、手动...

    服务器之间文件同步

    如果你有多台计算机,并且你希望它们的某些目录保持一致(例如,你经常更改文件的...此软件相当强大,经过一些配置之后,可以让你从此以后的同步备份工作变得极其简单、轻松。该软件有Windows下的版本,叫做cwRsync。

    Rsync 服务器文件同步的搭建以及使用

    rsync 是类unix系统下的数据镜像备份工具, 它可以镜像保存整个目录树和文件系统。并且很容易做到保持原文件的权限,时间,软硬链接等等

    cwrsync实现从linux到windows的数据同步备份

    rsync的最新版本可以从http://rsync.samba.org/rsync/获得。它的特性如下: 1、可以镜像保存整个目录树和文件系统。 2、可以很容易做到保持... 一、配置服务器端 首先我们需要配置rsync,打开配置文件/etc/xinetd.d/rsy

    inotify+rsync实现实时同步的方法

    发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 1.2 实现实时同步的方法 inotify+rsync 方式实现数据同步 sersync 方式实现实时数据同步 详情参照:sersync实现数据实时同步的方法 1.2.1 实时同步原理...

    linux下利用rsync实现文件的备份

    rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。本文档提供rsync的配置,实现远程服务器定时备份的功能。

    opscode-backup:关于Opscode基于rsync的备份的食谱

    概述本菜谱包含设置本地和异地备份服务器以及将文件发送到这些服务器的客户端的方法。 它还提供了用于服务器的LWRP,它将在crontab中创建一个作业,以将指定的目录重新同步到服务器,并可选地运行pre / post命令。 ...

Global site tag (gtag.js) - Google Analytics