rsync常用参数及rsync -avP中的P的含义
rsync
是一款功能强大的远程数据同步工具,支持众多参数,以下是一些常用参数及其意义介绍:
基础同步相关参数
- -a, –archive:归档模式,表示以递归方式传输文件,并尽可能保持文件的所有属性(如权限、所有者、时间戳等)不变,等同于同时使用了
-rlptgoD
这些参数,是日常进行备份等操作时常用的参数组合简化形式,例如:rsync -a /source/dir /destination/dir
可以将源目录完整地同步到目标目录且保留诸多属性。 - -r, –recursive:递归同步,用于处理目录及其子目录下的所有文件,确保整个目录树结构都能被同步,像
rsync -r /home/user/documents /backup/documents
就能把documents
目录及其子目录中的文件全部同步到备份位置。 - -v, –verbose:详细模式,输出详细的同步过程信息,展示正在同步的文件、传输进度等内容,方便用户了解同步的具体情况,比如
rsync -v /source /destination
在同步时会详细列出每个文件的同步情况。
权限及用户相关参数
- -p, –perms:保持文件权限,让目标文件的权限与源文件一致,对于需要精准还原文件权限设置的场景很重要,例如在服务器之间同步配置文件时,可确保配置文件权限正确,如
rsync -p /etc/nginx/conf.d /backup/nginx/conf.d
能保障nginx
配置文件权限同步准确。 - -o, –owner:保持文件所有者信息,使得目标文件的所有者与源文件相同,常用于在权限管理较为严格且有特定用户归属要求的系统间同步文件,例如
rsync -o /data/user_files /backup/user_files
可维持文件所有者属性。 - -g, –group:保持文件所属组信息,即让目标文件所属组与源文件保持一致,这在多用户、多组协作且需准确同步文件组归属的场景下会用到,像
rsync -g /shared/docs /backup/docs
可以使文档文件的所属组属性同步。
时间及其他属性相关参数
- -t, –times:保持文件的时间戳,目标文件的修改时间等时间属性会和源文件一样,利于后续根据文件时间来判断文件更新情况等,例如
rsync -t /source/project /destination/project
使得同步后的项目文件时间戳不变。 - -D:等同于
--devices --specials
,可同步设备文件和特殊文件(如命名管道、套接字等),不过在普通的文件同步场景中较少用到,更多是在涉及系统底层特殊文件备份等特定需求时使用。
筛选及排除相关参数
- –exclude=PATTERN:排除指定模式的文件或目录不进行同步,比如
--exclude='*.log'
会排除所有以.log
为后缀的文件,常用于不想同步一些临时文件、日志文件等情况,像rsync -a --exclude='*.tmp' /source /destination
就不会同步源目录中的临时文件。 - –include=PATTERN:与排除相对,指定要包含的文件或目录模式,配合排除参数可以更精细地控制同步内容,例如
--include='*.txt' --exclude='*'
表示只同步.txt
文件,其他文件都不进行同步。
远程同步相关参数
- -e, –rsh=COMMAND:指定用于远程 shell 的命令,常用于指定使用非默认的远程连接方式进行远程同步,例如
rsync -e 'ssh -p 2222' user@remote:/source /destination
表示通过指定端口为2222
的ssh
连接远程主机来进行同步。 - –port=PORT:明确指定远程连接的端口号,在远程服务器的
rsync
服务端口不是默认端口时使用,比如rsync --port=873 user@remote:/source /destination
是在端口873
上进行远程同步操作。
增量及其他特性相关参数
- -u, –update:只更新目标位置比源位置旧的文件,也就是进行增量更新,避免重复传输已经同步过且未变化的文件,能节省时间和网络带宽,例如
rsync -au /source/data /destination/data
仅会更新目标处较旧的数据文件。 - -n, –dry-run:模拟运行,并不真正执行同步操作,只是显示如果执行同步会发生的情况,方便提前查看同步计划是否符合预期,例如
rsync -anv /source /destination
会详细列出如果实际同步时的文件传输情况,但不会真正传输文件。
传输控制相关参数
- -z, –compress:在传输过程中对数据进行压缩,可有效减少网络传输的数据量,提高传输效率,特别是在网络带宽有限或者同步大量数据时比较有用,如
rsync -az /source /destination
会对传输的文件进行压缩处理。 - –bwlimit=RATE:限制传输带宽,参数值
RATE
以 Kbps 为单位,能防止rsync
同步占用过多网络带宽,影响其他网络应用,例如rsync --bwlimit=100 /source /destination
会将传输带宽限制在100
Kbps。
rsync -avP中的P有什么含义
在 rsync
命令中,-avP
是常用的参数组合,其中的 P
是一种简写形式,它等同于 --partial --progress
,具体含义如下:
--partial
(部分传输)
- 当文件传输过程中因某些原因(比如网络中断、进程意外终止等)未能完整传输时,下次再使用
rsync
进行同步该文件时,--partial
参数会让rsync
从上次中断的位置继续传输,而不是重新从头开始传输整个文件。这对于传输大文件或者网络不太稳定的情况非常有用,可以节省大量时间,避免重复传输已经传过的部分内容,提高同步效率。
例如,正在通过 rsync
传输一个很大的视频文件,传输到一半时网络出现故障导致传输中断,后续再次执行相同的 rsync
命令(带上 --partial
参数,也就是使用 -P
形式)时,它就会接着上次中断的地方继续传输剩下的部分,确保文件最终能完整传输到目标位置。
--progress
(显示进度)
- 这个参数的作用是在文件传输过程中实时显示每个文件的传输进度信息,包括已经传输的数据量、传输速度、预计剩余传输时间等内容。这样使用者可以直观地了解文件传输的实时情况,方便把握同步的整体进度以及判断传输是否正常进行。
比如,使用 rsync -avP
同步一个包含多个文件的目录时,命令行界面会针对每个正在传输的文件分别显示类似“10%, 200 KB/s, eta 0:01:30”(表示已传输 10%,传输速度为每秒 200KB,预计剩余时间 1 分 30 秒)这样的进度提示,让人能清楚知晓每个文件传输的快慢以及整体大概还需要多久能完成同步操作。
所以,在 rsync
命令里使用 -P
参数(即 --partial --progress
),既能实现断点续传功能,又能实时查看传输进度,是日常进行文件同步操作时很实用的一个参数组合用法。
本文链接:https://www.orcy.net.cn/4054.html,转载请附上原文出处链接
发表评论