rsync的配置小结(rsyslog配置文件详解)
admin2024-08-14 10:16:02Linux运维
NAME
rsync — a fast, versatile, remote (and local) file-copying tool
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
一.Local方式例子:
rsync /etc/hosts /tmp 相当于cp
rsync -avz /etc/hosts /tmp 保持属性拷贝
rsync -r --delete /null/ /data/ 需要创建一个null目录
二.Access via remot shell:例子:
Push:rsync -avz -e ‘ssh -p 22’ /etc/hosts 192.168.1.103:~
Pull:rsync -avz -e ‘ssh -p 22’ 192.168.1.103:~/hosts /tmp
三.Access via rsync daemon方式例子:
说明:通过rsync工具对103、104两台服务器上面的数据进行同步
要求:3台服务器,1台ip为192.168.1.101的server,2台ip为1.103和1.104的client
具体实施方法:
1.在三台服务器上同时安装rsync,安装完毕之后查看一下
yum install rsync -y
[root@shnne ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2.在服务端配置rsyncd.conf
vim /etc/rsyncd.conf
编辑
#created by shnne 12:54 2017-9-14
##rsyncd.conf start##
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 = 192.168.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[shnne]
comment = back server by shnne 12:54 2017-9-14
path = /shnne
3.添加rsync虚拟用户,并授权shnne目录
mkdir -p /shnne
useradd -s /sbin/nologin -M rsync
chown -R rsync.rsync /shnne
4.创建rsync虚拟用户的账号密码重定向到/etc/rsync.password文件,并修改权限
echo "rsync_backup:shnne" >/etc/rsync.password
cat /etc/rsync.password
chmod 600 /etc/rsync.password
ll /etc/rsync.password
5.启动rsync服务
rsync --daemon
echo "/usr/bin/rsync --daemon" >> /etc/rc.local
6.在103、104客户端创建文件和密码
echo "shnne">> /etc/rsync.password
chmod 600 /etc/rsync.password
ls -l /etc/rsync.password
7.将数据从服务器端拉到两台客户端服务器
rsync -avz rsync_backup@192.168.1.101::shnne /data --password-file=/etc/rsync.password
rsync -avz rsync://rsync_backup@192.168.1.101/shnne /data/ --password-file=/etc/rsync.password
将本地文件推送到服务器
rsync -avz /data/ rsync_backup@192.168.1.101::shnne --password-file=/etc/rsync.password
rsync -avz /data/ rsync://rsync_backup@192.168.1.101/shnne --password-file=/etc/rsync.password
8.客户端排除文件
1.排除单个文件
rsync -avz --exclude=file /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
2.排除多个个文件
rsync -avz --exclude={file1,file5} /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
rsync -avz --exclude=file1 --exclude=file2 /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
rsync -avz --exclude={a..z} /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
seq 10 > paichu.log
rsync -avz --exclude-from=paichu.log /data/ rsync_bakcup@192.168.1.101::shnne --password-file=/etc/rsync.password
9.服务端的排除
只需要在/etc/rsyncd.conf添加如下内容
exclude=file1 file2 shnne/paichu.log
10.无差异备份
就是客户端和服务端数据都一样
--delete 参数
从远端拉取数据:远端有什么客户端就有什么,远端没有本地有也会删除,造成的结果是客户端数据丢失
rsync -avz --delete rsync_backup@192.168.1.101::shnne /data/ --password-file=/etc/rsync.password
从远端推送数据:客户端有什么远端就有什么,本地没有远端有也要删除,会造成服务器端数据丢失
rsync -avz --delete /data/ rsync_backup@192.168.1.101::shnne --password-file=/etc/rsync.password
11.rsync结合定时任务crond实时同步
mkdir /server/scripts -p
cd /server/scripts/
vim backup.sh #编辑一下内容
#!/bin/sh
path=/shnne
dir="`ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)"
mkdir $path/$dir -p &&\
/bin/cp /var/spool/cron/root $path/$dir/cron_root_$(date +%F) &&\
/bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F) &&\
rsync -az $path/ rsync_backup@192.168.1.101::shnne --password-file=/etc/rsync.password
然后:crontab -e #创建定时任务
#backup shnne everyday at 01:00
00 01 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1