简介:
Rsync(remote sync)是UNIX 及类UNIX 平台下一款神奇的数据镜像备份软件,它不像FTP 或其他文件传输服务那样需要进行全备份,Rsync 可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。你可以使用它进行本地数据或远程数据的复制,Rsync 可以使用SSH 安全隧道进行加密数据传输。Rsync 服务器端定义源数据,Rsync 客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的。Rsync 使用TCP 873端口。
实验:
准备两台虚拟机测试:
192.168.40.111备份源
192.168.40.112 备份端
关掉防火墙 setenforce
systemctl stop firewalld
setenforce 0
备份源操作
安装rsync
yum -y install rsync
修改配置文件
vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.40.0/24 #指定的网段
[lx]
path = /opt/aaa
comment = Document Root of www.51xit.top
read only =no
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users =tom
secrets file = /etc/rsyncd_users.db
[root@localhost ~]# mkdir /opt/aaa
设置账户 密码
[root@localhost ~]# vim /etc/rsyncd_users.db
tom:123
加权限
[root@localhost ~]# chmod 600 /etc/rsyncd_users.db
启动rsync 查看端口
root@localhost ~]# rsync --daemon
[root@localhost ~]# netstat -nlput |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 13360/rsync
tcp6 0 0 :::873 :::* LISTEN 13360/rsync
备份端操作:
安装rsync
[root@localhost ~]# yum -y install rsync
备份端只需设置用户密码
[root@localhost ~]# vim /etc/server.pass
123
[root@localhost ~]# mkdir /opt/aaa/
加权限
[root@localhost ~]# chmod 600 /etc/server.pass
设置定时任务 每分钟执行一次
[root@localhost ~]# crontab -e
* * * * * rsync -az --password-file=/etc/server.pass tom@192.168.40.111::lx /opt/aaa #放到/opt/aaa指定的目录下
[root@localhost ~]# crontab -l
* * * * * rsync -az --password-file=/etc/server.pass tom@192.168.40.111::lx /opt/aaa
#[root@localhost ~]# crontab -e
#crontab: installing new crontab 意思是等待三分钟在开始执行
测试
在备份源的创建个测试:
[root@localhost aaa]# cd /opt/aaa/
[root@localhost aaa]# touch 22222222
在备份端等3分钟查看 是否同步:
[root@localhost ~]# ls
22222222
添加mysql日志自动备份:
备份源操作:
#进入数据库
mysql
#创建一个名为crm2的库
create database crm2;
#查询是否创建成功
show create database crm2;
切换到crm2库下
mysql> use crm2;
创建两张表,student表和class表
mysql> create table tb1(id int primary key,name char(8) not null,age int,class_id int not null);
Query OK, 0 rows affected (0.63 sec)
mysql> create table class(id int primary key,cname char(20) not null);
Query OK, 0 rows affected (0.34 sec)
给两张表插入一些数据
mysql> insert into class values(1,'一班'),(2,'二班');
mysql> insert into student values(1,'Jaden',18,1),(2,'哪拿',45,1),(3,'彦涛',30,2);
创建自动部署脚本并授权:
vim ls.sh
mysqldump -u root -p mysql > /opt/aaa/dbname.sql
chmod 777 ls.sh
创建crontab自动执行脚本
crontab -e
* * 1 * * /root/ls.sh #按需求操作多长时间执行一次脚本
测试一下:
sh ls.sh
在备份源查看是否备份完毕
[root@localhost]cd /opt/aaa
[root@localhost aaa]# ls
22222222 dbname.sql
在备份端查看
[root@localhost aaa]# ls
22222222 dbname.sql
可以打开dbname.sql看一下:
[root@localhost aaa]# vim dbname.sql
-- MySQL dump 10.14 Distrib 5.5.68-MariaDB, for Linux (x86_64)
--
-- Host: localhost Database: mysql
-- ------------------------------------------------------
-- Server version 5.5.68-MariaDB
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `class`
--
DROP TABLE IF EXISTS `class`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `class` (
`id` int(11) NOT NULL,
`cname` char(20) NOT NULL,
PRIMARY KEY (`id`) 。。。。。。。。。。(太多了直接省略了)
创建完毕搭建完成
Rsync 参数:
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息