Chinaunix首页 | 论坛 | 博客
  • 博客访问: 167328
  • 博文数量: 72
  • 博客积分: 1426
  • 博客等级: 上尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-02 13:40
个人简介

一个做了几年技术的老白菜

文章分类

全部博文(72)

文章存档

2011年(4)

2010年(13)

2009年(55)

我的朋友

分类: LINUX

2009-11-14 15:56:29

Linux rsync同步由手动到自动
【摘要】:rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用。本文主要讲述的是如何自架rsync服务器,以实现文件传输、备份和镜像。相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效;
 
手动的:
    首先要建立好两台服务器之间的公钥和密钥,那样就不需要每次都输入密码,也可以实现自动了。
    可以先使用rpm -qa |grep rsync 查看rsync是否已经安装,软件下载  Rysnc的主页地址为:
   本试验的测试环境(2台,一个服务端,一个客户端)
 rsync服务端的ip:192.168.48.60
 rsync客户端的ip:192.168.48.148
-----------------------------------------------
以下先配置服务器端:
1. 安装rsync包
   # rpm -q rsync
   rsync-2.6.3-1
2. rsync只使用一个配置文件就是/etc/rsyncd.conf   这个文件一般是没有的,那就自己建一个好了
   # vi /etc/rsyncd.conf
   uid = nobody
   gid = nobody
   max connections = 200
   timeout = 600
   use chroot = no
   read only = yes
   pid file=/var/run/rsyncd.pid
   host_allow =192.168.48.148        //客户端的IP地址写在这里
   #syslog facility = local7
   #log file=/var/log/rsyncd.log
   #rsync config
   #The 'standard' things
   [rsync_gmmold]                    //定义同步的路径(客户端用这个关键字链接)
        path = /home                 //需要同步的路径
        comment = gmmold             //这个暂不知道
3.启动服务
   #/usr/bin/rsync --daemon   最后在server端将rsync以守护进程形式启动,  rsync启动的端口为 873端口
4.加入开机启动
   echo "/usr/bin/rsync --daemon" >> /etc/rc.local
5.检查rsync时候启动
   # ps -ef | grep rsync
6.停止服务
   #kill `cat /var/run/rsyncd.pid`
---------------------------------------------------------------------------
以下是客户端的配置:
1. 安装rsync包
   [root@rhel403 old]# rpm -q rsync
   rsync-2.6.3-1
2. 与服务器端同步:
   #rsync -ave ssh /home/ganfic/laji/      //把60机子的/home下的文件同步备份到/home/ganfic/laji/

自动同步备份:
1.  在tmp下建一个b.sh文件
    #vi /tmp/b.sh
   把以下内容写到里面去
    #!bin/sh
   rsync -ave ssh /home/ganfic/laji/
    :wq
2    第2步就要涉及到crontab了,在命令行输入
    #crontab -e
   然后把 *  *   *   *   *   sh /tmp/b.sh       //* * * * *部分代表每一分钟,然后   sh /tmp/b.sh 表示运行 b.sh脚本(在下面我再补充说明),-e 使用环境变量EDITOR或RVISUAL指定的编辑器编辑crontab文件。新创建的crontab文件会放在/var/spool/cron目录下,文件名就是用户名,用cd  /var/spool/cron后 会看到用户文件,然后用 vi root(我是在root用户下的)就会看到*  *   *   *   *   sh /tmp/b.sh已经被转到这里来了。
这样就完成了,之后就是看看 有没有运行了,打开日志文件,日志文件在  #vi  /var/log/cron 就会看到有没有运行了,也可以这样,在没有用自动运行之前,我们是用手动操作的,那时也把60的机子的/home目录下的文件拷了下来,那样,我们进本机的/home/ganfic/laji文件夹里就会看到60机子下/home的内容,把这些内容都删了,然后再过1分钟看会不会把内容再补上,有的话就是成功了。
 
    Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。
iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
启动rsync服务:
/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf
$rsync_HOME/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf

补充:
rsync 的相关知识:
rsync命令的用法
  在配置完rsync服务器后,就可以从客户端发出rsync命令来实现各种同步的操作。rsync有很多功能选项,下面就对介绍一下常用的选项:
  rsync的命令格式可以为:
  1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  2. rsync [OPTION]... [USER@]HOST:SRC DEST
  3. rsync [OPTION]... SRC [SRC]... DEST
  4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
  5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
  命令格式:
#rsync [option] 源路径 目标路径
其中:
[option]:
a:使用archive模式,等于-rlptgoD,即保持原有的文件权限
z:表示传输时压缩数据
v:显示到屏幕中
e:使用远程shell程序(可以使用rsh或ssh)
--delete:精确保存副本,源主机删除的文件,目标主机也会同步删除
--include=PATTERN:不排除符合PATTERN的文件或目录
--exclude=PATTERN:排除所有符合PATTERN的文件或目录
--password-file:指定用于rsync服务器的用户验证密码
源路径和目标路径可以使用如下格式:
rsync://[USER@]Host[:Port]/Path   <--rsync服务器路径
[USER@]Host::Path             <--rsync服务器的另一种表示形式
[USER@]Host:Path             <--远程路径
LocalPath                    <--本地路径
 
crontab的用法:

   crontab [ -u user ] { -l | -r | -e } 
  -u user 表示指定用户user的crontab文件,这个前提事你必须要有其权限才能其他用户的crontab文件。如果使用该选项的化,默认设定当前用户的crontab文件。
  -l  列出目前的crontab文件的内容
  -r 删除目前的crontab文件
 -e 使用环境变量EDITOR或RVISUAL指定的编辑器编辑crontab文件。新创建的crontab文件会放在/var/spool/cron目录下,文件名就是用户名。
crontab内容的格式如下:
   分<>时<>日<>月<>星期<>要运行的命令
  其中<>表示空格
 分:1-59   时:0-23(0表示子夜)   日:1-31    月:1-12    星期:0-6(0表示星期天)
crontab 文件中的每一行内容必须有上面这5个时间域,并用空格隔开。在时间域中可以用横杆“-”表示一个时间范围,如星期一到星期五:1-5,还可以使用逗号 “,”,如要在星期一和星期三执行任务,可以写成1,3表示。可以用星号“ * ”表示连续的时间段,如果对某个时间域没有特定的限制就可以在该域中写入*。 在crontab文件中注释的行在行首用“ # ”表示。下面举例说明哈。
#每一分钟执行一次
* * * * *  test.sh
#每五分钟执行一次
*/5 * * * * test.sh
#星期一和星期五的12点到18点之间每两小时整执行一次
0 12-18/2 * * 1,5 test.sh
 
阅读(763) | 评论(0) | 转发(0) |
0

上一篇:MTBF、MTTR、MTTF

下一篇:ftp上传脚本

给主人留下些什么吧!~~