rsync linux 教程,rsync 使用示例

本文由LinuxProbe.Com团队成员烨子整理发布,原文来自:Linux就该这么学。

导读

Rsync(remote sync) 是用于同步某一位置文件和目录到另一位置的有效方法。备份的位置可以在本地服务器或远程服务器。本站之前亦有介绍rsync的安装配置和教程,详看《rsync的安装和配置》一文。

rsync特征

速度:第一次的rsync同步源的整个内容目录到目标位置。之后,rsync只传递改变的块或字节到目标位置,使传输非常快。

安全:rsync在传输中允许使用ssh协议加密数据。

更少的带宽:rsync分别在发送和接收端对数据进行压缩和解压缩。所以在使用rsync传输数据时使用的带宽总是比使用其他文件传输协议来的少。

特权:不需要特殊权限来安装和执行rsync

rsync语法

$ rsync options source destination

source和destination可以是本地或远程。在远程的情况下,需要指定登录名、远程服务器的名称和位置。

rsync使用示例

1. 在本地服务器上同步两个目录

用rsync – zvr在本地服务器上同步两个目录

$ rsync -zvr /var/opt/installation/inventory/ /root/temp

building file list ... done

sva.xml

svB.xml

.

sent 26385 bytes received 1098 bytes 54966.00 bytes/sec

total size is 44867 speedup is 1.63

在上面rsync例子中:

• –z:允许压缩

• –v:冗长

• –r:递归

注:Rsync不会同步源文件或目录的时间戳

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml

-r--r--r-- 1 bin bin 949 Jun 18 2009 /var/opt/installation/inventory/sva.xml

-r--r--r-- 1 root bin 949 Sep 2 2009 /root/temp/sva.xml

2. 用rsync –a同步时间戳

rsync的-a选项是archive的意思,加了之后有以下作用:

• 递归模式

• 同步软链接

• 同步权限

• 同步时间戳

• 同步属主和属组

现在,我们执行与例1一样的命令,不同的是使用-a选项。

$ rsync -azv /var/opt/installation/inventory/ /root/temp/

building file list ... done

./

sva.xml

svB.xml

.

sent 26499 bytes received 1104 bytes 55206.00 bytes/sec

total size is 44867 speedup is 1.63

我们可以看到,rsync将源目录下文件的时间戳也同步过来了。

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml

-r--r--r-- 1 root bin 949 Jun 18 2009 /var/opt/installation/inventory/sva.xml

-r--r--r-- 1 root bin 949 Jun 18 2009 /root/temp/sva.xml

3. 只同步一个文件

指定文件名称,只同步一个文件

$ rsync -v /var/lib/rpm/Pubkeys /root/temp/

Pubkeys

sent 42 bytes received 12380 bytes 3549.14 bytes/sec

total size is 12288 speedup is 0.99

4. 将本地文件同步到远程服务器

当同步到远程服务器时,我们需要指定用户名、远程服务器的IP地址和目标路径。格式为:username@remote_server_ip:path

$ rsync -avz /root/temp/ linuxprobe@192.168.200.10:/home/linuxprobe/temp/

Password:

building file list ... done

./

rpm/

rpm/Basenames

rpm/Conflictname

sent 15810261 bytes received 412 bytes 2432411.23 bytes/sec

total size is 45305958 speedup is 2.87

5. 将远程文件同步到本地服务器

$ rsync -avz linuxprobe@192.168.200.10:/var/lib/rpm /root/temp

Password:

receiving file list ... done

rpm/

rpm/Basenames

.

sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec

total size is 45305958 speedup is 2.87

6. 指定使用某一shell同步

远程同步时,Rsync可以指定使用某一shell进行安全传输。如:使用rsync –e ssh选择ssh进行安全连接。

$ rsync -avz -e ssh linuxprobe@192.168.200.10:/var/lib/rpm /root/temp

Password:

receiving file list ... done

rpm/

rpm/Basenames

sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec

total size is 45305958 speedup is 2.87

7. 不覆盖目标位置已改变的文件

如果目标位置的文件已被修改,而我们不希望旧文件覆盖它时,可以使用-u选项。下面例子中,目标位置的文件Basenames已经被修改,使用-u 选项是它不被旧文件覆盖。

$ ls -l /root/temp/Basenames

total 39088

-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames

$ rsync -avzu linuxprobe@192.168.200.10:/var/lib/rpm /root/temp

Password:

receiving file list ... done

rpm/

sent 122 bytes received 505 bytes 114.00 bytes/sec

total size is 45305958 speedup is 72258.31

$ ls -lrt

total 39088

-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames

8. 只同步目录树结构(不包括文件)

使用rsync - d选项只将目录树从源位置同步至目标位置。下面的示例中,以递归方式只同步目录树而不同步目录中的文件。

$ rsync -v -d linuxprobe@192.168.200.10:/var/lib/ .

Password:

receiving file list ... done

logrotate.status

CAM/

YaST2/

acpi/

sent 240 bytes received 1830 bytes 318.46 bytes/sec

total size is 956 speedup is 0.46

9. 查看rsync进度

使用rsync –progress选项可以查看rsync进度,如多少文件已经被拷贝,完成率是多少等

$ rsync -avz --progress linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/

Password:

receiving file list ...

19 files to consider

./

Basenames

5357568 100% 14.98MB/s 0:00:00 (xfer#1, to-check=17/19)

Conflictname

12288 100% 35.09kB/s 0:00:00 (xfer#2, to-check=16/19)

.

.

.

sent 406 bytes received 15810211 bytes 2108082.27 bytes/sec

total size is 45305958 speedup is 2.87

10. 删除目标位置创建的文件

若我们希望rsync时删除在源位置不存在而在目标位置存在的文件,可以使用-delete选项。

此例中,我们在目标位置创建了一个新文件名为new-file.txt.,在同步过程中,-delete选项删除了new-file.txt文件

# Source and target are in sync. Now creating new file at the target.

$ > new-file.txt

$ rsync -avz --delete linuxprobe@192.168.200.10:/var/lib/rpm/ .

Password:

receiving file list ... done

deleting new-file.txt

./

sent 26 bytes received 390 bytes 48.94 bytes/sec

total size is 45305958 speedup is 108908.55

11. 在目标位置不创建新文件

使用-existing选项使得在同步时只同步目标位置存在的文件,而不创建新文件。

#在源位置创建新文件new-file.txt

[/var/lib/rpm ]$ > new-file.txt

#同步目录

$ rsync -avz --existing root@192.168.1.2:/var/lib/rpm/ .

root@192.168.1.2's password:

receiving file list ... done

./

sent 26 bytes received 419 bytes 46.84 bytes/sec

total size is 88551424 speedup is 198991.96

12.查看源和目标的不同文件或目录

源位置:

$ ls -l /var/lib/rpm

-rw-r--r-- 1 root root 5357568 2010-06-24 08:57 Basenames

-rw-r--r-- 1 root root 12288 2008-05-28 22:03 Conflictname

-rw-r--r-- 1 root root 1179648 2010-06-24 08:57 Dirnames

目标位置:

$ ls -l /root/temp

-rw-r--r-- 1 root root 12288 May 28 2008 Conflictname

-rw-r--r-- 1 bin bin 1179648 Jun 24 05:27 Dirnames

-rw-r--r-- 1 root root 0 Sep 3 06:39 Basenames

源和目标之间有两个不同之处:1. 文件Dirnames属主和属组不同 2. 文件Basenames的大小不同

使用-i选项来显示不同之处,如下所示

$ rsync -avzi linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/

Password:

receiving file list ... done

>f.st.... Basenames

.f....og. Dirnames

sent 48 bytes received 2182544 bytes 291012.27 bytes/sec

total size is 45305958 speedup is 20.76

In the output it displays some 9 letters in front of the file name or directory name indicating the changes.

可以看到,在文件名或目录名前有9个字符来代表不同之处。此例中,Basenames和Dirnames前的字符代表含义如下:

> 代表文件已被传输到本地主机。

f:代表这是个文件

s:代表文件大小发生变化

t:代表时间戳发生变化

o:属主发生变化

g:属组发生变化

13. 在传输时指定包括或排除某些文件

只传输’P’开头的文件或目录(使用rsync include),不传输其他任何文件(使用rsync exclude)

$ rsync -avz --include 'P*' --exclude '*' linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/

Password:

receiving file list ... done

./

Packages

Providename

Provideversion

Pubkeys

sent 129 bytes received 10286798 bytes 2285983.78 bytes/sec

total size is 32768000 speedup is 3.19

14. 不传输大文件

使用rsync –max-size选项后,rsync将不传输大于指定大小的文件

$ rsync -avz --max-size='100K' linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/

Password:

receiving file list ... done

./

Conflictname

Group

Installtid

Name

Sha1header

Sigmd5

Triggername

sent 252 bytes received 123081 bytes 18974.31 bytes/sec

total size is 45305958 speedup is 367.35

15. 传输整个文件

rsync的主要特征之一是它只传输改变的块到目标位置,而不是传输整个文件。如果网络带宽对你不是问题(CPU有),您可以使用-w选项来传输整个文件。它会加速rsync过程,因为它不用在源和目标位置执行校验和。

# rsync -avzW linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp

Password:

receiving file list ... done

./

Basenames

Conflictname

Dirnames

Filemd5s

Group

Installtid

Name

sent 406 bytes received 15810211 bytes 2874657.64 bytes/sec

total size is 45305958 speedup is 2.87

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rsync是一个用于文件同步的工具,可以在本地和远程服务器之间进行文件的复制和同步。而inotify是Linux系统中的一个文件系统事件监控框架,可以实时监控文件系统中的事件,比如文件的修改、删除、创建等。通过结合rsync和inotify,可以实现文件的自动同步功能。 在给出的引用\[1\]中,是一个使用rsync和inotify实现自动同步的脚本示例。脚本中定义了一些变量,包括源路径、日志文件、rsync服务器的地址、用户名、密码等。然后通过inotifywait命令监控源路径下的文件系统事件,并在事件发生时使用rsync命令将文件同步到远程服务器。 引用\[2\]提到了rsync的其他功能,包括双向同步和使用sersync2实时同步多个远程服务器。同时还提到了inotify作为高效实时的Linux文件系统事件监控框架。 引用\[3\]是修改rsync配置文件的示例,将disable选项改为no,表示启用rsync服务器。 综上所述,通过使用rsync和inotify,可以实现Linux系统中的文件同步和实时监控功能。 #### 引用[.reference_title] - *1* *2* *3* [Linux下同步工具inotify+rsync使用详解](https://blog.csdn.net/wuzhongchao/article/details/42364039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值