Rsync 命令允许我们通过 SSH 连接或本地机器跨不同目录和机器传输和同步文件。 如果您需要备份目录或同步数据,Rsync 是备份系统的最佳工具之一。 使用 Rsync 比仅仅复制文件要高效得多,因为 Rsync 只复制不同的部分。
例如,如果您尝试备份 1000 张照片,则 Rsync 将仅选择自上次备份以来新的或不同的特定文件。 而且,如果您正在复制数据并失去网络连接并重新运行 Rsync 命令,它会知道它在哪里停止并且不必重新开始。
作为一名 Linux 系统管理员,您必须了解一些 Linux 中 Rsync 命令的主要实用示例,以使您的体验更加流畅。
Linux 中 Rsync 的特点
在这里,我添加了 Rsync 的一些基本功能。 您可以通过以下提供的要点详细了解远程同步命令,这将有助于您以后了解 Linux 中的 Rsync 命令示例。
- Rsync 命令可以复制文件和目录以及子目录。
- 由于 Rsync 使用增量传输算法,该工具会跳过目标地址中已经存在的文件。
- Rsync 会忽略与客户端和主机系统完全相同的文件。
- 您可以在 SSH 或本地计算机上使用 Rsync。
- 它可以执行 tar 命令以及复制文件。
- 在大多数情况下,Rsync 不需要 sudo 特权。
- 您可以将管道命令与 Rsync 一起使用,以更快地传输文件并降低延迟。
- 对于通过 Web 复制文件,Rsync 使用 TCP 协议。
- Rsync 可以减少所需的带宽量。
- 您不能通过 Linux 上的 Rsync 在两个或多个远程主机之间复制文件。
Linux 中的远程同步语法
在这里,我添加了一些最重要的语法和 Rsync 的概要。 通读语法和标志对于更好地理解 Linux 中的 Rsync 命令示例很重要。
给定的命令格式用于在本地机器上传输文件。
rsync [OPTION...] SRC... [DEST]
– –
Rsync 使用给定的命令格式通过远程 shell 传输文件。
Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST
当 Rsync 作为守护进程访问主机时,它使用给定的命令格式来传输文件。
Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST] rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST
在 Linux 上安装 Rsync
在我们进入 Linux 中的 Rsync 命令示例之前,我们必须检查系统上是否安装了该工具。 默认情况下,所有主要的 Linux 发行版都预装了 Rsync。 因此,如果您发现系统上没有安装该工具,您可以轻松地在您的机器上获取 Rsync 工具。 在这里,我正在征集主要 Linux 发行版的命令来安装 Rsync。
开启 Rsync Fedora 和红帽 Linux
sudo yum install rsync -y sudo dnf install rsync -y
在 Debian/Ubuntu Linux 上安装 Rsync
sudo apt install rsync -y
您可以从 Arch Linux 系统上的 Snap 命令获取 Rsync 工具。 请分别执行以下命令以获取 Arch Linux 上的 Rsync 工具。 首先,在 Linux 上克隆存储库。
git clone https://aur.archlinux.org/snapd.git cd snapd makepkg -si
现在,执行系统控制命令来使用套接字。 然后运行 Snap 命令来安装该工具。
sudo systemctl enable --now snapd.socket sudo ln -s /var/lib/snapd/snap /snap sudo snap install rsync-leftyfb
最后,当安装结束时,您现在可以在终端 shell 上查看 Rsync 的帮助页面。
$ rsync --help
Linux中的rsync
Rsync 是远程同步命令的缩写形式。 此 Rsync 工具可用于 Mac 和 Linux。 在这两种情况下,语法和命令样式几乎相同。 现在,当我们说远程同步时,这并不一定意味着您需要通过 SSH 或 Internet 同步或复制文件。
您也可以在同一台机器上执行 Rsync 来同步两个不同的目录或子目录。 在更新软件包存储库和替代或镜像服务器时可以看到 Rsync 的非常有效的使用。
在这篇文章中,我们将看到一些用于 Linux 的最常用和最强大的 Rsync 命令示例。
Linux 中的 Rsync 示例
以下是 Linux 中 Rsync 命令和格式的一些基本示例。 下面提供的一种是命令格式,第二种是通过 SSH 使用 Rsync。
在 Linux 中,当 Rsync 在主机-客户端环境上运行时,它会通过 SSH 连接建立一个链接。 当远程用户或客户端接受连接时,客户端 Rsync 会自动唤醒主机系统上的 Rsync。
Rsync的通用命令格式
$ rsync [options] source [destination]
SSH 连接的 Rsync 命令格式
$ rsync local-file [email protected]:remote-file
1.远程同步命令复制目录上的所有文件
下面提到的 example Linux 上的 Rsync 命令会将所有文件从 Documents 复制到 /tmp/documents 目录。
$ rsync -av Documents/* /tmp/documents
在这个命令中,我们使用了三个标志; -a 和 -v 以及 *. 这是他们在命令中所做的解释。
- -a:-a 标志以归档/库方式执行命令。
- -v:-v 标记用于将 Rsync 运行为详细。
- – *:* 符号确保选择并复制所有文件。
现在,如果我们将一些新文件添加到原始目录并再次运行 Rsync,它将复制新文件并通知 shell 中的口头输出。
$ rsync -av Documents/* /tmp/documents
下面提到的命令将允许我们运行测试以了解哪些文件将被同步以避免错误。
$ rsync -aunv /home/ubuntupit/Documents/* /home/ubuntupit/Pictures/
运行测试检查后,我们现在可以通过删除命令上的 -n 标志来运行实际命令。
$ rsync -auv /home/ubuntupit/Documents/* /home/ubuntupit/Pictures/
2. SSH 上的 rsync 命令示例
到目前为止,我们已经看到了一些关于如何在本地机器上执行 Rsync 的示例。 在这里,我们将看到如何在服务器上运行它。 所有的语法都是一样的; 您只需要输入网络服务器地址和用户名。
$ rsync -av --ignore-existing Documents/* [email protected]:~/all/
3. Linux 中的 Rsync 示例:Dry Run Rsync
在编程中,术语空运行被定义为执行命令只是为了查看预览或错误执行以检查如果我们运行命令可能会发生什么。 在这里,我们也可以对 Rsync 应用空运行命令。
下面的 Rsync 命令示例将允许我们检查哪些文件将从远程 Linux 服务器同步到主机系统上。 稍后,我们可以在没有空运行的情况下执行命令。
$ rsync -av --dry-run --update Documents/* [email protected]:~/all/ $ rsync -av --update Documents/* [email protected]:~/all/
4.在本地机器和远程服务器之间同步文件
上面的命令显示了如何将文件从本地机器发送到本地机器或从服务器发送到另一台主机。 下面 example Rsync 展示了如何使用该工具将文件从本地机器发送到远程 Linux 机器。
rsync [options] [files] [remote-username]@[ip-address]:/[destination]
5.将文件从远程服务器传输到本地机器
只是上面命令的反面,下面提到的 example Rsync 命令将显示如何将文件从远程 Linux 服务器发送到本地计算机。
rsync -rv [email protected]:/home/ubuntupit/Backup /home/ubuntupit/Desktop/Original
6. 使用 Rsync 显示进度
这对于那些需要通过 Rsync 工具传输大文件的人来说非常重要。 比如下面提到的 example 的 Rsync 命令展示了如何在 Linux 上的 CLI 中监视和观察传输进度。
sudo rsync -rv --progress Original/* /etc/ubuntupit
您可以运行带有“–include”标志的 Rsync 命令以将特定文件添加到同步过程中。
sudo rsync -vr --include 'I*' Original/ /etc/Backup/
7. 使用带有“–exclude”的 Rsync 来忽略文件
使用 Rsync,您还可以使用排除命令从命令中排除任何文件。 下面提到的 example Linux 中的 Rsync 命令向我们展示了如何排除我们不想同步的文件。 在这里,我已经排除了要通过我的 Linux 系统上的此 Rsync 命令同步的文件 To_check_rsync_two(另一个副本).txt。
$ sudo rsync -vr --exclude 'To_check_rsync_two (another copy).txt' /home/ubuntupit/Desktop/ /home/ubuntupit/Documents/
同样的,如果你想强制包含你认为rsync默认不会添加的文件,你也可以包含一个文件。
sudo rsync -vr --exclude '*' --include 'I*' Original/ /etc/Backup/
要通过 Rsync 命令删除或删除要同步的文件,可以在终端 shell 的命令中使用 -delete 标志。
rsync -vr --delete /etc/Backup/ [email protected]:/home/ubuntupit/Backup
8.设置最大尺寸限制
如果您在计算机上使用有限的带宽数据,并且您需要传递多个文件,但您不知道何时需要停止传输以节省带宽,您可以使用下面提到的 example 的 Rsync 命令来限制最大大小的文件传输。
rsync -vr --max-size="200k" /etc/Backup/ [email protected]:/home/ubuntupit/Backup
9. 传输后自动删除源文件
如果您的主机 PC 的磁盘空间有限,并且您希望在将文件传输到您的系统后同时删除该文件,您可以在 Linux 终端 shell 上使用带有 Rsync 命令的删除标志。
$ rsync -vr --remove-source-files Original/* [email protected]:/home/ubuntupit/backups/
10. 使用远程同步同步整个文件
到目前为止,我们已经看到 Rsync 命令只同步那些没有被编辑或修改过的文件。 但是如果你想同步所有修改和未修改的文件,你可以使用下面的 Rsync 命令。
rsync -vrW Original/* [email protected]:/home/ubuntupit/Backup
11.停止同步目标中的修改文件
选择整个系统后,如果您不想同步特定文件或文件夹,可以将该路径分配给 Rsync 命令,以便 Rsync 工具跳过同步路径。
rsync -vu Original/* [email protected]:/home/ubuntupit/Backup
12.添加-i标志来监控差异
要查看原始文件与同步后文件之间的差异,请在命令中使用 i 标志。
rsync -avzi Original/ Backup/
13. 仅使用远程同步复制目录结构
对于那些对复制或传输文件感兴趣的人来说,这个命令非常有趣; 您现在可以使用 rsync 命令通过 rsync 命令查看目录结构.
rsync -av -f"+ */" -f"- *" /home/ubuntupit/Desktop/Original/ /home/ubuntupit/Documents/
14.在目录名称中添加日期戳
要在通过远程同步工具传输文件时在文件上包含时间戳,您可以在目标位置的命令中使用以下时间戳格式。
Destination directory: $(date +%Y-%m-%d) sudo rsync -rv /home/ubuntupit/Documents/* /etc/$(date +%Y-%m-%d)
15.远程复制多个文件
到目前为止,我们已经了解了如何将单个文件从远程服务器复制和传输到本地机器,反之亦然,从主机 pc 到本地机器。 现在我们将看到如何添加多个文件并通过一个 Rsync 命令传输它们。 要添加多个文件,我们必须在命令中指定所有文件路径。
rsync -vr /home/ubuntupit/Documents/To_check_rsync.txt /home/ubuntupit/Desktop/To_check_rsync_two.txt /home/ubuntupit/ rsync -vr /home/ubuntupit/Documents/To_check_rsync.txt /home/ubuntupit/Desktop/To_check_rsync_two.txt [email protected]:/home/ubuntupit/Backup
见解!
由于 Rsync 命令是用 C 编程语言编写的,并且作为单线程应用程序执行,因此该工具可以轻松地与内核和其他应用程序进行通信。 在整篇文章中,我们看到了 Rsync 工具和 Linux 中的 Rsync 命令示例,用于在机器和服务器上有效地传输文件。
您甚至可以使用具有适当配置和知识的 Rsync 命令同步 apache 服务器。 在某些情况下,Rsync 命令可以与 checksum 命令相关联,无论文件是否被修改,该命令都可以执行。 如果你对 Rsync 更感兴趣,也可以试试 基于 GUI 的 Rsync 工具.
如果您觉得这篇文章有用且内容丰富,请与您的朋友和 Linux 社区分享。 我们还鼓励您在评论部分写下您对这篇文章的看法。