linux下rsync的简单配置实例-守护进程
缘由:想要将一些文件备份出来,大都是一些打包的文件,类似tar.gz等文件。因此想要通过rsync来同步到目标位置。
1.准备工作
a. 客户端 和 目标位置均为centos7.9 版本,yum源和防火墙,selinux均已修改完成。
b.一个概念:其实rsync就是一个软件工具,可以在本地服务器内部不同目录间同步传输文件,也可以在不同服务器即远程服务器上同步传输文件。
c. 本文实验的是在不同服务器间同步传输文件的例子。
d.rsync可以通过命令行将本地文件或目录同步推送到目标服务器特定位置,也可以通过命令行将目标服务器的目录或文件拉取到本地的特定位置。
2.rsync 安装[客户端和目标服务器端都需要安装]
1 #提前配置好yum源,关闭防火墙和selinux 2 yum install -y rsync
3.目标服务器端启动rsync服务,可以加入开机自启
1 systemctl start rsyncd 2 systemctl enable rsyncd
3 #可以通过rsync --daemon 来启动
4.配置目标服务器端的配置文件/etc/rsyncd.conf
#注意安装好后本身就有的文件/etc/rsyncd.conf 可以备份一下 #备份文件 cp -a /etc/rsyncd.conf /etc/rsyncd.conf.local vi /etc/rsyncd.conf #一些关键的配置点 #首先是uid 是rsync客户端连接目标服务器时使用的用户 uid = rsync #其次是gid 是rsync用户的属组 gid = rsync #是否伪装为root用户 fake user = yes #是否开启假根,安全配置 use chroot = no #最大连接数 max connection = 500 #pid路径 pid file= /var/run/rsync.pid #排除目录 exclude = lost+found/ #是否开启传输日志 transfer logging = yes #超时时间 timeout = 600 #忽略错误 ignore errors #是否只读 read only #使用的账户 auth users = rsync #密码文件 secrets file = /etc/rsync.pwd #日志文件 log file = /var/log/rsync.log
#白名单
hosts allow = 10.0.0.0/24 #以上是目标服务器的全局配置 #下面开启守护进程的模块配置 [backup] #模块说明 comment = backup dir #模块路径,即同步到目标服务器的对应的目录路径 path = /backup
[模块2]
comment = xxx
path = /xxx
auth users = rsync2
#如果存在多个模块,那么可以继续在下方增加模块及其设定,不同的是,需要将全局配置的auth users 移到各个模块中,因为每个模块的认证用户都会不相同
#但是真正使用的用户仍然还是uid指定的用户,即我们通过useradd创建的用户。
至此,目标服务器端配置完成,重启服务,让配置生效
systemctl restart rsyncd
5.切换至客户端
安装好rsync后,创建免密登录的文件password-file 比如: /etc/rsync.pwd
echo "密码" > /etc/rsync.pwd
填入命令开启同步
1 rsync -avz /data rsync@IP地址::模块名 --password-file=/etc/rsync.pwd 2 #注意,此密码文件是客户端的文件,其中包含的内容是目标服务器端的账户rsync对应的密码,这样做是为了做到免密输入
开始同步
另外,rsync,scp,ftp都具备限速功能,rsync的限速功能 --bwlimit=n n的单位是kbytes
推荐脚本:打包
#/bin/bash cd / &&\ #获取ip地址,视网卡名称而定 IP=`ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $3}'` #定义目的备份目录 BakPath=/backup mkdir $BakPath/$IP -p ######判断是否属于星期二,并对星期一的数据增加标记打包 if [ $(date +%w) -eq 2 ];then date="$(date +%F -d "-1day")_week1" else date="$(date +%F -d "-1day")" fi cd / &&\ tar zcfh $BakPath/$IP/sys_config_${date}.tar.gz /var/spool/crond/ /etc/rc.local /server/scripts /etc/sysconfig/iptables && \ tar zcf $BakPath/$IP/web_data_${date}.tar.gz /var/html/www && \ tar zcf $BakPath/$IP/access_log_${date}.tar.gz /app/logs && \ find $BakPath -type f -name "*.tar.gz" |xargs md5sum > $BakPath/$IP/flag_${date} ########bak data to backupserver by long at 20171013 rsync -az $BakPath/ rsync_backup@192.168.0.175::backup/ --password-file=/etc/rsync.password #######delete data 7 days ago. find $BakPath -type -f -mtime +7 |xargs rm -rf [root@web01 ]# crontab -e 00 * * * * /bin/bash /server/scripts/bak.sh
以上文章有写的不对的地方,还请大家斧正!