Linux 搭建Rsync远程数据同步/备份

rsync选项
-a-rlptgoD
-v显示过程
-p保持属性不变
-t保持修改时间不变
-z数据压缩
--bwlimit限速
-P显示传输速率
--delete删除目标中内容,与源目录一模一样。(数据同步)

2.1:什么是rsync

  • rsync:是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。

2.2:rsync 软件功能介绍

  • 全量:将全部数据,进行传输覆盖

  • 增量:只传输差异部分的数据

Rsync特性:

  1. 支持拷贝普通文件与特殊文件如链接文件,设备等。

  2. 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

#tar zcvf backup_1.tar.gz /opt/data --exclude=clsn 说明:在打包/opt/data时就排除了clsn命名的目录和文件。

  1. 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。

  2. 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(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是表示增加文件的意思。

  1. 可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)

  2. 可以通过socket(进程方式)传输文件和数据(服务端和客户端)*。重点掌握

  3. 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像

2.3:本地模式

#-a
[root@prometheus tmp]# rsync -a /root/shellscript/ /opt/

2.4:远程模式

#scp 源文件  用户@IP:目标目录【全量】
#-r传目录
[root@prometheus opt]# scp /etc/hosts root@10.0.0.55:/tmp
#增量备份
[root@prometheus opt]# rsync -a /etc root@10.0.0.55:/tmp/

2.5:推与拉

#拉取
[root@prometheus opt]# rsync -a root@10.0.0.55:/tmp/ /etc 

2.6:异地传输:数据压缩+限速

 #-z -avz 压缩
 #--bwlimit 限速
 [root@prometheus opt]# rsync -a --bwlimit 1M root@10.0.0.55:/tmp/ /etc

3:rsync守护进程

  • 守护进程:持续运行的进程,也可以叫做服务。

  • 服务一般分为:客户端和服务端

  • 服务端:Linux服务器上运行的各种服务软件

  • 客户端:Linux中客户端可能是一个命令,也可能是app,小程序


  • rsync守护进程模式与远程模式

1.远程模式,用户每次输入用户名和密码

2.远程模式,需要使用系统已经存在的可登录的而用户(root)

3.远程模式,每个用户都可以使用,在任何地方都可以使用

4.一般用户临时传输数据,(scp/rsync)


1.rsync守护进程模式,通过配置文件设置密码

2.rsync守护进程模式,通过配置文件设置用户和密码(设置用户和密码 )

3.rsync守护进程模式,可以通过配置文件控制IP,网段。

4.rsync守护进程模式,与定时任务配合定时传输数据

3.1:实战搭建指南

  • rsync服务端配置文件/etc/rsyncd.conf

uid = rsync
gid = rsync
use chroot = no
max connetions = 2000
timeout = 300
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
#####################
[backup]
comment = this is hems writter
path = /backup
uid = rsync  #程序属主
gid = rsync   #程序属组
use chroot = no  # 是否root账户
max connetions = 2000  #最大连接的客户端数量
timeout = 300  #超时时间,超时自动断开,需要服务再主动连接
pid file = /var/run/rsyncd.pid  #pid文件存放地址
lock file = /var/run/rsync.lock  #锁文件地址
log file = /var/log/rsyncd.log  #日志文件存放目录
ignore errors  #忽略错误
read only = false  #表示可读可写
fake super = yes #无需让rsync以root身份运行即可保持文件完整属性
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 = this is hems writter  #注释
path = /backup   #需要备份的目录,最好和模块名字一样,方便查找

  • 创建用户

    [root@backup_55 /]# useradd -M -s /sbin/nologin rsync

  • 创建密码文件

    [root@backup_55 /]# echo 'rsync_backup:123456' > /etc/rsync.password
    #修改密码文件权限
    [root@backup_55 /]# chmod 600 /etc/rsync.password

  • 创建共享目录

    [root@backup_55 /]# mkdir  /backup
    #修改目录所有者
    [root@backup_55 /]# chown rsync.rsync /backup/
    [root@backup_55 /]# ll -d /backup/

  • 设置开机自启&重启服务

    [root@backup_55 /]# systemctl enable rsyncd
    Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
    [root@backup_55 /]# systemctl start rsyncd
    [root@backup_55 /]# systemctl status rsyncd
    ● rsyncd.service - fast remote file copy program daemon
       Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2023-04-11 18:44:44 CST; 1s ago
     Main PID: 10701 (rsync)
       CGroup: /system.slice/rsyncd.service
               └─10701 /usr/bin/rsync --daemon --no-detach
    ​
    Apr 11 18:44:44 backup_55 systemd[1]: Started fast remote file copy program daemon.
    Apr 11 18:44:44 backup_55 rsyncd[10701]: Unknown Parameter encountered: "max connetions"
    Apr 11 18:44:44 backup_55 rsyncd[10701]: IGNORING unknown parameter "max connetions"
    Apr 11 18:44:44 backup_55 rsyncd[10701]: params.c:Parameter() - Ignoring badly formed line in config file: ignore errors
    Apr 11 18:44:44 backup_55 rsyncd[10701]: rsyncd version 3.1.2 starting, listening on port 873
    [root@backup_55 /]#  ps -ef |grep rsync
    root      10701      1  0 18:44 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
    root      10705  10203  0 18:46 pts/0    00:00:00 grep --color=auto rsync
    [root@backup_55 /]# ss -lntup| grep rsync
    tcp    LISTEN     0      5         *:873                   *:*                   users:(("rsync",pid=10701,fd=3))
    tcp    LISTEN     0      5        :::873                  :::*                   users:(("rsync",pid=10701,fd=5))

  • 测试服务端

[root@backup_55 backup]# rsync -avz /etc/hostname rsync_backup@10.0.0.55::backup
Password: 
sending incremental file list
hostname
​
sent 105 bytes  received 43 bytes  32.89 bytes/sec
total size is 10  speedup is 0.07
 
  • 报错

    • 加上参数 fake super = yes #无需让rsync以root身份运行即可保持文件完整属性

    [root@backup_55 backup]# rsync -avz  /etc/hostname  rsync_backup@10.0.0.55::backup
    Password: 
    sending incremental file list
    hostname
    rsync: chgrp ".hostname.XdALw8" (in backup) failed: Operation not permitted (1)
    ​
    sent 105 bytes  received 127 bytes  66.29 bytes/sec
    total size is 10  speedup is 0.04
    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

  •  客户端配置/etc/rsync.pass
[root@prometheus ~]# echo '123456' >/etc/rsync.pass
[root@prometheus ~]# cat /etc/rsync.pass 
123456
[root@prometheus ~]# chmod 600 /etc/rsync.pass
[root@prometheus ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.55::backup --password-file=/etc/rsync.pass
sending incremental file list

sent 47 bytes  received 20 bytes  134.00 bytes/sec
total size is 266  speedup is 3.97

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值