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

Linux Rsync 命令16 个实战示例小结 sync远程同步是Linux/Unix系统中用于远程和本地复制及同步文件和目录的常用工具。利用rsync命令您可以轻松地在不同目录、硬盘和网络之间进行数据的远程和本地复制与同步进行数据备份以及在两台Linux系统间创建镜像。这篇文章介绍了rsync命令的16个基本和进阶用法帮助您在Linux系统上实现文件的远程和本地传输。执行rsync命令不需要root权限。Rsync命令的好处rsync 命令具有多项优点例如高效传输 - rsync 采用差异传输算法仅传输源文件与目标文件之间的不同部分大幅减少数据传输量特别适合同步大文件或文件夹。远程同步 - rsync 支持通过SSH进行本地和远程文件传输便于在本地和远程系统间同步文件或在多台设备间镜像文件夹。增量备份 - rsync 非常适合进行增量备份因为它能够高效地创建和更新备份只传输新增或修改过的文件。保留权限 - rsync 能够保持文件的多种属性包括权限、所有者、时间戳和符号链接确保复制的文件在目标位置保持原样。控制带宽 - rsync 允许限制文件传输时的带宽使用它在数据传输过程中使用压缩和解压缩技术。速度更快 - rsync 在传输文件时速度通常比scp安全复制更快特别是在同步大型目录或处理已经部分传输或已存在于目标位置的文件时。Rsync命令的语法rsync命令遵循如下语法1# rsync [OPTIONS] SOURCE DESTINATION以下是rsync命令中不同组成部分和选项的说明-v – 输出详细信息展示文件传输的详细过程。-r – 递归复制数据但此过程中不会保留文件的时间戳和权限。-a – 归档模式可以递归复制文件并保留符号链接、文件权限、用户和组的所有者信息以及时间戳。-z – 传输时压缩文件以减少网络流量。-h – 易于理解的格式以更易于理解的方式显示数字。-P – 传输时显示进度条。SOURCE – 指定要传输的源文件或目录可以是本地或远程路径。DESTINATION – 指定文件或目录复制的目标路径可以是本地或远程路径。在Linux系统中安装Rsync我们可以根据您的 Linux 发行版借助以下软件包管理器安装 rsync 软件包。123456$sudoaptinstallrsync[On Debian, Ubuntu and Mint]$sudoyuminstallrsync[On RHEL/CentOS/Fedoraand Rocky/AlmaLinux]$sudoemerge -a sys-apps/rsync[On Gentoo Linux]$sudoapk addrsync[On Alpine Linux]$sudopacman -Srsync[On Arch Linux]$sudozypperinstallrsync[On OpenSUSE]1. 本地文件复制/同步若要在同一台计算机内复制或同步文件您可以执行如下命令将单个文件从一个目录移动到另一个目录。例如假设我们需要将名为 backup.tar 的文件复制或同步到本地的 /tmp/backups/ 目录下。12345[roottecmint]# rsync -zvh backup.tar.gz /tmp/backups/created directory/tmp/backupsbackup.tar.gzsent 224.54K bytes received 70 bytes 449.21K bytes/sectotal size is 224.40K speedup is 1.00在上面的示例中您可以看到如果目标尚不存在rsync 将自动为目标创建一个目录。2. 本地复制/同步目录以下命令将把所有文件从一个目录传输或同步到同一台机器上的另一个目录。在此示例中/root/rpmpkgs 包含一些 rpm 软件包文件并且您希望将该目录复制到 /tmp/backups/ 文件夹中。123456789[roottecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/sending incrementalfilelistrpmpkgs/rpmpkgs/httpd-2.4.37-40.module_el8.5.08520aafc63b.x86_64.rpmrpmpkgs/mod_ssl-2.4.37-40.module_el8.5.08520aafc63b.x86_64.rpmrpmpkgs/nagios-4.4.6-4.el8.x86_64.rpmrpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpmsent 3.47M bytes received 96 bytes 2.32M bytes/sectotal size is 3.74M speedup is 1.083. 将目录从本地复制到远程服务器要将目录从本地服务器复制到远程服务器可以使用以下命令该命令会将目录从本地计算机同步到远程计算机。例如如果本地计算机中有一个文件夹“rpmpkgs”其中包含一些 RPM 软件包并且您希望将该本地目录的内容发送到远程服务器则可以使用以下命令。123456789101112131415# rsync -avzh /root/rpmpkgs root192.168.0.141:/root/The authenticity of host192.168.0.141 (192.168.0.141)cant be established.ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.This key is not known by any other namesAre you sure you want tocontinueconnecting (yes/no/[fingerprint])?yesWarning: Permanently added192.168.0.141(ED25519) to the list of known hosts.root192.168.0.141s password:sending incrementalfilelistrpmpkgs/rpmpkgs/httpd-2.4.37-40.module_el8.5.08520aafc63b.x86_64.rpmrpmpkgs/mod_ssl-2.4.37-40.module_el8.5.08520aafc63b.x86_64.rpmrpmpkgs/nagios-4.4.6-4.el8.x86_64.rpmrpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpmsent 3.74M bytes received 96 bytes 439.88K bytes/sectotal size is 3.74M speedup is 1.004. 将目录从远程复制到本地服务器此命令将帮助您将远程目录同步到本地目录。在此示例中远程服务器上的目录 /root/rpmpkgs 被复制到本地计算机的 /tmp/myrpms 中。1234567891011# rsync -avzh root192.168.0.141:/root/rpmpkgs /tmp/myrpmsroot192.168.0.141s password:receiving incrementalfilelistcreated directory/tmp/myrpmsrpmpkgs/rpmpkgs/httpd-2.4.37-40.module_el8.5.08520aafc63b.x86_64.rpmrpmpkgs/mod_ssl-2.4.37-40.module_el8.5.08520aafc63b.x86_64.rpmrpmpkgs/nagios-4.4.6-4.el8.x86_64.rpmrpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpmsent 104 bytes received 3.49M bytes 997.68K bytes/sectotal size is 3.74M speedup is 1.07复制讲解5. 通过 SSH 进行 Rsync通过rsync我们可以使用SSHSecure Shell进行数据传输在传输数据时使用SSH协议您可以确保您的数据在加密的安全连接中传输这样在传输过程中没有人可以读取您的数据通过互联网上的电线。此外当我们使用 rsync 时我们需要提供用户/root 密码来完成该特定任务因此使用 SSH 选项将以加密方式发送您的登录信息以便您的密码安全。