Linux基础 -- 文件同步之 rsync 命令的使用

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 就可以方便地同步远程主机上的文件或目录到本地,以及将本地文件或目录同步到远程。

相关推荐
小羊Linux客栈2 小时前
自动化:批量文件重命名
运维·人工智能·python·自动化·游戏程序
伤不起bb3 小时前
MySQL 高可用
linux·运维·数据库·mysql·安全·高可用
whgjjim5 小时前
docker迅雷自定义端口号、登录用户名密码
运维·docker·容器
tmacfrank6 小时前
网络编程中的直接内存与零拷贝
java·linux·网络
瀚高PG实验室8 小时前
连接指定数据库时提示not currently accepting connections
运维·数据库
QQ2740287568 小时前
Soundness Gitpod 部署教程
linux·运维·服务器·前端·chrome·web3
淡忘_cx8 小时前
【frp XTCP 穿透配置教程
运维
qwfys2009 小时前
How to configure Linux mint desktop
linux·desktop·configure·mint
南方以南_9 小时前
Ubuntu操作合集
linux·运维·ubuntu
冼紫菜9 小时前
[特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)
java·linux·服务器·后端·centos