上一篇 下一篇 分享链接 返回 返回顶部

Linux中常用的20个Rsync命令用法示例

发布人:Minchunlin 发布时间:2020-12-25 22:55 阅读量:1525

Rsync(远程同步)命令是一个Linux/Unix工具,用来同步和复制本地或远程的文件和目录。大多数Linux管理员都会使用Rsync来进行跨文件夹、跨磁盘和网络的数据镜像、备份或迁移。Rsync命令的一个显著特点是它使用 "delta传输算法"。

Delta传输算法的工作原理是用源目录的内容更新目标目录。如果在源目录上创建了一个变化或新文件,当你运行Rsync命令时,只有特定的变化才会被复制到目标目录。为了在本地和远程机器之间同步文件和目录,Rsync使用了SSH。

一、在Linux中安装Rsync

大多数Linux操作系统都预装了Rsync命令。然而,对于一些最低限度的安装来说,情况可能不是这样。您可以在终端中运行以下命令来安装Rsync。

①在 CentOS 和 RHEL 上

yum install rsync -y

②在Ubuntu和其他Debian发行版上

sudo apt install rsync -y

③Rsync基本语法

rsync options source destination

Rsync命令中使用的一些标准选项/参数。

-v:详细输出

-r:递归复制数据

-z:压缩文件数据

-h:以可读格式提供输出

-a:同步时归档文件和目录

–progress显示当前正在运行的Rsync任务的进度。

你可以使用"-help "选项查看Rsync命令的所有可用选项。

$ rsync --help

二、Linux中常用的20个Rsync示例

考虑到这些详细信息,让我们开始使用可以在Linux系统上使用的20个有用的Rsync示例命令。我们选择的操作系统是Ubuntu 20.04 LTS。但是,该语法也应适用于安装了Rsync的其他Linux发行版。

1.使用-v(详细)选项在本地复制/同步文件

那是最基本的Rsync命令,即使对于新手也是如此。在此示例中,我们将文件从桌面上的“ 原始 ”目录复制到“ / etc”中的“ 备份 ”目录之间。夹。我们将包括-v(详细)选项,以便rsync可以提供有关正在发生的情况的信息。

rsync -v Original/

Rsync需要注意的一件事是,如果目标目录不存在,它将自动创建它。让我们看下面的示例,我们要将文件复制到不存在的目录“ Foss ”。

2.使用-r选项递归同步/复制文件和目录

在以上命令中,如果“ 原始 ”文件夹中存在目录,则将跳过该目录。如下图所示。

要解决此问题,请使用-r(递归)选项。

3.在本地计算机和远程计算机之间同步/复制文件

在执行此任务之前,您需要了解有关远程服务器/计算机的几个参数:IP地址,用户名和用户密码。

我们将使用的基本语法是:

rsync [options] [files] [remote-username]@[ip-address]:/[destination]

让我们将文件从桌面上的“ 原始 ”目录复制到远程服务器。

4.将文件和目录从远程服务器同步/复制到本地PC

就像前面的命令一样,我们将需要知道远程服务器的IP地址。在此示例中,我们会将服务器主目录中“ 备份 ”文件夹中的文件同步到本地PC。

rsync -rv tuts@192.168.1.64:/home/tuts/Backup /home/tuts/Desktop/Original

5.通过-e选项使用SSH上的Rsync

为了确保文件和文件夹的安全,我们将使用基于安全外壳协议(SSH)的Rsync。此外,在提供root /用户密码时– SSH将提供加密服务,以确保它们安全。

要使用SSH,我们将添加-e选项,该选项指定我们要使用的协议。

rsync -vre ssh Original/* tuts@192.168.1.64:/home/tuts

6.使用Rsync命令显示进度

在复制多个文件或巨大文件的情况下,知道进度将是有效的。幸运的是,rsync提供了此选项-'-progress '选项。

sudo rsync -rv --progress Original/* /etc/Foss

7.将Rsync与'–include'选项一起使用

在某些情况下,您只想同步特定文件。使用Rsync命令,使' –include '选项执行任务。在此示例中,我们将仅同步以“ I”字母开头的文件。

sudo rsync -vr --include 'I*' Original/ /etc/Backup/

8.使用带有“ -exclude”选项的Rsync忽略特定文件

使用Rsync'-exclude '选项,您可以排除不想同步/复制的文件。在此示例中,我们要忽略所有以“ I”字母开头的文件。

sudo rsync -vr --exclude 'I*' Original/ /etc/Backup/

或者,您可以在一个命令中同时使用这两个选项。请参见下面的示例。

sudo rsync -vr --exclude '*' --include 'I*' Original/ /etc/Backup/

除了以字母“ I”开头的文件,我们不包括所有文件。

9.将Rsync与–delete命令一起使用

在某些情况下,目标目录中存在文件,但源文件夹中没有文件。为了进行同步,最好首先从目标目录中删除此类文件。幸运的是,Rsync带有' -delete '选项,该选项会自动执行。

如果目标目录中存在文件,而源目录中没有文件,则它将删除该文件。

rsync -vr --delete /etc/Backup/ tuts@192.168.1.64:/home/tuts/Backup

10.设置要通过Rsync传输的最大文件大小

如果您担心用于远程文件同步的存储空间或带宽,则需要在Rsync命令中使用“ –max-size”选项。使用此选项可以设置可以复制的文件的最大大小。

例如,“ -max-size = 100k ”将仅传输等于或小于100 KB的数据。

rsync -vr --max-size='200k' /etc/Backup/ tuts@192.168.1.64:/home/tuts/Backup

11.成功转移后自动删除源文件

假设您的PC上有一个远程备份服务器和一个备份目录。您需要先将数据备份到PC上的备份文件夹中,然后再与备份服务器同步。每次同步后,您将需要删除备份目录中的数据。

您可以使用' --remove-source-files '选项自动执行此操作。

通过在源文件夹上运行“ ls”命令,我们确认确实删除了文件。

12.使用Rsync执行试运行

对于不确定使用Rsync命令的新手,您可能会弄乱目标目录的内容,并且撤消操作可能很繁琐。使用“ –dry-run ”选项,Rsync命令将为您提供将执行的操作的输出,但不会执行。

因此,您可以查看此输出,如果它是期望的,然后再去掉' -dry-run '选项。

rsync -vr --dry-run Original/* tuts@192.168.1.64:/home/tuts/Backup

13.设置传输文件所需的带宽限制。

如果您在共享网络上或运行需要Internet连接的多个程序,则设置远程同步/复制文件所需的带宽限制会很有效。我们可以使用Rsync'-bwlimit '选项来做到这一点。

此速率以千字节为单位计算。因此,当“ -bwlimit = 1000 ”表示每秒只能传输1000Kb时。

rsync -vr --bwlimit=1000 Original/* tuts@192.168.1.64:/home/tuts/Backup

14.使用Rsync同步整个文件

默认情况下,Rsync仅同步已修改的块和字节。因此,如果您之前同步过文本文件,后来又在同步时在源文件中添加了一些文本,则仅复制插入的文本。如果要再次同步整个文件,则需要使用“ -W”选项。

rsync -vrW Original/* tuts@192.168.1.64:/home/tuts/Backup

15.不要同步/复制目标目录中的已修改文件

在某些情况下,您需要对目标文件夹中存在的文件进行修改。如果运行Rsync命令,这些修改将被源文件中的修改覆盖。为了避免这种情况,请使用'-u'选项。

rsync -vu Original/* tuts@192.168.1.64:/home/tuts/Backup

16.使用带有-i选项的Rsync来查看源和目标之间的文件差异

如果您想知道将对目标目录进行哪些新更改,请使用“ -i”选项,该选项将显示源目录和目标目录之间文件的差异。

rsync -avzi Original/ Backup/

在上图中形成输出,我们看到目标目录中不存在名为“ heloo.py”的文件。让我们看一下其中的一些参数。

d:显示目标文件中的更改

f:表示文件中

t:显示时间戳中

s:表示文件大小的变化。

17.使用Rsync仅复制目录结构

如果您对文件不感兴趣,则可以使用Rsync仅同步目录结构。我们将需要在源目录之前使用参数-f” + * /” -f”-*”。

rsync -av -f"+ */" -f"- *" /home/tuts/Desktop/Original/ /home/tuts/Documents/

18.在目录名称中添加日期戳

如果要在不打开目录属性的情况下跟踪何时进行传输,则可以轻松地在目录名称中添加日期。这将为您使用Rsync进行的所有同步添加日期戳。

为此,我们将$(date + \\%Y-\\%m-\\%d)附加到目标目录。

sudo rsync -rv Original/ /etc/$(date +\%Y-\%m-\%d)

19.在本地复制一个文件

要使用Rsync同步/复制单个文件,您需要指定文件路径,然后指定目标目录路径。

rsync -v Original/heloo.py Backup/

20.远程复制多个文件

要同时复制多个文件,您将需要提供所有文件的路径。此方法仅对少量文件有效。

rsync -vr /home/tuts/Desktop/Original/heloo.py /home/tuts/Desktop/Backup/index.html tuts@192.168.1.64:/home/tuts/Backup

以上就是关于常用的20个Rsync示例的全部内容,这些示例使您可以在本地和远程同步文件和目录。

目录结构
全文