使用 rsync 进行高效文件同步 🚀
1. 什么是 rsync?💻
rsync
是一个强大的命令行工具,用于高效地在本地或远程系统之间同步文件和目录。相比传统的文件复制方法,rsync
通过仅传输差异部分来节省带宽,速度更快,也能节约时间。
2. rsync 的特点 📝
- 增量传输:
rsync
只会传输源和目标文件之间的差异部分,大大提高传输效率。 - 支持本地与远程同步:不仅可以在本地文件系统之间同步,还可以通过 SSH 连接远程服务器进行文件同步。
- 保留文件属性:可以保留文件的权限、时间戳等属性,确保源和目标文件一致。
- 支持压缩:可以通过
-z
参数启用压缩,进一步节省带宽。
3. 安装 rsync 🛠️
在大多数 Linux 发行版中,rsync
默认已安装。如果未安装,可以通过以下命令进行安装:
-
Debian/Ubuntu:
sudo apt update
sudo apt install rsync -
CentOS/RHEL:
sudo yum install rsync
-
Fedora:
sudo dnf install rsync
使用 rsync
与远程服务器同步文件,需要本地和服务器同时安装 rsync
命令。
4. rsync 的基本语法 🔧
rsync
的基本语法如下:
rsync [选项] 源路径 目标路径
其中,源路径可以是本地路径或远程路径,目标路径同样可以是本地或远程路径。
4.1 基本用法示例
-
本地文件复制:
将本地的
folder1
目录复制到folder2
:rsync -av folder1/ folder2/
这条命令会递归地将
folder1
中的所有文件和子目录复制到folder2
,并保持文件的属性(-a
表示归档模式,保留符号链接、文件权限、时间戳等)。 -
远程文件同步:
从本地机器将文件同步到远程服务器:
rsync -av /local/path/ user@remote:/remote/path/
同样,
user@remote:/remote/path/
是远程服务器的路径,user
是用户名,remote
是服务器地址。 -
从远程同步到本地:
将远程文件同步到本地:
rsync -av user@remote:/remote/path/ /local/path/
5. 常见选项介绍 💡
5.1 -a
:归档模式
-a
选项是 rsync
中最常用的选项之一,它启用归档模式,表示以递归的方式复制文件,并保留文件的权限、时间戳、符号链接等属性。基本上,它等同于 -rlptgoD
的组合。
5.2 -v
:详细模式
-v
选项启用详细模式,显示正在传输的文件名和进度信息。结合 -a
一起使用,能够提供更详细的输出。
5.3 -z
:启用压缩
启用压缩功能,适用于网络带宽较慢的情况:
rsync -avz /local/path/ user@remote:/remote/path/
5.4 --delete
:删除目标目录中多余的文件
默认情况下,rsync 不会同步删除动作。除非使用--delete参数,这将删除只存在于目标目录、不存在于源目录的文件。
rsync -av --delete /local/path/ user@remote:/remote/path/
5.5 -n
:试运行(模拟)
-n
选项用于模拟运行,不会实际执行任何同步操作。这可以帮助你检查将要执行的操作:
rsync -avz -n /local/path/ user@remote:/remote/path/
6. 远程同步和 SSH 配置 🔐
-e ssh
指定 rsync
使用 SSH 来进行远程同步。不过现在 rsync
默认使用 SSH 协议进行传输了,可以不写 -e
参数。
rsync -av /local/path/ user@remote:/remote/path/
指定 SSH 的参数就必须 -e
参数
rsync -av -e 'ssh -p 2234' /local/path/ user@remote:/remote/path/