Linux中rsync示例

时间:2020-02-23 14:40:36  来源:igfitidea点击:

rsync(remote sync)命令是一个用于在本地或者远程中同步和复制文件和目录的Linux/UNIX实用程序。
大多数Linux Geeks在磁盘和网络上使用rsync横跨文件夹镜像,备份或者迁移数据。
具有rsync命令的一个值得注意的功能是它使用"delta传输算法"。

在Linux中安装rsync

rsync命令已预先安装在大多数Linux操作系统中。
但是,对于一些最小的安装,这可能不是这种情况。
我们可以通过在终端中运行以下命令来安装rsync。

在Centos&Rhel

yum install rsync -y

在Ubuntu和其他Debian发行版上

sudo apt install rsync -y

rsync基本语法

rsync options source destination

与rsync命令一起使用的一些标准选项/参数:

-v: - verbose verbose输出-r:复制数据递归--z:压缩文件data -h:以人类可读格式提供输出-a:存档文件和目录同步--progress显示当前正在运行的rsync任务的进度。

我们可以使用"帮助"选项查看rsync命令的所有选项。

$rsync --help

Linux中的前20名rsync示例

通过记忆的详细信息,让我们开始使用20个有用的rsync示例命令,我们可以使用Linux系统。
我们的首选操作系统是Ubuntu 20.04 LTS;但是,语法也应该为安装rsync的其他Linux发行版工作。

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

这是最基本的rsync命令,即使是新手。
在此示例中,我们将在桌面上的"原始"目录之间的文件复制到"/等"中的"备份"目录。
文件夹。
我们将包含-v(verbose)选项,以便rsync可以提供有关正在发生的信息的信息。

rsync -v Original/

用rsync注意有一点是,如果目标目录不存在,它将自动创建它。
让我们看看下面的示例,我们要将文件复制到不存在的目录"theitroad"。

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

在上面的命令中,如果"原始"文件夹中存在一个目录,则会跳过它。
如下图所示。

要克服这一点,请使用-r(递归)选项。

使用-r递归同步文件

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

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

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

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

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

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

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

rsync -rv [email protected]:/home/igi/Backup /home/igi/Desktop/Original

将远程服务器的复制文件同步到本地计算机

5.使用-e选项使用rsync过ssh

为确保文件和文件夹的安全性,我们将在Secure Shell协议(SSH)上使用rsync。
此外,当提供根/用户密码SSH时,SSH将提供加密服务,确保它们是安全的。

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

rsync -vre ssh Original/* [email protected]:/home/igi

6.使用rsync命令显示进度

在我们复制多个文件或者巨大文件的情况下,知道进度将是有效的。
幸运的是,rsync提供了这个选项 - "进步"选项。

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

7.使用"包含"选项"包含"选项的rsync

有些情况下你只想同步特定文件。
使用rsync命令,我们将导致"包含"选项执行任务。
在此示例中,我们只会将文件同步以"I"字母开始。

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

8.使用rsync与"排除"选项忽略特定文件

使用rsync'排除'选项,我们可以将不想同步/复制的文件排除。
在此示例中,我们希望忽略以"I"字母开头的所有文件。

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

或者,我们可以在一个命令中使用两个选项。
请参阅下面的示例。

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

我们将除了以字母'I.'开始的那些分开的所有文件中排除所有文件

使用都包含和排除选项

9.使用带删除命令的rsync

有些情况下,目的地目录中存在文件,但不存在于源文件夹中。
有关同步,最好首先从目标目录中删除此类文件。
幸运的是,rsync附带"删除"选项,这会自动执行此操作。

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

rsync -vr --delete /etc/Backup/[email protected]:/home/igi/Backup

使用rsync与thedelete选项

10.使用rsync设置要传输的最大文件大小

如果我们关注远程文件同步的存储空间或者带宽,则需要使用rsync命令使用"max-size"选项。
此选项使我们可以设置可以复制的文件的最大大小。

例如,'max-size = 100k'只会传输等于或者小于100千字节的数据。

rsync -vr --max-size='200k' /etc/Backup/[email protected]:/home/igi/Backup

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

使用PC上有一个远程备份服务器和备份目录的情况。
在使用备份服务器将其同步之前,将数据备份到PC上的备份文件夹。
每次同步后,我们都需要删除备份目录中的数据。

幸运的是,我们可以使用" - 重放源 - 文件"选项自动执行此操作。

成功转移后删除源文件

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

12.用rsync进行干式运行

对于不确定使用rsync命令的新手,我们可以删除目标目录内容,撤消可能与繁琐。
使用"Dry-Run"选项,rsync命令将为我们提供将执行的内容的输出,但它不会进行。

因此,如果在o删除"干运行"选项之前,我们可以查看此输出

rsync -vr --dry-run Original/* [email protected]:/home/igi/Backup

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

如果我们在共享网络上或者运行需要Internet连接的多个程序,则可以高效地设置远程同步/复制文件所需的带宽限制。
我们可以用rsync'bwlimit'选项来执行此操作。

此速率以千字节计算。
因此,当"BWLIMIT = 1000"意味着每秒只能传输1000KB。

rsync -vr --bwlimit=1000 Original/* [email protected]:/home/igi/Backup

14.使用rsync同步整个文件

默认情况下,rsync仅同步修改后的块和字节。
因此,如果在同步之前并稍后添加了文本文件,则在同步时向源文件添加一些文本,则只将复制插入的文本。
如果要再次同步整个文件,则需要使用"-w"选项。

rsync -vrW Original/* [email protected]:/home/igi/Backup

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

有些情况我们对目标文件夹中存在的文件进行了修改。
如果运行rsync命令,则将被源文件中的这些修改覆盖。
要避免此类,请使用"-u"选项。

rsync -vu Original/* [email protected]:/home/igi/Backup

使用"u"选项避免在目标文件夹中修改文件

16.使用Rsync with -i选项可查看源和目标之间的文件中的差异

如果我们希望了解到目标目录的新更改,请使用"-I"选项,该选项将显示源和目标目录之间的文件差异。

rsync -avzi Original/Backup/

使用-i选项查看文件中的差异

在上面的图像中形成输出,我们看到一个名为"heloo.py"的文件,该文件不存在于目标目录中。
让我们来看看这些参数中的一些。

D:显示目标文件f的更改:表示文件t:显示时间戳s的更改:表示文件大小的变化

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

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

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

18.将日期标记添加到目录名称

如果要跟踪在没有打开目录属性的情况下发生转移时,可以轻松地将日期添加到目录名称。
这将为使用rsync进行的所有同步添加日期戳。

为此,我们将将$(日期+ \%y - \%m - \%d)添加到目标目录。

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

19.在本地复制单个文件

要使用rsync同步/复制单个文件,我们需要指定目标目录路径后面的文件路径。

rsync -v Original/heloo.py Backup/

20.远程复制多个文件

要同时复制多个文件,我们需要为所有这些都提供所有这些文件。
此方法仅为少量文件有效。

rsync -vr /home/igi/Desktop/Original/heloo.py /home/igi/Desktop/Backup/index.html [email protected]:/home/igi/Backup