rsync全量备份
增量备份.
Rsync 等价cp ,scp,rm,ls 四个命令功能.是一款实现全量及增量复制同步的软件工具.
scp 命令解释:
#1,从远程服务器中下载数据文件到本地主机:
scp root@host1:/tmp/test1 /tmp
#2,从远程服务器中拷贝目录文件到本地主机下面
scp -r root@host1:/tmp /tmp (加-r 参数表示递归,拷贝目录及其下的文件)
#3,将本地文件拷贝到远程服务器上.
scp /tmp/test1 root@host1:/tmp
[root@backup ~]# scp root@10.0.0.31:/tmp/test1 /tmp
root@10.0.0.31's password:
test1 100% 50 0.1KB/s 00:00
#4,将本地主机下的目录上传到远程服务器上
scp -r /tmp root@host1:/tmp
Rsync命令实践,等同于scp:
rsync -rp /tmp/ root@172.16.1.31:/tmp/
rsync -rp /tmp root@172.16.1.31:/tmp/
说明: 同步数据时,/tmp/目录后有/信息,表示将目录下面的数据内容进行备份同步
同步数据时,/tmp目录后没有/信息,表示将目录及目录下面的数据内容进行备份同步
rsync 等价于rm命令:
说明:
rsync实现删除目录中数据内容过程,就将一个空目录和一个有数据的目录进行同步
最终,会将有数据的目录中的文件进行清空
[root@backup ~]# rsync --delete /null/ /tmp/
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]
rsync -r --delete /null/ root@172.16.1.31:/tmp/tmp/ (同步目录时用-r 参数)
rsync 等价与ls命令
ls -l /etc/hosts
[root@backup ~]# rsync /etc/hosts
-rw-r--r-- 365 2018/12/02 17:28:16 hosts
rsync 工作方式:
①. 本地数据备份方式(cp)
Local: rsync [OPTION...] SRC... [DEST]
rsync --- 数据备份传输命令
option --- 可以输入一下和rsync传输数据有关的参数
src --- 要进行备份的数据(文件/目录)
dest --- 将数据信息备份到什么位置(相应路径中)
②. 远程数据备份方式 (scp)
Push(推) 从本地向远程复制
SRC --- 指定本地主机要传输到远程主机的数据
DEST --- 将本地数据保存到远端的什么路径中
[root@backup ~]# rsync -avz etc\[date\].tar.gz 172.16.1.31:/tmp/
Pull(拉) 从远程向本地复制
rsync [option] src dest
rsync -a 172.16.1.31:/etc/sysconfig/network /data
USER@]HOST: --- 需要指定以什么用户身份登录到远程主机,
如果省略USER信息,表示以当前用户身份进行登录
③. 守护进程传输模式 Rsync daemon:
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) 检查rsync服务是否安装: rpm -qa |grep rsync
2)编写配置文件 vim /etc/rsyncd.conf
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
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
[backup]
comment = "backup dir"
path = /backup
3)创建备份目录管理用户, rsync
useradd -M -s /sbin/nologin rsync
4) 创建备份目录
mkdir /backup
5)创建认证文件,并且让密码文件只有root可以操作,other和group用户无法操作
echo " rsync:123456" >>/etc/rsync.password
chmod 600 /etc/rsync.password
6) 以守护进程启动rsync服务
rsync --daemon
客户端部署Rsync 服务.
1)客户端首先 也要先验证是否安装rsync服务. rpm -qa |grep rsync
2) 安装了rsync服务后需要先设置传输的一个认证密码
echo "123456" >>/etc/rsync.password (密码需要和服务端的保持一致)
3)然后就可以通过rsync 将本地的文件备份到远程的备份服务器上.
rsync -avz src dest
以上报错是说备份的用户没有对模块/bakup 的访问权限,需要更改权限.
在服务端设置chown -R rsync.rsync /backup (对要存储备份文件的目录设置属主和属组都属于rsync)然后再在客户端进行备份操作即可.
Rsync 常见错误分析.
@1,查看报错信息并分析,模拟环境下试试
@2,查看服务的日志文件信息;tail -f /var/log/rsyncd.log
#1 客户端错误.
no route to host 一般是防火墙策略问题导致,
#2, 报错2.客户端的错误,
The remote path must start with a module name not a /(必须是模块名称,不是路径名称)
#3.服务认证用户认证失败, 确认账户和密码是否一致.
肯定是密码或者用户名的错误导致的..
或者是 /etc/rsync.password 文件权限不足600 导致的
注意点:
1.密码真的输入错误,用户名输入错误导致;
2.指定的文件密码的路径和实际文件名称不一致;
3./etc/rsync.password 文件权限不足600 导致
4.rsync_backup:123456 密码配置文件后面注意不要空格
5.rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称.
#4.rsync 服务位置模块错误.
@ERROR: Unknown module 'game'
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
#5. rsync服务权限阻止问题
【客户端的错误】
Permission denied
【错误演示过程】
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13)
sent 196 bytes received 27 bytes 63.71 bytes/sec
total size is 349 speedup is 1.57
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
【异常问题解决】
1. 备份目录的属主和属组不正确,不是rsync
2. 备份目录的权限不正确,不是755
#6.rsync服务备份目录异常
chdir failed 客户端错误
异常解决:
1.备份目录没有建立
2.建立的备份目录
Rsync 设置多模块进行备份.
守护进程排除目录功能实践,
sync -avz --exclude={b,d} rsync_backup@172.16.1.41::games /tmp/tony --password-file=/etc/rsync.password
数据备份排除文件或目录
--exclude-from=( 排除文件) exclude_file
守护进程来创建备份目录.
适用场景,将本地的文件备份到远程的存储服务器上.命令:
rsync -avz /tmp/tony/ rsync_backup@172.16.1.41::games/op/ --password-file=/etc/rsync.password
[root@backup games]# ls -l op/
total 0
-rw-r--r-- 1 rsync rsync 0 Dec 5 14:32 a
-rw-r--r-- 1 rsync rsync 0 Dec 5 14:32 c
###守护进程访问控制设置
###无差异备份同步操作 , --delete参数
###守护进程的列表功能配置.
list=true 这是开启 备份的模块名称
rsync rsync_backup@172.16.1.31::games --password-file=/etc/rsync.password
#启动rsync 指定端口和配置文件
rsync --daemon --port 8888 --config=xxxx 指定是别的rsync服务配置文件信息