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

相关推荐
还是奇怪1 小时前
Linux - 安全排查 2
linux·运维·安全
牛奶咖啡131 小时前
Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式
运维·服务器·软件安装·linux云计算·scp文件远程传输·vi文件编辑·设置yum的阿里云源
weixin_437398211 小时前
转Go学习笔记(2)进阶
服务器·笔记·后端·学习·架构·golang
难受啊马飞2.01 小时前
如何判断 AI 将优先自动化哪些任务?
运维·人工智能·ai·语言模型·程序员·大模型·大模型学习
会又不会1 小时前
Jenkins-Email Extension 插件插件
运维·jenkins
电脑能手2 小时前
[保姆级教程] 解决不同局域网电脑无法SSH的问题
运维·ssh·电脑
tan77º3 小时前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
czhc11400756633 小时前
Linux 76 rsync
linux·运维·python
szxinmai主板定制专家4 小时前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
你不知道我是谁?4 小时前
负载均衡--四层、七层负载均衡的区别
运维·服务器·负载均衡