rsync 命令的作用与用法
rsync
是 Linux 系统中常用的文件同步和传输工具。它可以高效地复制和同步文件及目录,支持远程和本地之间的文件传输。rsync
使用增量同步方式,只传输源文件中与目标文件不同的数据,从而提高传输效率。
主要功能
- 同步文件和目录:将文件和目录从一个位置复制到另一个位置,包括本地和远程之间的同步。
- 增量备份:仅传输变化的数据,减少带宽和时间消耗。
- 保持文件属性:可以保持文件的权限、时间戳、符号链接等属性。
基本用法
rsync
的基本语法如下:
bash
rsync [选项] 源路径 目标路径
例如,将目录 source_dir
同步到 destination_dir
:
bash
rsync -av source_dir/ destination_dir/
在这个命令中:
-a
:归档模式,保留文件属性,并递归同步。-v
:显示详细输出信息。source_dir/
:表示同步目录下的所有内容(注意尾部斜杠的作用)。destination_dir/
:目标目录。
常用选项
-a, --archive
:归档模式,相当于-rlptgoD
,保留文件的权限、符号链接、时间戳等属性。-v, --verbose
:显示详细的传输信息。-z, --compress
:在传输过程中压缩数据,减少带宽占用。-r, --recursive
:递归同步目录及子目录。-P
:显示进度,并可以断点续传,等同于--progress --partial
。--delete
:在目标路径中删除源路径不存在的文件,使目标与源保持一致。-e ssh
:使用 SSH 作为远程传输协议,这对于安全的远程同步非常有用。
使用实例
1. 本地同步文件
bash
rsync -av /home/user/documents/ /backup/documents/
将 /home/user/documents/
中的内容同步到 /backup/documents/
。
2. 通过 SSH 远程同步
bash
rsync -av -e ssh /home/user/documents/ user@remote_host:/backup/documents/
将本地 /home/user/documents/
同步到远程服务器 remote_host
的 /backup/documents/
目录。
3. 同步并删除目标中多余的文件
bash
rsync -av --delete /home/user/documents/ /backup/documents/
使 /backup/documents/
与 /home/user/documents/
完全一致,删除 /backup/documents/
中多余的文件。
4. 仅同步更改的文件
bash
rsync -av --ignore-existing /home/user/documents/ /backup/documents/
只同步在目标路径中不存在的文件。
使用自定义 SSH 端口
如果远程主机的 SSH 端口不是默认的 22,可以通过 -e
选项指定端口号。例如,远程端口是 2222
:
bash
rsync -av -e 'ssh -p 2222' /home/user/documents/ user@remote_host:/backup/documents/
使用 SSH Token 连接
如果使用 SSH Token 进行连接,可以通过 -e
选项指定使用 Token 文件。例如,Token 文件路径为 ~/.ssh/id_token
:
bash
rsync -av -e 'ssh -i ~/.ssh/id_token' /home/user/documents/ user@remote_host:/backup/documents/
从远程主机同步文件到本地
如果需要将远程主机的目录同步到本地,使用如下命令:
bash
rsync -avz user@remote_host:/远程路径/ 本地路径/
例如,将远程服务器 remote_host
上的 /home/user/documents/
目录同步到本地的 /backup/documents/
:
bash
rsync -avz user@remote_host:/home/user/documents/ /backup/documents/
将本地文件同步到远程主机
如果需要将本地目录同步到远程主机,可以使用如下命令:
bash
rsync -avz 本地路径/ user@remote_host:/远程路径/
例如,将本地目录 /home/user/documents/
同步到远程服务器 remote_host
的 /backup/documents/
目录:
bash
rsync -avz /home/user/documents/ user@remote_host:/backup/documents/
注意事项
- 权限问题 :可能需要使用
sudo
或者以合适的权限来执行命令,以确保文件的所有权和权限能够正确同步。 - 尾部斜杠 :注意源路径和目标路径的尾部斜杠是否存在。如果在源路径结尾加上斜杠(如
/home/user/documents/
),表示只同步目录内的内容,而不包含该目录本身;不加斜杠则会包含整个目录一起同步。
这样使用 rsync
就可以方便地同步远程主机上的文件或目录到本地,以及将本地文件或目录同步到远程。