码迷,mamicode.com
首页 > 其他好文 > 详细

rsync服务

时间:2018-06-13 11:45:11      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:rsync服务

RSYNC服务

概念介绍

备份服务器是架构中最重要的服务器

rsync软件介绍:

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具
全量:将全部数据,进行传输覆盖
增量:只传输差异部分的数据

  • 实现增量复制的原理:
    Rsync通过其独特的“quick check”算法,实现增量传输数据

  • 官方增量传输算法说明:
    Rsync finds files that need to be transferred using a “quick check” algorithm (by default) that looks
    for files that have changed in size or in last-modified time. Any changes in the other preserved
    attributes (as requested by options) are made on the destination file directly when the quick check
    indicates that the file’s data does not need to be updated.
    在同步备份数据时,默认情况下,Rsync通过其独特的“quickcheck”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。
  • rsync软件功能:
    1. 类似于cp命令---(本地备份传输数据)
    2. 类似于scp命令---(远程备份传输数据)
    3. 类似于rm命令--- (实现无差异同步备份)
    4. 类似于ls命令 --- (本地文件信息查看)
      rsync命令属于1 v 4的命令

rsync == cp命令
[root@backup ~]#
[root@backup ~]# cp -a /etc/hosts /tmp/
[root@backup ~]# ls /tmp/hosts
/tmp/hosts
[root@backup ~]# rm -f /tmp/hosts
[root@backup ~]# ls /tmp/hosts
ls: cannot access /tmp/hosts: No such file or directory
[root@backup ~]# rsync /etc/hosts /tmp/
[root@backup ~]# ls /tmp/hosts
/tmp/hosts
rsync == scp命令
[root@backup ~]# scp -rp /etc/hosts 10.0.0.31:/tmp/
The authenticity of host ‘10.0.0.31 (10.0.0.31)‘ can‘t be established.
RSA key fingerprint is 4d:00:46:ff:a3:4d:1d:2e:5b:f0:72:28:ec:54:29:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘10.0.0.31‘ (RSA) to the list of known hosts.
root@10.0.0.31‘s password:
hosts 100% 371 0.4KB/s 00:00
[root@backup ~]# rsync -rp /etc/hosts 10.0.0.31:/tmp/
root@10.0.0.31‘s password:
rsync == rm命令
[root@backup tmp]# mkdir /oldboy01
[root@backup tmp]# cp -a /tmp/ /oldboy01/
[root@backup tmp]# ll /oldboy01/
total 16
-rw-r--r-- 1 root root 371 Oct 11 15:12 hosts
-rw-r--r-- 1 root root 4165 Oct 10 12:24 optimize-init_sys.sh
-rw-r--r-- 1 root root 2184 Aug 5 2015 sysctl.conf
[root@backup tmp]# rm -rf /oldboy01/

[root@backup tmp]# ll /oldboy01/
total 0
[root@backup tmp]# mkdir /null
[root@backup tmp]# cp -a /tmp/* /oldboy01/
[root@backup tmp]# rsync --delete /null/ /oldboy01/
rsync: --delete does not work without -r or -d.
rsync error: syntax or usage error (code 1) at main.c(1422) [client=3.0.6]
[root@backup tmp]# rsync -r --delete /null/ /oldboy01/
[root@backup tmp]# ll /oldboy01/
total 0
rsync == ls -l命令
[root@backup tmp]# # rsync == ls
[root@backup tmp]# ls -l /etc/hosts
-rw-r--r--. 2 root root 371 Oct 10 15:45 /etc/hosts
[root@backup tmp]# rsync /etc/hosts
-rw-r--r-- 371 2017/10/10 15:45:09 hosts

  • Rsync的特性总结(7个特性信息说明):
    1. 支持拷贝普通文件与特殊文件如链接文件,设备等。
    2. 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
      #tar zcvf backup_1.tar.gz /opt/data -exclude=oldboy
      说明:在打包/opt/data时就排除了oldboy命名的目录和文件。
    3. 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。
    4. 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)。

      将备份/home 目录自 2008-01-29 以来修改过的文件
      tar -N 2008-01-29 -zcvf /backups/inc-backup$(date +%F).tar.gz /home
      将备份 /home目录昨天以来修改过的文件
      tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup
      $(date +%F).tar.gz /home
      添加文件到已经打包的文件
      tar -rf all.tar *.gif
      说明:这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

    5. 可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)
    6. 可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****。重点掌握
    7. 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。

Rsync的企业工作场景说明

  1. 两台服务器之间数据同步(定时任务cron+rsync) 同步网站内部人员数据信息(定时任务最小周期为1分钟)
  2. 两台服务器之间数据同步(实时任务inotify/sersync/lrsyncd+rsync)同步网站用户人员数据信息

操作部分

rsync软件工作方式

SYNOPSIS
Local: rsync [OPTION...] SRC... [DEST]
本地数据同步方式
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
远程数据同步方式:
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
守护进程方式数据同步:

本地数据同步方式(类似于cp)

Local: rsync [OPTION...] SRC... [DEST]
rsync -- 数据同步命令
[OPTION...] -- rsync命令参数信息
SRC -- 要同不得数据信息(文件或目录)
[DEST] -- 将数据传输到什么位置
实例演示命令:
rsync /etc/hosts /tmp/

远程数据同步方式(类似scp)--又称为隧道传输

Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
说明:需要进行交互传输数据。如果想实现免交互传输数据,需要借助ssh+key方式实现

pull:
[USER@] : 以什么用户身份传输数据信息
HOST: 远程主机信息(IP地址信息 主机名称信息)
SRC: 远端要恏过来的数据信息
[dest] 恏到本地什么位置


push:
SRC: 本地要怼过去的数据信息
DEST 怼到远端什么位置

  • 实践操作:pull
    rsync 10.0.0.31:/tmp/oldboyedu.txt /tmp/
    实践操作:push
    [root@backup tmp]# rsync -r /tmp 10.0.0.31:/tmp/
    root@10.0.0.31‘s password:
    [root@backup tmp]# rsync -r /tmp/ 10.0.0.31:/tmp/
    root@10.0.0.31‘s password:
    说明:/tmp -- 表示将tmp目录下面数据内容及目录本身都进行传输 /tmp/ -- 表示只传输tmp目录下面的内容信息
    [root@backup tmp]# rsync -vzrtopgP -e ‘ssh -p 22‘ root@172.16.1.31:/tmp/ /tmp/
    root@172.16.1.31‘s password:
    receiving incremental file list
    sent 12 bytes received 154 bytes 36.89 bytes/sec
    total size is 6720 speedup is 40.48
    [root@backup tmp]# scp -rp root@172.16.1.31:/tmp/ /tmp/
    root@172.16.1.31‘s password:
    sysctl.conf 100% 2184 2.1KB/s 00:00
    optimize-init_sys.sh 100% 4165 4.1KB/s 00:00
    hosts 100% 371 0.4KB/s 00:00
    oldboyedu.txt

守护进程方式数据同步:(免交互传输同步传输数据)

Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

规划:

  1. backup服务器作为rsync服务端
  2. 以rsync客户端服务器作为参照服务器,将数据推到rsync服务端

配置rsync守护进程方式(需要有服务端与客户端)

  • 第一部分:配置rsync服务端(将服务端配置到backup服务器上)

    • 第一个里程碑:软件是否存在
      [root@backup tmp]# rpm -qa|grep rsync
      rsync-3.0.6-12.el6.x86_64
    • 第二个里程碑:进行软件服务配置
      [root@backup tmp]# ll /etc/rsyncd.conf
      ls: cannot access /etc/rsyncd.conf: No such file or directory
      cat >/etc/rsyncd.conf <<EOF
      #rsync_config
      #created by HQ at 2017
      ##rsyncd.conf start##
      uid = rsync
      gid = rsync
      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
      [backup]
      comment = "backup dir by oldboy"
      path = /backup
      ignore errors
      read only = false
      list = false
      hosts allow = 172.16.1.0/24
      hosts deny = 0.0.0.0/32
      auth users = rsync_backup
      secrets file = /etc/rsync.password
      EOF

    • 第三个里程碑:创建rsync服务管理用户
      useradd -s /sbin/nologin -M rsync
    • 第四个里程碑:创建数据备份存储目录
      mkdir /backup
      chown -R rsync.rsync /backup/
    • 第五个里程碑:创建认证用户密码文件
      echo "rsync_backup:oldboy123" >/etc/rsync.password
      chmod 600 /etc/rsync.password
    • 第六个里程碑:启动rsync服务
      rsync --daemon
      [root@backup /]# ps -ef|grep rsync
      root 2623 1964 0 17:27 pts/0 00:00:00 vim /etc/rsyncd.conf
      root 2652 1 0 17:37 ? 00:00:00 rsync --daemon
      root 2654 2574 0 17:37 pts/1 00:00:00 grep --color=auto rsync
      [root@backup /]# netstat -lntup|grep rsync
      tcp 0 0 0.0.0.0:873 0.0.0.0: LISTEN 2652/rsync
      tcp 0 0 :::873 :::
      LISTEN 2652/rsync
      至此:服务端配置完成
  • 第二部分:配置rsync客户端(架构中其他服务器称为rsync客户端)
    • 第一个里程碑:软件是否存在
      [root@backup tmp]# rpm -qa|grep rsync
      rsync-3.0.6-12.el6.x86_64
    • 第二个里程碑:建立认证文件
      echo "oldboy123" >/etc/rsync.password
      chmod 600 /etc/rsync.password
    • 第三个里程碑:测试传输
      Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
      交互式:rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
      非交互式:rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

常见问题:
问题01:
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list hosts
rsync: mkstemp ".hosts.U5OCyR" (in backup) failed: Permission denied (13)
sent 200 bytes received 27 bytes 13.76 bytes/sec
total size is 371 speedup is 1.63
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
说明:备份目录权限设置不正确

rsync服务

标签:rsync服务

原文地址:http://blog.51cto.com/12908831/2128754

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!