rsync 是一个非常强大的文件同步工具,可以用于本地和远程文件之间的增量传输。它支持多种文件系统操作,包括复制、删除和移动文件等,并且可以通过压缩和加密来提高传输效率和安全性。
安装
在大多数 Linux 发行版中,rsync 可以通过包管理器轻松安装。
Debian/Ubuntu
sudo apt-get install rsync
CentOS/RHEL
sudo yum install rsync
Fedora
sudo dnf install rsync
Arch Linux
sudo pacman -S rsync
基本用法
rsync 的基本命令格式如下:
rsync [选项] 源 目标
示例:本地文件同步
将目录 /home/user/source
同步到 /home/user/destination
:
rsync -av /home/user/source/ /home/user/destination/
示例:从远程服务器同步文件
将远程服务器 user@remote_host:/path/to/remote_dir
同步到本地 /home/user/local_dir
:
rsync -av user@remote_host:/path/to/remote_dir/ /home/user/local_dir/
示例:从本地同步文件到远程服务器
将本地 /home/user/local_dir
同步到远程服务器 user@remote_host:/path/to/remote_dir
:
rsync -av /home/user/local_dir/ user@remote_host:/path/to/remote_dir/
选项详解
rsync 提供了丰富的选项来控制文件的传输行为。以下是一些常用的选项及其功能说明。
-a, --archive
归档模式,表示递归传输并保持文件属性,相当于同时设置了 -rlptgoD
选项。
-r, --recursive
:递归处理子目录。-l, --links
:保留符号链接。-p, --perms
:保留文件权限。-t, --times
:保留文件修改时间。-g, --group
:保留文件所属组。-o, --owner
:保留文件所有者。-D
:保留设备文件和特殊文件。
-v, --verbose
详细模式,显示传输过程中的详细信息。
-z, --compress
在传输过程中对数据进行压缩。
-P
等于 --partial --progress
,允许断点续传并显示传输进度。
-u, --update
仅更新比目标文件新的源文件。
-b, --backup
创建备份文件,备份文件默认保存在源文件同名目录下的 .bak
文件中。
--delete
删除目标目录中源目录不存在的文件。
--exclude
排除指定的文件或目录,例如:
rsync -av --exclude='*.log' /home/user/source/ /home/user/destination/
以上命令会同步 /home/user/source
到 /home/user/destination
,但不会同步任何扩展名为 .log
的文件。
--include
仅包含指定的文件或目录,通常与 --exclude
结合使用。
--dry-run 或 -n
模拟运行,不实际执行文件传输,仅显示将要执行的操作。
--bwlimit
限制传输速度,单位为 KB/s。例如:
rsync -av --bwlimit=500 /home/user/source/ /home/user/destination/
以上命令将传输速率限制为 500 KB/s。
高级用法
使用 SSH 进行安全传输
通过 -e
选项指定使用 SSH 进行传输,确保数据的安全性:
rsync -avz -e ssh /home/user/source/ user@remote_host:/path/to/remote_dir/
同步整个文件系统
有时需要同步整个文件系统,可以使用 --one-file-system
选项防止跨文件系统挂载点同步:
rsync -avz --one-file-system / /path/to/destination/
使用自定义压缩算法
rsync 支持多种压缩算法,可以通过 --compress-choice
选项指定:
rsync -avz --compress-choice=lz4 /home/user/source/ /home/user/destination/
并行传输
rsync 支持多线程传输,通过 --bwlimit
和 --progress
选项配合使用可以实现更高效的传输:
rsync -avz --bwlimit=1000 --progress /home/user/source/ /home/user/destination/
使用 Rsync API
rsync 还提供了编程接口,可以通过 C、Python 等语言调用 rsync 库实现自动化同步任务。
使用 Rsyncd.conf 配置
Rsync 可以配置为守护进程,通过 rsyncd.conf
文件进行全局配置,适用于需要频繁同步的情况:
[module_name] path = /path/to/module read only = yes list = yes auth users = user1,user2 secrets file = /etc/rsyncd.secrets
总结
rsync 是一个功能强大且灵活的文件同步工具,适用于各种场景下的文件传输需求。通过合理利用其丰富的选项和功能,可以大大提高文件传输的效率和安全性。希望本章的内容能帮助你更好地掌握 rsync 的使用方法。