rsync命令详解
rsync命令是Linux和其他Unix-like系统上一个非常强大的命令行工具,主要用于数据同步和文件传输。它的名字是"remote sync"的缩写,但不仅限于远程同步,也支持本地文件和目录之间的同步。rsync的主要优势在于其高效的增量传输方式,即只传输源和目标之间发生变化的文件块,而不是整个文件。以下是rsync命令的详细解释:
一、基本功能
- 数据同步:在本地或远程主机之间同步文件和目录。
- 增量传输:只传输变化的文件块,减少数据传输量。
- 多种选项:提供丰富的选项来满足不同的同步需求。
二、常用选项
选项 | 说明 |
---|---|
-a, --archive | 归档模式,递归并保留对象属性,等同于-rlptgoD。 |
-v, --verbose | 显示同步过程的详细(verbose)信息。 |
-r, --recursive | 递归模式,包含目录及子目录中所有文件。 |
-l, --links | 对于软链接文件仍然复制为软链接文件。 |
-p, --perms | 保留文件的权限标记。 |
-t, --times | 保留文件的时间标记。 |
-g, --group | 保留文件的属组标记(仅超级用户使用)。 |
-o, --owner | 保留文件的属主标记(仅超级用户使用)。 |
-D | 保留设备文件及其他特殊文件。 |
-z, --compress | 在传输文件时进行压缩。 |
-H, --hard-links | 保留硬链接。 |
-A, --acls | 保留ACL属性(隐含--perms)。 |
--delete | 删除目标位置有而原始位置没有的文件。 |
--exclude='pattern' | 排除与指定模式匹配的文件或文件夹。 |
--exclude-from='file' | 从指定文件中读取排除模式,并进行同步。 |
--include='pattern' | 只包括与指定模式匹配的文件或文件夹。 |
--include-from='file' | 从指定文件中读取包含模式,并进行同步。 |
--progress | 显示同步进度和速度信息。 |
--dry-run | 模拟同步操作,显示将要发生的更改,但不实际执行。 |
--bwlimit=KBPS | 限制带宽使用率,以KB/s为单位。 |
三、使用方法
rsync的使用方法非常灵活,可以通过多种方式进行文件同步,包括通过远程shell或rsync守护进程。基本的使用格式如下:
- 本地同步:
rsync [OPTION]... SRC... [DEST]
- 通过远程shell同步(拉取):
rsync [OPTION]... [USER@]HOST:SRC... [DEST]
- 通过远程shell同步(推送):
rsync [OPTION]... SRC... [USER@]HOST:DEST
- 通过rsync守护进程同步(拉取):
rsync [OPTION]... [USER@]HOST::SRC... [DEST]
- 通过rsync守护进程同步(推送):
rsync [OPTION]... SRC... [USER@]HOST::DEST
四、应用实例
-
将本地目录复制到远程主机:
bash复制代码rsync -avz /local/dir/ user@remote:/remote/dir/ -
从远程主机复制目录到本地:
bash复制代码rsync -avz user@remote:/remote/dir/ /local/dir/ -
使用SSH协议进行远程复制(等同于上述示例,因为rsync默认使用SSH):
bash复制代码rsync -avz -e ssh /local/dir/ user@remote:/remote/dir/ -
仅列出远程主机上的文件而不复制:
bash复制代码rsync -avzn user@remote:/remote/dir/ /local/dir/ -
使用rsync进行增量备份:
bash复制代码rsync -avz --backup --backup-dir=/backup/dir/ /source/dir/ /destination/dir/ -
限制传输带宽:
bash复制代码rsync -avz --bwlimit=500 /source/dir/ /destination/dir/
测试: 同步本地test目录到远程服务器192.168.1.200 的test目录
rsync -avhpW --no-compress -P4 --progress /test/ root@192.168.1.200:/test/
时间是个伟大的作者,必将给出完美的答案。