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

相关推荐
qq_4798754310 小时前
X-Macros(1)
linux·服务器·windows
笨笨聊运维11 小时前
CentOS官方不维护版本,配置python升级方法,无损版
linux·python·centos
ζั͡山 ั͡有扶苏 ั͡✾11 小时前
EFK 日志系统搭建完整教程
运维·jenkins·kibana·es·filebeat
jun_bai11 小时前
python写的文件备份网盘程序
运维·服务器·网络
Warren9812 小时前
Python自动化测试全栈面试
服务器·网络·数据库·mysql·ubuntu·面试·职场和发展
HIT_Weston12 小时前
39、【Ubuntu】【远程开发】拉出内网 Web 服务:构建静态网页(二)
linux·前端·ubuntu
欢喜躲在眉梢里12 小时前
CANN 异构计算架构实操指南:从环境部署到 AI 任务加速全流程
运维·服务器·人工智能·ai·架构·计算
weixin_5377658012 小时前
【容器技术】虚拟化原理与Docker详解
运维·docker·容器
胡斌附体13 小时前
docker健康检查使用
运维·docker·依赖·健康检查
云飞云共享云桌面13 小时前
无需配置传统电脑——智能装备工厂10个SolidWorks共享一台工作站
运维·服务器·前端·网络·算法·电脑