标签:一个 remote 固定 model roo 输入 识别 实时同步 针对
使用scp 进行
[root@web01 ~]# scp host_ip.sh root@172.16.1.41:/tmp
?
她不适合传海量的小文件
root@web01 ~]# scp -r /etc/ root@172.16.1.41:/tmp/ 他的缺点是如果要在次传文件的话,他是会重新传一遍,所以不适合做备份
安装rsync
[root@web01 ~]# yum install -y rsync
[root@web01 ~]# rsync -avz /etc/ 172.16.1.41:/tmp/
会出现一个报错,说是命令找不到,框起来的意思是,另一台也要装那个rsync
然后在执行这个命令,输入密码1就可以了
[root@web01 ~]# rsync -avz /etc/ 172.16.1.41:/tmp/
?
[root@web01 ~]# mkdir zhp
[root@web01 ~]# cd zhp
[root@web01 zhp]# touch file{1..3}
[root@web01 zhp]# cd ..
[root@web01 ~]# rsync -avz zhp root@172.16.1.41:/tmp/
?
[root@backup ~]# ll /tmp/
发现刚刚创的目录已经过去了
[root@web01 ~]# touch zhp/file4 然后在次创建,他只会传刚刚传刚刚创的,不会重新传之前传过的
?
rsync是一款开源、快速、多功能、可实现全量及增量的本地或远程数据同步备份的优秀工具。rsync软件适用于Unix/linux/Windows等多种操作系统平台。
rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及曾量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。
在同步数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可是实现快速的同步备份数据。
rsync监听端口:873
rsync运行模式:C/S
client/server
客户端/服务端
小提示:利用rsync还可以实现删除文件和目录的功能,这又相当于rm命令,一个rsync相当于scp、cp、rm,但是还优于他们的每一个命令。
1.借助cron+rsync把所有客户服务器数据同步到备份服务器。 2.针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。 3.通过本地打包备份,然后rsync结合inotify
应用把全网数统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果。 4.定期将IDC机房的数据 备份公司的内部服务器,防止机房地震及火灾问题导致数据丢失。 5.实时同步,解决存储服务器等的单点问题。
全备
将数据全部备份下来
增备
全备之后新增的数据,备份下来
推:所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)
推就是上传
拉就是下载
但是在备份中,是相反的,他的推就是下载
他的拉就是上传
类似与cp
[root@web01 ~]#rsync /etc/b.txt /tmp/ 就是和cp 一莫一样,只是词换了而已,
#本地拷贝数据命令
Local: rsync [OPTION...] SRC... [DEST]
OPTION 选项
SRC 源
DEST 目标
#本地拷贝数据示例
[root@backup ~]# rsync -avz /etc/passwd /tmp/
远程方式
类似于`scp`
?
```
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
```
?
rsync -avz root@172.16.1.41:/tmp ./
pull 拉的语法:rsync -avz +想要拉的远程虚拟机的主机名)+:+想要拉的目录+想放的目录的地方
pull 拉:
[root@web01 ~]# rsync -avz root@172.16.1.41:/tmp ./
push 推的语法:
rsync -avz +想要推的目录+就是想要推到远端的虚拟机的主机名的目录下
push 推:
[root@web01 ~]# rsync -avz /var root@172.16.1.41:/tmp/
[root@web01 ~]# cd bb
[root@web01 bb]# touch file{1..100}
[root@web01 ~]# rsync -avz bb root@172.16.1.41:/tmp/
?
[root@web01 ~]# mkdir cc
[root@web01 ~]# cd cc
[root@web01 cc]# touch file{1..100}
?
[root@web01 ~]# rsync -avz cc root@172.16.1.41:/tmp/
?
注意: rsync不管是推还是拉,推送目录的时候带/和不带/</font>
1.带/ :/etc/ 将etc目录下的所有内容,推过去(拉过来)
2.不带/:/etc 将etc目录整体推过去(拉过来)
守护进程
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
?
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync -avz /data/ rsync_backup@172.16.1.41::zls
主机名 | 外网IP | 内网IP | 角色 |
---|---|---|---|
backup | 10.0.0.41 | 172.16.1.41 | 服务端 |
web01 | 10.0.0.7 | 172.16.1.7 | 客户端 |
1.服务端安装rsync
[root@backup ~]# yum -y install rsync
2.服务端,修改配置文件
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
?
[root@backup ~]# vim /etc/rsyncd.conf
#用户名
uid = rsync
#用户组
gid = rsync
#端口
port = 873
#无需让rsync以root身份运行 (不使用root的权限)
fake super = yes
#禁锢目录,不允许操作指定目录之外的目录
use chroot = no
#最大连接数200
max connections = 200
#超时时间600s 10分钟
timeout = 600
#忽略错误
ignore errors
#关闭只读
read only = false
#不允许查看模块信息
list = false
#认证用户
auth users = rsync_backup
#认证用户的密码文件
secrets file = /etc/rsync.passwd
#指定日志文件
log file = /var/log/rsyncd.log
#####################################
#模块名(任意名字都可以)
[backup] 改成zhp
#注释信息(无关紧要)
comment = welcome to oldboyedu backup!
#路径
path = /backup
2.服务端(backup),创建用户
#检查用户是否存在
[root@backup ~]# id rsync
id: rsync: no such user
?
#创建用户(不允许登录,不创建家目录)
[root@backup ~]# useradd rsync -s /sbin/nologin -M
-s:指定登录的shell
-M:不创建家目录
3.服务端,创建一个备份目录
[root@backup ~]# mkdir /backup
#授权rsync用户
[root@backup ~]# chown -R rsync.rsync /backup/
(如果不授权的会报错,会报没有权限的的报错)
4.服务端,创建虚拟用户及密码文件
#创建用户名和密码文件
[root@backup ~]# vim /etc/rsync.passwd
rsync_backup:123456
#授权
[root@backup ~]# chmod 600 /etc/rsync.passwd 他只识别600
为什么要设密码,就是客户端推给服务端,要通过一个密码认证才可以
5.服务端,启动rsync添加开机自启
[root@backup ~]# ll /usr/lib/systemd/system/rsyncd.service
-rw-r--r-- 1 root root 237 Apr 26 01:17 /usr/lib/systemd/system/rsyncd.service
#启动rsyncd守护进程
[root@backup ~]# systemctl start rsyncd
#允许开机自启
[root@backup ~]# systemctl enable rsyncd 因为他是守护进程,所以要加一个d
[root@backup ~]# netstat -lntup
查看一下,会看到一个873
1.安装rsync
[root@web01 ~]# yum install -y rsync
2.创建虚拟用户的密码文件
创建密码文件的作用,主要是针对写脚本#创建用户密码文件
[root@web01 ~]# vim /etc/rsync.pass
123456
#授权
[root@web01 ~]# chmod 600 /etc/rsync.pass
[root@web01 ~]# mkdir /data
[root@web01 ~]# cd /data
[root@web01 data]# touch file{1..100}
[root@web01 data]# ll
推:
[root@web01 ~]# rsync -avz /data/ rsync_backup@172.16.1.41::zls 要输入密码
[root@web01 ~]# rsync -avz /data/ (交互式)rsync_backup@172.16.1.41::zhp --password-file=/etc/rsync.pass 不用输入密码(非交互式)
[root@backup ~]# ll /backup
#方法二:export RSYNC_PASSWOR
?
拉:
[root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::zls /root/
报错:
auth failed on module [zls]
1.客户端密码文件:600权限
2.服务端密码文件:600权限
3.客户端密码文件中,只写密码,不写用户
4.服务端密码文件中,用户:密码
服务端的/backup目录权限不是 rsync
chown -R rsync.rsync /backup
认证失败:
1.先检查配置文件:服务端:/etc/rsyncd.conf
[模块]
2.检查服务端,/etc/rsync.passwd文件的权限是不是600
3.再检查服务端,/etc/rsync.passwd文件的内容,是不是 用户名:密码
rsyncd.conf 里的 rsync_backup
4.再检查客户端,/etc/rsync.pass 权限600
5./etc/rsync.pass 内容只写密码
6.修改完配置文件要重启服务,[backup] [zls]
systemctl restart rsyncd
-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致
--password-file=xxx #使用密码文件
标签:一个 remote 固定 model roo 输入 识别 实时同步 针对
原文地址:https://www.cnblogs.com/223zhp/p/11372803.html