rsync远程同步备份工具

rsync远程同步介绍

rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,切采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份,镜像服务器等应用。

rsync官方站点是http://rsync.samba.org/,由Wayne Davsion进行维护。作为一种常用的备份工具,rsync往往是Linux和Unix系统默认安装的基本组件之一。

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文档的原始位置,发起端应对改设置具有读取权限。

rsync作为同步源时以守护进程运行,为其他客户机提供备份源。配置rsync同步源需要建立配置文件rsyncd.conf,创建备份账号,然后将rsync程序以“--daemon”选项运行。

rsync的基本用法(加粗部分表示常用)

格式:rsync [选项] 原始位置 目标位置

-r:递归整个目录树

-l:用来备份链接文件

-v:显示同步过程详细信息

-a:归档模式,保留文件权限属性等。等同于”-rlptgoD”

-z:在传输文件时进行压缩

-p:保留文件权限标记

-P:显示更详细过程

-t:保留文件时间标记

-g:保留文件属组标记

-o:保留文件属主标记

-H:保留硬连接文件

-A:保留ACL属性

-D:保留设备文件及其它特殊文件

--delete:删除目标位置有而原始位置没有的文件

--checksum:根据校验和来决定是否跳过文件

首先确保如果要做rsync+inotify实时同步的话,要查看系统内核。Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况。

[[email protected] ~]# uname -r

2.6.32-431.el6.x86_64

注意:root用户是服务端lisi用户是客户端

第一步:安装xinetd和rsync。由于rsync是非常实用的备份工具所以Linux都是默认安装好的,并启动服务。

[[email protected] ~]# rpm -ivh /mnt/Packages/xinetd-2.3.14-39.el6_4.x86_64.rpm

[[email protected] ~]# rpm -q rsync

rsync-3.0.6-9.el6_4.1.x86_64

[[email protected] ~]# vi /etc/xinetd.d/rsync 启用xinetd

disable = no   将yes改为no

[[email protected] ~]# service xinetd start

正在启动 xinetd:                                          [确定]

[[email protected] ~]# netstat -natp | grep 873  rsync端口是tcp的873

tcp        0      0 :::873                      :::*      LISTEN      28033/xinetd

基于安全性考虑,对于rsync的同步源最好仅允许以只读方式做同步。另外,同步可以采用匿名的方式,只要将其中的“auth users”和“secrets file”配置记录去掉就可以。

第二步:为备份账户创建数据文件。由于账号信息采用明文存放,因此应调整文件权限,避免账号信息泄露。

[[email protected] ~]# useradd benet

[[email protected] ~]# echo "123" | passwd --stdin benet  密码指定123

给用户对/var/www/html/设置权限

[[email protected] ~]# ls /var/www/html/

[[email protected] ~]# setfacl -R -m user:benet:rwx /var/www/html/

[[email protected] ~]# setfacl -R -m default:benet:rwx /var/www/html/

[[email protected] ~]# getfacl /var/www/html/   查看权限

getfacl: Removing leading ‘/‘ from absolute path names

# file: var/www/html/

# owner: root

# group: root

user::rwx

user:benet:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:benet:rwx

default:group::r-x

default:mask::rwx

default:other::r-x

第三步:rsync备份操作

[[email protected] ~]# cp -R /boot/grub/ /var/www/html/ 拷贝一份测试文件到需要被备份的目录下

[[email protected] ~]# ls /var/www/html/  查看目录

grub

远程ssh有两种方式,第一种需要知道对方用户密码,另一种就是通过ssh-keygen生成秘钥。

(ssh远程管理openssh使用详解http://liqingwen.blog.51cto.com/9853378/1693597

第一种输入密码远程ssh登陆(默认密码验证方式)

[[email protected] ~]# ssh 192.168.100.200  远程ssh

The authenticity of host ‘192.168.100.200 (192.168.100.200)‘ can‘t be established.

RSA key fingerprint is c5:0c:2a:f9:56:53:0a:28:f1:60:c9:a7:37:0c:8c:bc.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.100.200‘ (RSA) to the list of known hosts.

[email protected]‘s password: 输入对方用户密码

Last login: Fri Aug 28 13:58:24 2015 from 192.168.100.1

虚拟用户

[[email protected] ~]# mkdir /web

[[email protected] ~]# rsync -azP --delete [email protected]:/var/www/html/ /web/

从服务器上的用户备份文件到客户端

The authenticity of host ‘192.168.100.100 (192.168.100.100)‘ can‘t be established.

RSA key fingerprint is c5:0c:2a:f9:56:53:0a:28:f1:60:c9:a7:37:0c:8c:bc.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.100.100‘ (RSA) to the list of known hosts.

[email protected]‘s password: 输入用户benet密码

有部分内容省略··· ···

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1505) [generator=3.0.6]

rsync: send_files failed to open "/var/www/html/grub/grub.conf": Permission denied (13)

注释:/boot/grub/grub.conf 这个文件在发送时失败,原因是缺少权限。可以把文件权限改为644,再次执行就可以解决问题。

[[email protected] ~]# ls /web

grub

[[email protected] ~]# exit

logout

Connection to 192.168.100.200 closed.

[[email protected] ~]# cd /var/www/html/grub/

[[email protected] grub]# ls -l grub.conf

-rw-------+ 1 root root    761 8月  28 14:31 grub.conf

[[email protected] grub]# chmod 644 grub.conf  添加权限

[[email protected] grub]# ls -l grub.conf

-rw-r--r--+ 1 root root 761 8月  28 14:31 grub.conf

[[email protected] grub]# ssh 192.168.100.200再次远程到客户端

[email protected]‘s password:

Last login: Fri Aug 28 14:33:37 2015 from 192.168.100.100

第二种通过生成密钥方式进行无密码登录

[[email protected] ~]# ssh-keygen  生成密钥对

[[email protected] ~]# ssh-copy-id [email protected]  上传公钥到服务器的benet用户

[email protected]‘s password:  输入benet用户密码

[[email protected] ~]# rsync -azP --delete [email protected]:/var/www/html/ /web/再次备份

[email protected]‘s password:

receiving incremental file list

grub/grub.conf

761 100%  743.16kB/s    0:00:00 (xfer#1, to-check=11/18)

sent 31 bytes  received 878 bytes  259.71 bytes/sec

total size is 255280  speedup is 280.84

可以通过编辑脚本进行执行备份操作

[[email protected] ~]# vim /opt/rsync.sh

#!/bin/bash

rsync -az --delete [email protected]:/var/www/html/ /web/

[[email protected] ~]# chmod +x /opt/rsync.sh

[[email protected] ~]# rm -rf /var/www/html/

[[email protected] ~]# rm -rf /web/*

[[email protected] ~]# ls /web/

[[email protected] ~]# cd /opt/

[[email protected] opt]# ./rsync.sh

[[email protected] opt]# ls /web/

grub

计划备份

[[email protected] opt]# crontab -e

01 3 * * * /opt/rsync.sh &  每天3点10分运行脚本

配置rsync服务器及需要备份的目录,不使用系统用户

[[email protected] grub]# vim /etc/rsyncd.conf

uid = nobody

gid = nobody

use chroot = yes   禁锢在源目录

address = 192.168.100.100  监听地址

port 873  监听端口

max connections = 5

log file = /var/log/rsyncd.log   日志文件位置

pid file = /var/run/rsyncd.pid   存放进程ID的文件位置

lock file = /var/run/rsync.lock

hosts allow = 192.168.100.0/24  允许访问的客户机地址

[wwwroot]

path = /var/www/html/

comment = Document Root of mail.benet.com

read only = yes   是否为只读

dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z  同步时不再压缩的文件类型

auth users = back   授权账户

secrets file = /etc/rsyncd_users.db   存放账户信息的数据文件

根据上述操作,创建账号数据文件,添加一行用户记录,以冒号分隔,虚拟账户名称”back”密码”abc123”

[[email protected] grub]# grep db /etc/rsyncd.conf

secrets file = /etc/rsyncd_users.db

[[email protected] grub]# vim /etc/rsyncd_users.db

back:abc123  设置密码

[[email protected] grub]# ssh 192.168.100.200

[email protected]‘s password:

Last login: Fri Aug 28 14:45:18 2015 from 192.168.100.100

[[email protected] ~]# rsync -azP [email protected]::wwwroot /web/

Password:   输入back密码

receiving incremental file list

sent 58 bytes  received 440 bytes  110.67 bytes/sec

total size is 255280  speedup is 512.61

[[email protected] ~]# rm -rf /web/*  删除备份文件

[[email protected] ~]# rsync -azP [email protected]::wwwroot /web/

Password:

./

@ERROR: auth failed on module wwwroot

rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

[[email protected] ~]# ls /web/

[[email protected] ~]# rsync -azP [email protected]::wwwroot /web/  开始备份

[[email protected] ~]# ls /web/ 

Grub

在192.168.100.200上输入变量,无需交互密码

[[email protected] ~]# export RSYNC_PASSWORD=abc123  在192.168.100.100上输入变量,无需交互密码

[[email protected] ~]# rm -rf /web/*

[[email protected] ~]# rsync -azP [email protected]::wwwroot /web/

receiving incremental file list

··· ···省略

sent 352 bytes  received 148758 bytes  298220.00 bytes/sec

total size is 255280  speedup is 1.71

进行rsync+inotify实时同步

[[email protected] ~]# cd /proc/sys/fs/inotify/

[[email protected] inotify]# ls

max_queued_events  max_user_instances  max_user_watches

[[email protected] inotify]# vim /etc/sysctl.conf  配合inotify触发备份、调整内核参数

# Kernel sysctl configuration file for Red Hat Linux

··· ···省略

# Controls the maximum number of shared memory segments, in pages

kernel.shmall = 4294967296

fs.inotify.max_queued_events = 16384  监控事件的队列

fs.inotify.max_user_instances = 1024   最多监控实例数

fs.inotify.max_user_watches = 1048576 每个实例最多监控文件数

[[email protected] inotify]# sysctl -p  立即生效

[[email protected] grub]# mkdir /abc  创建文件夹

[[email protected] grub]# cd /abc

通过软件工具直接将所需安装包移动到客户端中然后进行解压缩。

[[email protected] abc]# ls

inotify-tools-3.14.tar.gz

[[email protected] abc]# tar zxvf inotify-tools-3.14.tar.gz 解压改软件

[[email protected] abc]# mv inotify-tools-3.14 /opt

[[email protected] abc]# cd /opt/inotify-tools-3.14/

[[email protected] inotify-tools-3.14]# yum -y install gcc gcc-c++  手工编译安装

[[email protected] inotify-tools-3.14]# ./configure

[[email protected] inotify-tools-3.14]# make && make install

进行监测

[[email protected] inotify-tools-3.14]#inotifywait -mrq -e modify,create,move,delete /var/www/html/

Inotifywait可监控、modify:修改、 create:创建、 move:移动、 delete:删除等操作。

在另打开一个连接,并创建一个文件

在回到监测的连接中,查看。你可以对里面进行创建、删除等操作。

时间: 2024-10-09 21:01:06

rsync远程同步备份工具的相关文章

rsync远程同步备份

作者:Georgekai 归档:学习笔记 2018/1/22 本章正题:rsync远程同步备份 1.5.1 什么是rsync? 开源的.快速的.多功能的.可实现全量及增量备份的本地或远程数据同步备份方案 rsync官网:http://rsync.samba.org/documentation.html 1. 什么是全量.什么是增量? 全量备份:本地所有数据都进行传输复制,不管对端服务器是否有相同的数据,如果有进行覆盖 增量备份:只备份同步变化的的数据,对端服务器已存在的数据不进行传输复制 1.5

Rsync远程同步工具

Rsync远程同步工具1配置rsync源服务器(http://rsync.samba.org/)(1)建立配置文件vim /etc/rsyncd.confuid = nobody //指定运行程序的用户gid = nobody //指定运行程序的组use chroot = yes //禁锢在源目录,指只能访问我指定的目录不允许访问其他目录,类似以vsftpd的禁锢address = 192.168.1.20 //指定监听的地址port 873 //指定监听的端口log file = /var/l

rsync远程同步及rsync+inotify实时同步

rsync远程同步及rsync+inotify实时同步 思维代入 正确.有效的备份方案是保障系统及数据安全的重要手段.在服务器中,通常会结合计划性任务.shell脚本来执行本地备份.但有时候为了提高备份的可靠性,异地备份也是非常有必要的.那下面就给大家介绍一种异地远程备份的方法:rsync远程备份. rsync简介 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份.保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份.镜像服务等应用

rsync远程同步(定期同步、实时同步)

关于rsync . 一款快速增量备份工具 1.Remote Sync,远程同步 2.支持本地复制,或者与其他SSH.rsync主机同步 3.官方网站: http://rsync.samba.org 配置rsync源服务器 rsync同步源: 指备份操作的远程服务器,也称为备份源 配置rsync源 基本思路: 1.建立rsyncd.conf配置文件.独立的账号文件 .启用rsync的--daemon模式 应用示例: 1.户backuper,允许下行同步 2.操作的目录为/var/www/html/

CentOS 6.x中用rsync远程同步文件

CentOS 6.x中用rsync远程同步文件 系统环境:Centos 6.9 x64  目的: 服务器110.112.200.12中/u01文件夹需要同步复制到110.210.250.58里面进行备份. 将200.12做xinetd 服务器,将其/u01 文件夹复制同步到250.58里面去,250.58做客户端. 一.服务器端的配置 在源服务器110.112.200.12中配置 [[email protected] test]#  yum -y install xinetd rsync 再修改

rsync 远程同步 linux 及 windows 主机

一.前言 1.rsync原理及rsync+inotify触发同步 http://nmshuishui.blog.51cto.com/1850554/1387048 2.本篇说明 为了保证数据的绝对可靠性: 首先,所有的服务器的数据都用脚本打包备份在本地一份,如上篇博客 其次,单独拿出一台pc机做备份机,为rsync客户端,每天定时却拉取各rsync服务器备份好的数据包 再次,使用rsync同步 linux 及 windows 服务器 3.服务器说明 rsync服务器:192.168.200.16

rsync远程同步服务

rsync远程同步服务,,在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等信息 rsync是xinetd的子服务 配置rsync服务器 rsync服务器主要有三个配置文件(需要自己手动创建) 1.rsyncd.conf 2.rsyncd.secrets 3.rsyncd.motd mkdir /etc/rsyncd         #创建配置目录 cd /etc/rsyncd touch rsyncd.conf               #创建主配置文件 touch rsyncd.s

sersync 配合rsync实时同步备份

sersync 配合rsync实时同步备份 sersync是基于Inotify开发的,类似于Inotify-tools的工具,基本上Inotify能实现的功能,sersync也具备,因此,sersync 也可以实时监听目录中发生变化的(包括增加.删除.修改) sersync 配合rsync实时同步备份 1. sersync 介绍 2. 部署rsync daemon 3. 安装sersync sersync 配合rsync实时同步备份 1. sersync 介绍 sersync是基于Inotify

rsync+inotify同步备份MYSQL数据

rsync+inotify同步备份MYSQL数据 rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但是rsync不能实时的去监测.同步数据.inotify 是一种强大的.细粒度的.异步的文件系统事件监控机制,通过inotify可以监控文件系统中添加.删除,修改.移动等各种细微事件. 实验环境:备份端192.168.1.123(rsync server) 备份源192.168.124(rsync client inotify mysql)