Linux Rsync 命令16 个实战示例小结

 更新时间:2025年08月04日 09:52:20   作者:企鹅侠客  
本文介绍rsync在Linux/Unix系统中的应用,涵盖远程与本地文件同步、备份及镜像功能,其主要优势包括差异传输、保留权限、支持SSH加密、增量备份和带宽控制,本文介绍Linux Rsync命令16个实战示例,感兴趣的朋友一起看看吧

Rsync(远程同步)是Linux/Unix系统中用于远程和本地复制及同步文件和目录的常用工具。

利用rsync命令,您可以轻松地在不同目录、硬盘和网络之间进行数据的远程和本地复制与同步,进行数据备份,以及在两台Linux系统间创建镜像。

这篇文章介绍了rsync命令的16个基本和进阶用法,帮助您在Linux系统上实现文件的远程和本地传输。执行rsync命令不需要root权限。

Rsync命令的好处

rsync 命令具有多项优点,例如:

  • 高效传输 - rsync 采用差异传输算法,仅传输源文件与目标文件之间的不同部分,大幅减少数据传输量,特别适合同步大文件或文件夹。
  • 远程同步 - rsync 支持通过SSH进行本地和远程文件传输,便于在本地和远程系统间同步文件或在多台设备间镜像文件夹。
  • 增量备份 - rsync 非常适合进行增量备份,因为它能够高效地创建和更新备份,只传输新增或修改过的文件。
  • 保留权限 - rsync 能够保持文件的多种属性,包括权限、所有者、时间戳和符号链接,确保复制的文件在目标位置保持原样。
  • 控制带宽 - rsync 允许限制文件传输时的带宽使用,它在数据传输过程中使用压缩和解压缩技术。
  • 速度更快 - rsync 在传输文件时速度通常比scp(安全复制)更快,特别是在同步大型目录或处理已经部分传输或已存在于目标位置的文件时。

Rsync命令的语法

rsync命令遵循如下语法:

# rsync [OPTIONS] SOURCE DESTINATION

以下是rsync命令中不同组成部分和选项的说明:

  • -v – 输出详细信息,展示文件传输的详细过程。
  • -r – 递归复制数据(但此过程中不会保留文件的时间戳和权限)。
  • -a – 归档模式,可以递归复制文件,并保留符号链接、文件权限、用户和组的所有者信息以及时间戳。
  • -z – 传输时压缩文件,以减少网络流量。
  • -h – 易于理解的格式,以更易于理解的方式显示数字。
  • -P – 传输时显示进度条。
  • SOURCE – 指定要传输的源文件或目录,可以是本地或远程路径。
  • DESTINATION – 指定文件或目录复制的目标路径,可以是本地或远程路径。

在Linux系统中安装Rsync

我们可以根据您的 Linux 发行版借助以下软件包管理器安装 rsync 软件包。

$ sudo apt install rsync         [On Debian, Ubuntu and Mint]
$ sudo yum install rsync         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
$ sudo emerge -a sys-apps/rsync  [On Gentoo Linux]
$ sudo apk add rsync            [On Alpine Linux]
$ sudo pacman -S rsync           [On Arch Linux]
$ sudo zypper install rsync      [On OpenSUSE]

1. 本地文件复制/同步

若要在同一台计算机内复制或同步文件,您可以执行如下命令,将单个文件从一个目录移动到另一个目录。

例如,假设我们需要将名为 backup.tar 的文件复制或同步到本地的 /tmp/backups/ 目录下。

[root@tecmint]# rsync -zvh backup.tar.gz /tmp/backups/
created directory /tmp/backups
backup.tar.gz
sent 224.54K bytes  received 70 bytes  449.21K bytes/sec
total size is 224.40K  speedup is 1.00

在上面的示例中,您可以看到,如果目标尚不存在,rsync 将自动为目标创建一个目录。

2. 本地复制/同步目录

以下命令将把所有文件从一个目录传输或同步到同一台机器上的另一个目录。

在此示例中,/root/rpmpkgs 包含一些 rpm 软件包文件,并且您希望将该目录复制到 /tmp/backups/ 文件夹中。

[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 3.47M bytes  received 96 bytes  2.32M bytes/sec
total size is 3.74M  speedup is 1.08

3. 将目录从本地复制到远程服务器

要将目录从本地服务器复制到远程服务器,可以使用以下命令,该命令会将目录从本地计算机同步到远程计算机。

例如,如果本地计算机中有一个文件夹“rpmpkgs”,其中包含一些 RPM 软件包,并且您希望将该本地目录的内容发送到远程服务器,则可以使用以下命令。

# rsync -avzh /root/rpmpkgs root@192.168.0.141:/root/
The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts.
root@192.168.0.141's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 3.74M bytes  received 96 bytes  439.88K bytes/sec
total size is 3.74M  speedup is 1.00

4. 将目录从远程复制到本地服务器

此命令将帮助您将远程目录同步到本地目录。在此示例中,远程服务器上的目录 /root/rpmpkgs 被复制到本地计算机的 /tmp/myrpms 中。

# rsync -avzh root@192.168.0.141:/root/rpmpkgs /tmp/myrpms
root@192.168.0.141's password: 
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 104 bytes  received 3.49M bytes  997.68K bytes/sec
total size is 3.74M  speedup is 1.07

5. 通过 SSH 进行 Rsync

通过rsync,我们可以使用SSH(Secure Shell)进行数据传输,在传输数据时使用SSH协议您可以确保您的数据在加密的安全连接中传输,这样在传输过程中没有人可以读取您的数据通过互联网上的电线。

此外,当我们使用 rsync 时,我们需要提供用户/root 密码来完成该特定任务,因此使用 SSH 选项将以加密方式发送您的登录信息,以便您的密码安全。

要通过 SSH 使用 rsync,可以使用 -e 选项指定远程 shell 命令,通常是 ssh,如图所示。

# rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination

6. 使用 SSH 将文件从远程服务器复制到本地服务器

要将文件从远程服务器同步到本地服务器,您可以使用“-e”选项和您要使用的协议名称来指定 rsync 协议。

在此示例中,我们将使用带有“-e”选项的“ssh”并执行数据传输。

# rsync -avzhe ssh root@192.168.0.141:/root/anaconda-ks.cfg /tmp
root@192.168.0.141's password: 
receiving incremental file list
anaconda-ks.cfg
sent 43 bytes  received 1.10K bytes  325.43 bytes/sec
total size is 1.90K  speedup is 1.67

7. 使用 SSH 将文件从本地服务器复制到远程服务器

要使用 SSH 将文件从本地服务器同步到远程服务器,您可以利用以下命令,如下所示。

# rsync -avzhe ssh backup.tar.gz root@192.168.0.141:/backups/
root@192.168.0.141's password: 
sending incremental file list
created directory /backups
backup.tar.gz
sent 224.59K bytes  received 66 bytes  64.19K bytes/sec
total size is 224.40K  speedup is 1.00

8. 使用 Rsync 传输数据时显示进度

要显示将数据从一台计算机传输到另一台计算机时的进度,我们可以使用“–progress”选项,该选项显示文件以及完成传输的剩余时间。

# rsync -avzhe ssh --progress /root/rpmpkgs root@192.168.0.141:/root/rpmpkgs
root@192.168.0.141's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
          1.47M 100%   31.80MB/s    0:00:00 (xfr#1, to-chk=3/5)
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
        138.01K 100%    2.69MB/s    0:00:00 (xfr#2, to-chk=2/5)
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
          2.01M 100%   18.45MB/s    0:00:00 (xfr#3, to-chk=1/5)
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
        120.48K 100%    1.04MB/s    0:00:00 (xfr#4, to-chk=0/5)
sent 3.74M bytes  received 96 bytes  1.50M bytes/sec
total size is 3.74M  speedup is 1.00

到此这篇关于Linux Rsync 命令16 个实战示例小结的文章就介绍到这了,更多相关linux rsync命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell学习之printf命令格式化输出语句

    shell学习之printf命令格式化输出语句

    printf命令模仿C程序库(library)里的printf()库程序(library routine)。它几乎复制了该函数的所有功能。不过在Shell层级的版本上,会有些差异。下面这篇文章就给大家主要介绍了shell中printf命令格式化输出语句的相关资料,需要的朋友可以参考下。
    2017-01-01
  • Linux全网最全面常用命令整理(附实例)

    Linux全网最全面常用命令整理(附实例)

    这篇文章主要介绍了Linux命令,是目前最全面的集合,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • shell编程实现学生成绩管理系统

    shell编程实现学生成绩管理系统

    这篇文章主要为大家详细介绍了shell编程实现学生成绩管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 深入探究Linux shell的实现原理

    深入探究Linux shell的实现原理

    这篇文章主要介绍了Linux shell的实现原理,文中通过代码示例和图文介绍的非常详细,对大家探究Linux shell的实现原理有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • hbase shell基础和常用命令详解

    hbase shell基础和常用命令详解

    HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》
    2012-09-09
  • shell两个文件去重的多种姿势

    shell两个文件去重的多种姿势

    最近在利用shell帮公司优化挖掘关键词的流程,用shell替代了多个环节的操作,极大提高了工作效率。下面这篇文章就给大家分享了利用shell实现两个文件去重的多种姿势,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • shell中长命令的换行处理方法示例

    shell中长命令的换行处理方法示例

    这篇文章主要给大家介绍了关于shell中长命令的换行处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用shell具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • awk实现Left、join查询、去除重复值以及局部变量讲解例子

    awk实现Left、join查询、去除重复值以及局部变量讲解例子

    这篇文章主要介绍了awk实现Left、join查询、去除重复值以及局部变量讲解例子,awk的高级使用技巧,需要的朋友可以参考下
    2014-07-07
  • shell自动拉取镜像并运行容器的shell脚本

    shell自动拉取镜像并运行容器的shell脚本

    本文主要介绍了shell自动拉取镜像并运行容器的shell脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Shell脚本实现获取网页快照并生成缩略图

    Shell脚本实现获取网页快照并生成缩略图

    这篇文章主要介绍了Shell脚本实现获取网页快照并生成缩略图,本文获取网页快照使用phantomjs、生成缩略图使用ImageMagick,需要的朋友可以参考下
    2015-02-02

最新评论