rsync基本用法

Top
NSD SERVICES DAY05

案例1:rsync基本用法
案例2:rsync+SSH同步
案例3:使用inotifywait工具
案例4:配置Web镜像同步

1 案例1:rsync基本用法
1.1 问题

本例要求掌握远程同步的基本操作,使用rsync命令完成下列任务:

将目录 /boot 同步到目录 /todir 下
将目录 /boot 下的文档同步到目录 /todir 下
在目录 /boot 下新增文件 a.txt,删除 /todir 下的子目录 grub2,再次同步使 /todir 与 /boot 一致
验证 -a、-n、-v、--delete 选项的含义

1.2 方案

本地同步操作:

rsync [选项...] 本地目录1 本地目录2
rsync [选项...] 本地目录1/ 本地目录2

rsync同步工具的常用选项:

-n:测试同步过程,不做实际修改
--delete:删除目标文件夹内多余的文档
-a:归档模式,相当于-rlptgoD
-v:显示详细操作信息
-z:传输过程中启用压缩/解压

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:rsync同步基本操作

1)将目录 /boot 同步到目录 /todir 下

[[email protected] ~]# ls  -l  /todir                  //同步前
ls: 无法访问/todir: 没有那个文件或目录
[[email protected] ~]# rsync  -a  /boot  /todir          //将目录1作为目录2的子目录
[[email protected] ~]# ls  -l  /todir                  //检查同步结果
总用量 4
dr-xr-xr-x. 4 root root 4096 11月 30 18:50 boot

2)将目录 /boot 下的文档同步到目录 /todir 下

[[email protected] ~]# rm  -rf  /todir                  //清理掉目录2
[[email protected] ~]# rsync  -a  /boot/  /todir          //将目录1下的文档同步到目录2下
[[email protected] ~]# ls  -l  /todir                  //检查同步结果
总用量 126708
-rw-r--r--. 1 root root   126426 10月 30 2015 config-3.10.0-327.el7.x86_64
drwxr-xr-x. 2 root root     4096 11月 30 18:50 extlinux
drwx------. 6 root root      104 12月  9 09:58 grub2
.. ..

3)同步效果测试

在目录/boot下新增文件a.txt,删除/todir下的子目录 grub2:

[[email protected] ~]# touch  /boot/a.txt
[[email protected] ~]# rm  -rf  /todir/grub2/ 

现在目录/boot和/todir目录下的内容已经不一致了:

[[email protected] ~]# ls  -ld  /boot/a.txt  /todir/a.txt
ls: 无法访问/todir/a.txt: 没有那个文件或目录
-rw-r--r--. 1 root root 0 1月  11 21:09 /boot/a.txt
[[email protected] ~]# ls  -ld  /boot/grub2  /todir/grub2
ls: 无法访问/todir/grub2: 没有那个文件或目录
drwx------. 6 root root 104 12月  9 09:58 /boot/grub2

再次同步使/todir与/boot一致:

[[email protected] ~]# rsync  -a  /boot/  /todir/

确认同步结果:

[[email protected] ~]# ls  -ld  /boot/a.txt  /todir/a.txt
-rw-r--r--. 1 root root 0 1月  11 21:09 /boot/a.txt
-rw-r--r--. 1 root root 0 1月  11 21:09 /todir/a.txt
[[email protected] ~]# ls  -ld  /boot/grub2  /todir/grub2
drwx------. 6 root root 104 12月  9 09:58 /boot/grub2
drwx------. 6 root root 104 12月  9 09:58 /todir/grub2

步骤二:验证 -a、-v、-n、--delete 选项的含义

1)验证-a选项

当目录1包含文件夹时,若缺少-a或-r选项则文件夹会被忽略:

[[email protected] ~]# rsync  /home  /testa
skipping directory home
[[email protected] ~]# ls  -ld  /testa
ls: 无法访问/testa: 没有那个文件或目录

添加-a后才会执行同步:

[[email protected] ~]# rsync  -a  /home/  /testa
[[email protected] ~]# ls  -ld  /testa
drwxr-xr-x. 4 root root 31 1月   6 17:33 /testa

类似的情况,当目录1中的数据出现权限、归属、修改时间等变化时,若文件内容不变默认不会同步,若希望目录2也同步这些变化,也需要-a选项。

2)验证-v选项

创建测试目录及文档:

[[email protected] ~]# mkdir  /fdir
[[email protected] ~]# touch  /fdir/1.txt

添加-v选项时,可以看到操作细节信息,比如第一次同步时:

[[email protected] ~]# rsync  -av  /fdir/  /tdir
sending incremental file list
created directory /tdir
./
1.txt                                 //传输文档列表
sent 82 bytes  received 34 bytes  232.00 bytes/sec
total size is 0  speedup is 0.00

在目录/fdir/添加文件2.txt,再次跟踪同步信息:

[[email protected] ~]# touch  /fdir/2.txt
sending incremental file list
./
2.txt                                 //传输文档列表
sent 100 bytes  received 34 bytes  268.00 bytes/sec
total size is 0  speedup is 0.00

确认目录1和目录2的内容已经一致:

[[email protected] ~]# ls  /fdir/  /tdir/
/fdir/:
1.txt  2.txt
/tdir/:
1.txt  2.txt

再次跟踪同步信息,已经无需传输文件:

[[email protected] ~]# rsync  -av  /fdir/  /tdir
sending incremental file list
sent 58 bytes  received 12 bytes  140.00 bytes/sec
total size is 0  speedup is 0.00

3)验证-n选项

将-n、-v选项合用,可以模拟同步过程,显示需要做哪些操作(但并不真的同步)。

在目录/fdir下新建文件3.txt,测试同步操作:

[[email protected] ~]# touch  /fdir/3.txt
[[email protected] ~]# rsync  -avn  /fdir/  /tdir/
sending incremental file list
./
3.txt                                          //提示同步时会传输哪些文件
sent 78 bytes  received 18 bytes  192.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)
[[email protected] ~]# ls  -l  /tdir/3.txt                 //但实际并未真的同步
ls: 无法访问/tdir/3.txt: 没有那个文件或目录

去掉-n选项才会真正同步:

[[email protected] ~]# rsync  -av  /fdir/  /tdir/
sending incremental file list
./
3.txt
sent 114 bytes  received 34 bytes  296.00 bytes/sec
total size is 0  speedup is 0.00
[[email protected] ~]# ls  -l  /tdir/3.txt
-rw-r--r--. 1 root root 0 1月  11 21:46 /tdir/3.txt

4)验证--delete选项

rsync同步操作默认只是将目录1的数据同步到目录2,但如果目录2存在多余的文件却并不会去除,除非添加—delete选项。

在目录/fdir、/tdir已经完成同步后,删除/tdir/2.txt文件,再次同步:

[[email protected] ~]# rm  -rf  /fdir/2.txt
[[email protected] ~]# rsync  -a  /fdir/  /tdir/

检查发现目标文件夹/tdir下的2.txt文件还在:

[[email protected] ~]# ls  /fdir/  /tdir/
/fdir/:
1.txt  3.txt
/tdir/:
1.txt  2.txt  3.txt

这种情况下添加--delete选项再次执行同步,两个目录的内容就一致了:

[[email protected] ~]# rsync  -a  --delete  /fdir/  /tdir/
[[email protected] ~]# ls  /fdir/  /tdir/
/fdir/:
1.txt  3.txt
/tdir/:
1.txt  3.txt

2 案例2:rsync+SSH同步
2.1 问题

本例要求掌握rsync与远程SSH资源的同步操作,使用rsync命令访问远程主机svr7,完成下列任务:

查看远程主机的 / 目录下有哪些子目录
从远程主机下载 /etc/passwd 文件到当前目录
将远程主机的 /boot/ 目录同步为本地的 /fromssh
将本机的 /etc 目录同步到远程主机的 /opt/下

2.2 方案

列出 SSH 服务端资源

rsync [email protected]:远程目录/

rsync+SSH远程同步操作:

rsync [...] [email protected]:远程目录 本地目录
rsync [...] 本地目录 [email protected]:远程目录

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:列出远程主机的SSH资源

查看远程主机svr7的/目录下有哪些子目录:

[[email protected] ~]# rsync  [email protected]:/
[email protected]‘s password:                           //验证对方的密码
dr-xr-xr-x        4096 2016/12/15 10:39:34 .
lrwxrwxrwx           7 2016/12/07 09:21:50 bin
lrwxrwxrwx           7 2016/12/07 09:21:50 lib
lrwxrwxrwx           9 2016/12/07 09:21:50 lib64
lrwxrwxrwx           8 2016/12/07 09:21:50 sbin
dr-xr-xr-x        4096 2016/12/07 11:25:29 boot
drwxr-xr-x           6 2016/12/07 09:21:14 data
drwxr-xr-x        3200 2016/12/15 10:46:15 dev
drwxr-xr-x        8192 2016/12/20 17:01:02 etc

步骤二:rsync+SSH同步操作

1)从远程主机svr7下载/etc/passwd文件到当前目录

[[email protected] ~]# rsync  [email protected]:/etc/passwd  ./
[email protected]‘s password:                           //验证对方的密码
[[email protected] ~]# cat  passwd                             //检查同步结果
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
.. ..

2)将远程主机svr7的/boot/目录同步为本地的/fromssh

[[email protected] ~]# rsync  -a  [email protected]:/boot/  /fromssh
[email protected]‘s password:                           //验证对方的密码
[ro[email protected] ~]# ls  /fromssh/                             //检查同步结果
config-3.10.0-327.el7.x86_64
extlinux
grub2
initramfs-0-rescue-a19921505cc7e19d20dfcd5cea7d8aa2.img
initramfs-3.10.0-327.el7.x86_64.img
initramfs-3.10.0-327.el7.x86_64kdump.img
.. ..

3)将本机的/etc目录同步到远程主机svr7的/opt/下

确认目录大小:

[[email protected] ~]# du  -sh  /etc
35M    /etc

上行同步到远程主机svr7上:

[[email protected] ~]# rsync  -a  /etc  [email protected]:/opt/
[email protected]‘s password:

在远程主机上检查同步结果:

[[email protected] ~]# du  -sh  /opt/etc
35M    /opt/etc

3 案例3:使用inotifywait工具
3.1 问题

本例要求安装inotify-tools工具,并针对文件夹 /opt 启用 inotifywait 监控,完成下列任务:

当此目录下出现新建、修改、更改权限、删除文件等事件时能给出提示
验证上述监控事件的效果

3.2 方案

inotifywait监控操作:

inotifywait [选项] 目标文件夹

inotifywait常用命令选项:

-m,持续监控(捕获一个事件后不退出)
-r,递归监控、包括子目录及文件
-q,减少屏幕输出信息
-e,指定监视的 modify、move、create、delete、attrib 等事件类别

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:安装inotify-tools软件包

1)解包

[[email protected] ~]# tar  xf  inotify-tools-3.13.tar.gz  -C  /usr/src/

2)配置

[[email protected] ~]# cd  /usr/src/inotify-tools-3.13/
[[email protected] inotify-tools-3.13]# ./configure

3)编译

[[email protected] inotify-tools-3.13]# make

4)安装

[[email protected] inotify-tools-3.13]# make

5)检查安装结果(inotifywait程序可用)

[[email protected] ~]# inotifywait --help
inotifywait 3.13
Wait for a particular event on a file or set of files.
Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
Options:
    -h|--help         Show this help text.
.. ..

步骤二:测试inotifywait监控

1)开启监控任务,置入后台

[[email protected] ~]# inotifywait  -mrq  -e  create,modify,move,attrib,delete /opt &
[1] 55564

2)测试/opt/目录下的新建、修改、改名、更改权限、删除文件等事件的响应消息

观察新建文件时的监控信息:

[[email protected] ~]# touch  /opt/a.txt
/opt/ CREATE a.txt
/opt/ ATTRIB a.txt

观察修改文件内容时的监控信息:

[[email protected] ~]# echo  Hello  >  /opt/a.txt
[[email protected] ~]# /opt/ MODIFY a.txt
/opt/ MODIFY a.txt

观察将文件改名时的监控信息:

[[email protected] ~]# mv  /opt/a.txt  /opt/b.txt
/opt/ MOVED_FROM a.txt
/opt/ MOVED_TO b.txt

观察修改文件权限时的监控信息:

[[email protected] ~]# chmod  600  /opt/b.txt
/opt/ ATTRIB b.txt

观察删除文件时的监控信息:

[[email protected] ~]# rm  -rf  /opt/b.txt
/opt/ DELETE b.txt

3)停止监控任务

[[email protected] ~]# kill  -9  %1
[1]+  已杀死          inotifywait -mr -e create,modify,move,attrib,delete /opt

4 案例4:配置Web镜像同步
4.1 问题

本例要求为两台Web服务器svr7、pc207的网页文档目录配置镜像同步,主要基于inotifywait监控技术实现实时触发操作,需要完成下列任务:

以 svr7 为发起方,原始目录为 /var/www/html/
以 pc207 为同步目标,基于SSH免密验证
编写 inotify+rsync 同步脚本,验证实时同步效果

4.2 方案

inotifywait与rsync的结合,主要思路:

while  inotifywait监控操作
do
        需要执行的rsync同步操作
done

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:为主机svr7、pc207部署同步目录

双方的目录均为/var/www/html/,如果安装了httpd,此目录会自动出现。

1)确认svr7的目录内容

[[email protected] ~]# yum  -y  install  httpd
.. ..
[[email protected] ~]# ls  /var/www/html/                     //向目录下提供一些测试文件
libreoffice

2)确认pc207的目录内容

[[email protected] ~]# yum  -y  install  httpd
.. ..
[[email protected] ~]# ls   /var/www/html                 //初始目录无数据
[[email protected] ~]# 

步骤二:为svr7配置到pc207的SSH密钥对验证,实现免密码交互

1)检查当前用户是否已经有可用的SSH密钥对文件

[[email protected] ~]# ls  ~/.ssh/id_*
/root/.ssh/id_rsa  /root/.ssh/id_rsa.pub

如果找不到id_rsa、id_rsa.pub密钥对文件,则需要执行下列操作创建:

[[email protected] ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):      //按回车,确认存放位置
Enter passphrase (empty for no passphrase):       //按回车,确认不要密码
Enter same passphrase again:                      //再次按回车,确认
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
00:a7:cb:2d:9d:b8:8a:df:f5:ff:5b:ed:bd:04:10:fe [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|    . .    .     |
|     +    . .    |
|    . .    o     |
|   . = o    o    |
|    = + S    E   |
|     o        .. |
|    . .       ...|
| . o . .     ....|
|..o .   ....o. .+|
+-----------------+

2)将当前用户的SSH公钥部署到远程主机

[[email protected] ~]# ssh-copy-id  [email protected]
The authenticity of host ‘192.168.4.207 (192.168.4.207)‘ can‘t be established.
ECDSA key fingerprint is d3:16:2c:9a:9d:91:28:c8:74:9c:af:2d:04:82:c9:66.
Are you sure you want to continue connecting (yes/no)? yes         //首次连yes确认
[email protected]‘s password:                      //验证对方的密码
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh ‘[email protected]‘"
and check to make sure that only the key(s) you wanted were added.

3)验证免密码登录效果

[[email protected] ~]# ssh  [email protected]
Last login: Fri Jan 13 09:52:08 2017 from 192.168.4.110
[[email protected] ~]#                                      //确认已免密码连入远程主机
[[email protected] ~]# exit                                  //退出SSH登录环境
登出
Connection to 192.168.4.207 closed.
[[email protected] ~]#                                     //已反对原客户机

步骤三:编写镜像同步脚本并测试效果

1)编写脚本文件/root/isync.sh

[[email protected] ~]# vim  /root/isync.sh
#!/bin/bash
FROM_DIR="/var/www/html/"
RSYNC_CMD="rsync  -az  --delete  $FROM_DIR  [email protected]:/var/www/html"
while  inotifywait  -rqq  -e  modify,move,create,delete,attrib  $FROM_DIR
do
    $RSYNC_CMD
done  &
[[email protected] ~]# chmod  +x  /root/isync.sh  

2)运行脚本

[[email protected] ~]# /root/isync.sh
[[email protected] ~]# pgrep  -l  inotify                      //确认任务在运行
56494 inotifywait

3)测试同步效果

在svr7上向/var/www/html/目录下添加一个测试网页(触发同步):

[[email protected] ~]# touch  /var/www/html/a.txt
[[email protected] ~]# ls  /var/www/html/
a.txt  libreoffice

在pc207上检查/var/www/html/目录,内容应该已经与svr7上的同名目录一致:

[[email protected] ~]# ls   /var/www/html
a.txt  libreoffice

4)结束测试后,在svr7上停止监控任务

[[email protected] ~]# pkill  -9  inotify
[[email protected] ~]# pgrep  -l  inotify                     //确认已没有监控任务
[[email protected] ~]#

原文地址:http://blog.51cto.com/13735155/2133635

时间: 2024-10-19 07:31:00

rsync基本用法的相关文章

Service系统服务(六):rsync基本用法、rsync+SSH同步、配置rsync服务端、访问rsync共享资源、使用inotifywait工具、配置Web镜像同步、配置并验证Split分离解析

一.rsync基本用法 目标: 本例要求掌握远程同步的基本操作,使用rsync命令完成下列任务: 1> 将目录 /boot 同步到目录 /todir 下   2> 将目录 /boot 下的文档同步到目录 /todir 下   3> 在目录 /boot 下新增文件 a.txt,删除 /todir 下的子目录 grub2,再次同步使 /todir 与 /boot 一致   4> 验证 -a.-n.-v.--delete 选项的含义 方案: 本地同步操作: rsync [选项...] 本

rsync的用法

一.用法例子 1.增量备份本地文件#rsync -av ebook/ tmp/ //注意:文件名中最好不要有 :#rsync -avzrtopgL --progress /src /dst 2.本地和远程目录同步#rsync -auv --delete program doc /media/CBDISK/project/ //同步到U盘上#rsync -auv --delete program doc [email protected]:/home/cb/doc/working/project/

Linux下rsync的用法

一.rsync的概述 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync”算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上.如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不一致的部分.rsync可以执行完整备份或增量备份.它的主要特点有: 1.可以镜像保存整个目录树和文件系统: 2.可以很容易做到

rsync 的用法

rsync官方网站: https://www.samba.org/ftp/rsync/rsync.html rsync是可以实现增量备份的工具.配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步. rsync可以实现scp的远程拷贝(rsync不支持远程到远程的拷贝,但scp支持).cp的本地拷贝.rm删除和"ls -l"显示文件列表等功能.但需要注意的是,rsync的最终目的或者说其原始目的是实现两端主机的文件同步,因此实现的s

Rsync 学习笔记

Rsync 的工作方式 一.单个主机本地之间的数据传输,相当于cp [[email protected]~]$ cp /etc/hosts /tmp [[email protected] ~]$ rsync /etc/hosts/tmp 二.接触ssh等通道来传输数据,相当于scp [[email protected]~]$ rsync -avz 1.txt -e 'ssh -p 52113' 192.168.100.62:~ sendingincremental file list txt s

十八、Rsync 远程同步数据

在linux系统下数据备份的工具.Rsync不仅可以远程同步数据(类似于scp [1]),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉.如果你的linux没有rsync命令请使用 yum install -y rsync 安装. 下面阿铭先举一个例子,然后再详细讲解rsync的用法: [[email protected] ~]#

rsync + inotify 用来实现数据实时同步

一.简介 1.rsync 比其cp.tar备份的方法,rsync的优点是,安全性高.备份迅速.支持增量备份.只能做对实时性要求不高的数据备份,例如:备份文件服务到远端从服务器.在本地磁盘上做数据镜像等 增量备份:就是rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.但是对于大量文件达到千万量级别时,扫描所有文件是非常耗时的. 如果发生改变的只是其中的一小部分的话,这是非常低效的方式. rsync 不能实时的去监测,同步数据,虽然它可以通过 linux 守护进程的方式进行触发同步,两

第2章 rsync算法原理和工作流程分析

本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是rsync系列篇: 1.rsync(一):基本命令和用法 2.rsync(二):inotify+rsync详细说明和sersync 3.rsync算法原理和工作流程分析 4.rsync技术报告(翻译) 5.rsync工作机制(翻译) 6.man rsync翻译(rsync命令中文手册) 本文目录: 1.1 需要解决的问题 1.2 rsync增量传输算法原理 1.3 通过示例分析r

rsync+inotify+ssh远程实时增量同步

一.准备工作 -主服务器: Rsync,发起端 Inotify Ssh IP:192.168.10.128 -备份服务器 ssh,备份端 IP:192.168.10.129 二.部署过程 1.备份端建立上传用户,并设置权限 -创建用户 [[email protected] ~]# useradd rput [[email protected] ~]# passwd rput -为同步目录设置访问权限 [[email protected] ~]# chown -R rput:rput/var/ww