在数字化时代的今天,随着个人拥有的数据量急剧增加,对其中的重要数据进行备份以保证其安全性、正确性变得越来越重要。同时,由于在公司、实验室、家里、外出等不同环境下往往使用不同的电脑设备(如台式机、笔记本)与存储介质(如移动硬盘、U盘),在多台电脑以及存储介质之间保持数据的同步和一致也成为越来越频繁且麻烦的操作,以至于靠人工辩别与手动操作变得不再可能。因此,能够有一款工具软件能够自动、高效、稳定地完成上述数据备份和同步操作就变得极其必要。以往,我曾使用过Total Commander自带的同步功能以及微软推出的小工具SyncToy,虽然图形化的操作很容易上手,但是性能差强人意。当数据量达到1TB以上时,就会出现程序卡死的情况。因此,它们无法满足我目前的需求。而GNU/Linux下著名的rsync命令以其高性能、可靠性、灵活性,则完全可以胜任这样的工作,而且即使数据量再大也毫无问题。在同步的过程中,rsync通过比较文件内容,仅传输差异部分,因而速度很快。同时,rsync在传输文件时始终都做md5校验,所以非常可靠安全,使用者不用担心文件内容出错的问题。再者,rsync既可以通过不同的外设接口将数据同步至连接到本机的移动存储设备上,也可以经由网络以SSH的方式与其他电脑进行数据交换,因而同步方式非常灵活。接下来,本文对rsync的常用命令行参数与过滤器予以简要介绍。更细节的问题则可以参考使用手册。
可以在配置文件中或者直接在命令行上定义一组文件名匹配过滤规则,用于包含和排除需要同步的文件。对于每一个待同步的文件,第一个被匹配的规则生效。如果没有遇到任何匹配,则该文件被默认包含在同步操作中。
RULE [PATTERN_OR_FILENAME]
RULE,MODIFIERS [PATTERN_OR_FILENAME]
exclude, - specifies an exclude pattern.
include, + specifies an include pattern.
merge, . specifies a merge-file to read for more rules.
dir-merge, : specifies a per-directory merge-file.
hide, H specifies a pattern for hiding files from the transfer.
show, S files that match the pattern are not hidden.
protect, P specifies a pattern for protecting files from deletion.
risk, R files that match the pattern are not protected.
clear, ! clears the current include/exclude list (takes no arg)
#用于注释行。之后在rsync命令行上使用--exclude-from或--include-from选项,加载配置文件。
--include或--exclude选项只能定义一条规则,但是可以定义多个。模式不包含任何前缀:可以匹配被遍历文件树的任何位置。
模式以/开头:从待传输文件树的根目录开始匹配。
模式以/结尾:仅匹配文件夹,而不匹配普通文件、符号链接或设备文件。
模式可以包含*、?、[通配符。
*可以匹配除了/之外的任何路径名。**可以匹配任何路径名,包括/。?可以匹配除了/之外的任何单个字符。[用于定义字符集,如[a-z]。/: 用于指定使用操作系统绝对路径匹配。!: 当模式不匹配时规则生效,即对原规则逻辑取反。如果父文件夹未被包括在同步文件列表内的话,其所包含的文件与子文件夹也不会被同步。
当模式字符串中用到了通配符时,若需要写出某个通配符所代表的原字符,便需要使用反斜线转义。如果在模式字符串中只用到通配符的原义字符,则无需反斜线转义。
原文:https://www.cnblogs.com/quantumman/p/10461705.html