rsync同步远程复制学习

常用服务之rsync(1)

Cloud研习社 Cloud研习社 2022-08-23 07:38 发表于山东
图片图片

教程每周二、四、六更新

图片

 

图片

rsync概述

图片

 

  1. 什么是rsync
rsync(Remote synchronization),用于文件同步(即文件复制)。它可以实现在本地与远程主机之间或本地的不同目录之间进行同步文件。详细情况见官方文档rsync支持全量同步和增量同步。
  • 全量同步:
无论是否同步过,每次都要做同步。
  • 增量同步:
对以前同步过并且没有改动的文件不做同步,仅同步有和以前有差异的部分。
  1. 为什么要是用rsync工作中需要定时/实时数据备份。本地服务器目录、不同机器、不同机房之间的数据备份。都可以用rsync完成。
  2. rsync实现增量同步的原理Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步CentOS5,rsync2.x比对方法,把所有的文件比对一遍,然后进行同步。CentOS6,rysnc3.x比对方法,一边比对差异,一边对差异的部分进行同步。
  3. rsync软件特性1)支持拷贝普通文件与特殊文件如链接文件,设备等。2)可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。tar zcvf backup_1.tar.gz  /opt/data  -exclude=jason    说明:在打包/opt/data时就排除了jason命名的目录和文件。3)可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。4)可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)。将备份/home 目录自 2020-11-29 以来修改过的文件
    tar -N 2020-11-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 *.mp4说明:这条命令是将所有.mp4的文件增加到all.tar的包里面去。-r是表示增加文件的意思。5)可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)6)可以通过socket(守护进程方式)传输文件和数据(服务端和客户端)。重点掌握7)支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
  4. rsync应用场景
    • 利用定时任务实现数据备份(crond+rsync)
    • 利用实时同步方式实现数据备份(inotify/sersync+rsync)

 

图片

rsync的基本使用

图片

 

官方帮助文档(选读):https://www.samba.org/ftp/rsync/rsync.html老规矩,认识了rsync以后,我们来看rsync到底怎么使用。Linux系统默认是没有rsync这个命令的,我们需要安装它,按照如下命令操作(先不要管它是是什么,我们后面肯定会讲到,现在照做就行了):

yum -y install rsync

 

安装完成后,我们先来体验一下rsync的用法:

[root@rsync ~]# rsync -av /etc/passwd zhuo/passwd-bak
sending incremental file list
passwd

sent 1,452 bytes received 35 bytes 2,974.00 bytes/sec
total size is 1,360  speedup is 0.91

 

上面我们实现了把/etc/passwd文件备份到了 zhuo/passwd-bak文件。这是本地的文件备份到本地。我们再来看一个备份到远程主机的例子:

[root@rsync ~]# rsync -av /etc/passwd 10.0.0.136:/root/zhuo/passwd-bak
The authenticity of host '10.0.0.136 (10.0.0.136)' can't be established.
ECDSA key fingerprint is SHA256:aoXZq94KpE2Doc1auJGSA9YW2HT2T94jKtI31jYygf0.
ECDSA key fingerprint is MD5:c8:83:bf:57:6e:28:d9:39:2e:f2:3d:07:42:a5:1d:8b.
Are you sure you want to continue connecting (yes/no)? yes #第一次连接,需要手动输入yes
Warning: Permanently added '10.0.0.136' (ECDSA) to the list of known hosts.
root@10.0.0.136's password: # 默认root用户登录,需要输入root密码
sending incremental file list

sent 45 bytes received 12 bytes 8.77 bytes/sec
total size is 1,360  speedup is 23.86

 

 

推荐阅读

常用服务之rsync(2)

Cloud研习社 Cloud研习社 2022-08-25 07:31 发表于山东
图片图片

教程每周二、四、六更新

图片有了前面一篇文章的例子,我们就已经对rsync有了初步的认识,下面我们来看看详细用法:

[root@rsync ~]# rsync
......
Usage: rsync [OPTION]... SRC [SRC]... DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  or   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
  or   rsync [OPTION]... [USER@]HOST:SRC [DEST]
  or   rsync [OPTION]... [USER@]HOST::SRC [DEST]
  or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.

# 特别说明:
# USER@:当做远程同步操作时,需指明系统登录的用户名,如果不显示指定,默认为以 root 身份登录系统并完成同步操作

 

上面我们可以看到有7中命令模式(按照“Usage”从上到下的顺序介绍):

第一种:本地备份

第二种:把本地数据备份到远程主机

第三、四种:同第二种,只是和第二种登录认证时的验证方式不同。使用方式见“1.3rsync守护进程模式”【使用单个冒号(:),则默认使用 ssh 协议;反之,如果使用两个冒号(::)或rsync://,则使用 rsync 协议,这种方式要求rsync以守护进程的方式运行】

第五种:把远程机器上的数据备份到本地机器上

第六、七中:同第五种,只是和第五种登录认证时的验证方式不同。使用方式见“1.3rsync守护进程模式部署”【使用单个冒号(:),则默认使用 ssh 协议;反之,如果使用两个冒号(::)或rsync://,则使用 rsync 协议,这种方式要求rsync以守护进程的方式运行】

看完了几种使用方式,我们再来看看有哪些选项可以使用:

图片

图片

选项很多,我们只要掌握几个标注 为常用的选项即可。

我们来看几个实例:

# 使用-a选项
[root@nfs ~]# cd scripts/
[root@nfs scripts]# rsync -a /root/scripts root@10.0.0.22:/backup
root@10.0.0.22's password:

# 使用-av选项:此时会显示同步的文件的详细列表以及相关的统计数据
[root@nfs scripts]# rsync -av /root/scripts/ root@10.0.0.22:/backup/
root@10.0.0.22's password:
sending incremental file list # 下面展示同步了哪些文件
./
mirrors.sh

sent 580 bytes received 38 bytes 176.57 bytes/sec # 同步的数据量统计
total size is 465  speedup is 0.75

 

我们看一下对于软连接的处理:

# 创建一个软连接
[root@nfs scripts]# ls
mirrors.sh
[root@nfs scripts]# ln -s mirrors.sh soft_mirrors.sh

# 不使用和软连接相关的参数
[root@nfs scripts]# rsync -rv /root/scripts/ root@10.0.0.22:/backup/
root@10.0.0.22's password:
sending incremental file list
skipping non-regular file "soft_mirrors.sh" # 默认不备份软连接
mirrors.sh

sent 613 bytes received 83 bytes 278.40 bytes/sec
total size is 475 speedup is 0.68

# 我们再加上和软连接相关的参数:
[root@nfs scripts]# rsync -lrv /root/scripts/ root@10.0.0.22:/backup/
root@10.0.0.22's password:
sending incremental file list
mirrors.sh
soft_mirrors.sh -> mirrors.sh # 软连接也备份了

sent 162 bytes received 44 bytes 82.40 bytes/sec
total size is 475  speedup is 2.31

# 现在我们把上面的soft_mirrors.sh删除,重新创建一个软连接
[root@nfs scripts]# ln -s ../anaconda-ks.cfg soft_anaconda-ks
# 再次同步,请到10.0.0.22服务器上观察同步后的效果(ll查看),软连接没有被同步
[root@nfs scripts]# rsync -rv /root/scripts/ root@10.0.0.22:/backup/

 

思考题:上面最后一步,如果使用下面的命令,会发生什么现象:

[root@nfs scripts]# rsync -lrv /root/scripts/ root@10.0.0.22:/backup/

# 如果使用下面的命令,又会发生什么现象
[root@nfs scripts]# rsync -Lrv /root/scripts/ root@10.0.0.22:/backup/

 

强调一个重点

适合rsyncnull和null/ 区别:

null是目录和目录下的内容,null/只是目录下的内容,不含本身。

 

推荐阅读

 

 

《一站式教程之集群架构》:

一文彻底搞懂IP地址知识(值得收藏的手册)

老司机:子网掩码我不怕,怕的是子网划分!

多网卡绑定之bond

多网卡绑定之team

集群架构及常见集群特性介绍

集群架构之准备工作(1)

集群架构之准备工作(2)-设置时间同步

集群架构之准备工作(3)

常用服务之rsync(1)

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
146篇原创内容
 
收录于合集 #一站式教程
 128
上一篇目录下一篇常用服务之rysnc(3)-rsync守护进程
阅读 59

常用服务之rysnc(3)-rsync守护进程

Cloud研习社 Cloud研习社 2022-08-27 10:31 发表于山东
图片图片

教程每周二、四、六更新

图片

 

图片图片

rsync vs scp

 

两个都可以实现本地和异地备份。

scp无法备份大量数据

rsync可以实现边复制,边统计,边比较。

 

图片图片

rsync守护进程模式

 

这是一种开启rsync服务端,等待客户端连接的方式。

环境介绍:

nfs:10.0.0.21 ,作为客户端rsync:10.0.0.22 , 作为服务端
  • 安装rsync(服务端、客户端主机都需要)

    yum install -y rsync

  • 配置服务端:

    编写配置文件/etc/rsyncd.conf

    # 先备份
    [root@rsync ~]# cp /etc/rsyncd.conf{,.ori}
    # 再编辑
    [root@rsync ~]# cat /etc/rsyncd.conf # 可以练习用cat命令写入文件
    # /etc/rsyncd: configuration file for rsync daemon mode

    # See rsyncd.conf man page for more options.
    uid = rsync # 管理备份目录的用户
    gid = rsync # 管理备份目录的用户组
    use chroot = no
    max connections = 200  # 并发连接数
    timeout = 600       # 超时时间(超时后断开连接)
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    hosts allow = 10.0.0.0/24    # 哪些主机可以访问
    hosts deny = 0.0.0.0/32      # 哪些主机不可以访问
    auth users = rsync_backup # 远程虚拟连接用户
    secrets file = /etc/rsync.password
    [backup] # 模块名,远程访问使用这个名字
    comment = rsync learning(studyclub)
    path = /backup/ # 服务端备份数据的保存位置,这个目录的用户和用户组是rsync和rsync【上面的uid和gid决定的】

创建用户和备份目录

# 创建用户
useradd rsync -M -s /sbin/nologin
# 创建备份目录并修改所有者
mkdir /backup -p
chown -R rsync.rsync /backup

 

启动rsync守护进程并设置为开机启动

[root@rsync ~]# systemctl start rsyncd
[root@rsync ~]# systemctl enable rsyncd
[root@rsync ~]# systemctl status rsyncd

# 检查进程启动情况
[root@rsync ~]# ps aux | grep rsync
root 55073  0.0  0.1 114744  1184 ? Ss 13:53   0:00 /usr/bin/rsync --daemon --no-detach
#检查端口
[root@rsync ~]# netstat -lntup | grep 873
tcp 0      0 0.0.0.0:873             0.0.0.0:*               LISTEN 55073/rsync
tcp6 0      0 :::873                  :::*                    LISTEN 55073/rsync

 

配置认证密码文件:

[root@rsync ~]# echo "rsync_backup:backup123" >/etc/rsync.password
[root@rsync ~]# chmod 600 /etc/rsync.password

 

至此,服务端配置完成。

配置客户端

创建认证密码文件:

[root@nfs ~]# echo "backup123" >/etc/rsync.password
[root@nfs ~]# chmod 600 /etc/rsync.password

 

至此,rsync全部配置完成。下一期我们开始使用。

 

 

推荐阅读

 

 

《一站式教程之集群架构》:

一文彻底搞懂IP地址知识(值得收藏的手册)

老司机:子网掩码我不怕,怕的是子网划分!

多网卡绑定之bond

多网卡绑定之team

集群架构及常见集群特性介绍

集群架构之准备工作(1)

集群架构之准备工作(2)-设置时间同步

集群架构之准备工作(3)

常用服务之rsync(1)

常用服务之rsync(2)

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
146篇原创内容
 
收录于合集 #一站式教程
 128
上一篇常用服务之rsync(2)下一篇常用服务之rsync(4)
阅读 51

 

常用服务之rsync(4)

Cloud研习社 Cloud研习社 2022-08-30 07:31 发表于山东
图片图片

教程每周二、四、六更新

图片

前面完成了rsync的配置,本文开始rsync的使用

 

图片

守护进程方式下开始使用rsync

备份/etc/yum.repos.d/目录:

[root@nfs ~]# rsync -avz /etc/yum.repos.d/ studyclub@10.0.0.136::backup --password-file=/etc/rsync.password
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]

 

出师不利,第一个命令就报错。这是因为我们在命令中使用的登录用户不符合rsync服务端的设置(auth users = rsync_backup),我们必须使用服务端配置的用户名登录才可以,所以按照下面的命令执行:

[root@nfs ~]# rsync -avz /etc/yum.repos.d/ rsync_backup@10.0.0.136::backup --password-file=/etc/rsync.password
sending incremental file list
rsync: chgrp "." (in backup) failed: Operation not permitted (1)
......
rsync: chgrp ".CentOS-Vault.repo.q4sIHF" (in backup) failed: Operation not permitted (1)
rsync: chgrp ".CentOS-fasttrack.repo.IprI6D" (in backup) failed: Operation not permitted (1)

sent 3,651 bytes received 886 bytes 292.71 bytes/sec
total size is 11,598  speedup is 2.56
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]

 

不好意思,又报错了。这是因为rsyncd不是以root身份运行的,所以有些文件属性未能备份。此时需要在服务端的配置文件中加一个配置项:fake su per = yes。这样就能保证在rsync没有以root身份运行也可以存储文件的全部属性。

再次执行上面的命令,成功:

[root@nfs ~]# rsync -avz /etc/yum.repos.d/ rsync_backup@10.0.0.136::backup --password-file=/etc/rsync.password
sending incremental file list
./
CentOS-Base.repo
CentOS-CR.repo
CentOS-Debuginfo.repo
CentOS-Media.repo
CentOS-Sources.repo
CentOS-Vault.repo
CentOS-fasttrack.repo

sent 444 bytes received 274 bytes 46.32 bytes/sec
total size is 11,598  speedup is 16.15

 

所以,以后rsync的配置文件就可以保存下来,工作中可以直接用:

[root@rsync ~]# cat /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.
uid = rsync
gid = rsync
use chroot = no      
max connections = 200  
timeout = 600 
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
fake super = yes
list = false
hosts allow = 10.0.0.0/24
hosts deny = 0.0.0.0/32  
auth users = rsync_backup
secrets file = /etc/rsync.password
list = true
[backup]
comment = rsync learning(studyclub)
path = /backup/
[media]
comment = backup for media
path = /data/media_bak

 

 



图片

rsync服务端排错思路


图片

 

  1. 查看rsync服务配置文件路径是否正确,正确的默认路径为/etc/rsyncd.conf
  2. 查看配置文件里host  allow和host deny,允许的ip网段是否是客户端所在的网段
  3. 查看配置文件中path参数里的路径是否存在,权限是否正确。(正常应为配置文件中UID参数对应的属主和组)
  4. 查看rsync服务是否启动。查看命令为:ps -ef | grep rsync ;端口是否存在ss -lntu | grep 873
  5. 查看iptables和selinux是否开其允许rsync服务通过,也可以考虑关闭。
  6. 查看服务端rsync配置的密码文件是否为600权限,密码格式是否正确。【正确格式:用户名:密码】,文件路径和配置文件里的secrets file参数对应。
  7. 查看rsyncd.conf文件中,用户是否对模块下的目录有可读写的权限。比如前面例子中media模块,rsync用户对/data/media_bak目录是否有可读写的权限。

 

 



图片

实例演示


图片

 

 

增量同步

# 在前面的基础上,新增一个文件
[root@nfs ~]# dd if=/dev/zero of=/etc/yum.repos.d/jason bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00144228 s, 727 MB/s

# 再次同步
[root@nfs ~]# rsync -avz /etc/yum.repos.d/ rsync_backup@172.16.1.22::backup --password-file=/etc/rsync.password
sending incremental file list
./
jason # 我们可以看到这里仅仅推送了一个文件到服务端

sent 1,330 bytes received 46 bytes 917.33 bytes/sec
total size is 1,065,127  speedup is 774.07

 

排除某些文件同步

# 新建一个文件
[root@nfs ~]# touch /etc/yum.repos.d/file.txt

# 排除上面新创建的文件进行同步
# 方法1:
[root@nfs ~]# rsync -avz /etc/yum.repos.d/ rsync_backup@172.16.1.22::backup --password-file=/etc/rsync.password --exclude=*.txt
sending incremental file list
./

sent 259 bytes received 27 bytes 572.00 bytes/sec
total size is 1,065,127  speedup is 3,724.22

# 方法2:
[root@nfs ~]# rsync -avz /etc/yum.repos.d/ rsync://rsync_backup@172.16.1.22:/backup --password-file=/etc/rsync.password --exclude=*.txt
sending incremental file list

sent 252 bytes received 20 bytes 544.00 bytes/sec
total size is 1,065,127  speedup is 3,915.91

 

 

 

推荐阅读

 

 

《一站式教程之集群架构》:

一文彻底搞懂IP地址知识(值得收藏的手册)

老司机:子网掩码我不怕,怕的是子网划分!

多网卡绑定之bond

多网卡绑定之team

集群架构及常见集群特性介绍

集群架构之准备工作(1)

集群架构之准备工作(2)-设置时间同步

集群架构之准备工作(3)

常用服务之rsync(1)

常用服务之rsync(2)

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
146篇原创内容
 
收录于合集 #一站式教程
 128
上一篇常用服务之rysnc(3)-rsync守护进程下一篇常用服务之rsync(5)-实战
阅读 104

 

 

 

 

 

 

 

 

 

 

posted @ 2022-09-02 09:27  往事已成昨天  阅读(1025)  评论(0编辑  收藏  举报