如何使用 rsync 备份你的 Linux 系统

不要冒数据丢失的风险。从 Linux 命令行备份您的宝贵数据。为此,我们将使用 rsync
命令,我们甚至为它找到了一些不错的可选图形界面。
有许多方法可以完成制作文件的备份副本。我们想向您展示一种强大、灵活且可靠的数据保护方法。我们选择 rsync
是因为它具有计算源目录和目标目录中文件之间差异的备受推崇的算法。仅传输文件的两个版本之间的差异,如果可以避免,则不会传输整个文件。
当这种效率与其自 1990 年代中期以来在执行文件复制和目录同步方面的可靠记录相结合时,rsync
是从 Linux 命令行创建备份的完美候选者。
此外,还有独立的软件程序充当 rsync
的前端。它们为 rsync
提供图形用户界面 (GUI),有些人可能会觉得它更容易使用。
备份越简单、越快,您就越有可能这样做。
将 rsync 与外部硬盘驱动器一起使用
要将您的数据备份到外部硬盘驱动器,您必须安装并访问该硬盘驱动器。如果您可以写入,那么 rsync
也可以。在此示例中,将名为 SILVERXHD(“Silver eXternal Hard Drive”)的外部 USB 硬盘插入 Linux 计算机。它已由操作系统自动安装。
您将需要知道驱动器的路径。在 GNOME 中,打开 Nautilus 文件浏览器并在边栏中找到驱动器的名称。
将鼠标指针悬停在外部驱动器的名称上,工具提示将显示驱动器的路径。

在这个例子中,工具提示告诉我们文件系统在外部驱动器上的挂载点是“/media/dave/SILVERXHD”。
如果您的文件浏览器不执行此操作,请浏览到外部驱动器并在该位置打开终端窗口。使用 pwd
命令打印终端窗口的路径。
从源目录复制内容
要使用 rsync
将目录的内容复制到备份目标,请使用以下命令。
-r
(递归)选项导致 rsync
复制所有嵌套的子目录及其内容。请注意,在“SILVERXHD”一词的末尾有一个正斜杠“/”,但它已绕到屏幕截图中的下一行。
rsync -r /home/dave/Documents/ /media/dave/SILVERXHD/

文件复制发生,您将返回到命令行提示符。
如果我们查看外部 USB 驱动器,我们会看到 Documents 目录中的目录已被复制到外部驱动器的根目录。
ls

复制源目录及其内容
如果您想要将 Documents 目录及其内容复制到外部驱动器,请在命令行中删除“/home/dave/Documents”末尾的“/”,如下所示:
rsync -r /home/dave/Documents /media/dave/SILVERXHD/

为避免混淆,我在执行第二个命令之前从外部驱动器中删除了之前复制的两个目录。
如果我们让第二个副本完成并再看一下外部驱动器,我们会看到 Documents 目录已被复制过来。它的内容在该目录中。它们不在外部驱动器的根目录中。

复制到特定目标目录
要复制到目标硬盘驱动器上的特定目录,请将目录名称添加到目标路径。假设我们要将“/home/dave/Documents”目录的内容复制到外部驱动器上名为“backups”的目录中。
我们将使用以下命令执行此操作。
rsync -r /home/dave/Documents/ /media/dave/SILVERXHD/backups/

检查外部驱动器,我们可以看到已经创建了备份目录,该目录中包含“/home/dave/Documents”目录的内容。
ls
ls backups

保留文件所有权和权限
使用 -a
(存档)选项为复制的文件、符号链接和特殊块文件保留文件属性,例如修改日期、文件所有权、访问权限等。
rsync -ra /home/dave/Documents/ /media/dave/SILVERXHD/backups/

使用详细模式
-v
(详细)选项强制 rsync
在复制文件时列出文件。
rsync -rav /home/dave/Documents/ /media/dave/SILVERXHD/backups/

复制完成后会显示备份摘要。

- 已发送:传输到目标的字节数。
- Received:主机接收到的字节数。
- 字节/秒:是有效传输速率。
- 总大小:表示如果您不使用
rsync
将发送的数据的大小。在rsync
的后续运行中,它只会传输文件差异。此数字将代表不需要传输的数据。 - 加速:这是必须发送的数据量与现有数据总量之间的比率。如果
rsync
需要完整复制所有文件(例如,第一次运行时),加速比将为 1.0。下次使用rsync
时,它将优化传输。它只会发送文件之间的差异,而不是整个文件。没有更改的文件将被忽略。加速数字将表示需要传输的少量数据与文件总大小之间的比率。
使用进度选项
-P
(进度)选项使 rsync
在每个文件被复制后生成一个小的进度报告。
rsync -raP /home/dave/Documents/ /media/dave/SILVERXHD/backups/

可以在每个复制的文件之间看到提供的信息。

提供的信息是:
- 字节大小:为此文件传输的数据。
- 百分比:已传输文件的百分比。
- B/s:数据传输速率。
- 剩余时间:传输此文件的估计剩余时间。
- xfr#:到目前为止传输的文件数。
- to-chk:待优化算法检查和验证的文件数。
增加速度
要加快传输速度,请使用 -z
(压缩)选项。这会压缩传输中的文件,但文件会以未压缩的形式存储在目标目录中。
对于涉及许多小文件的传输,压缩选项不会产生显着的好处。对于较大文件的集合,它可以以有意义的方式减少传输时间。
我们还在此处使用了 --partial
选项。 rsync
将删除由网络故障或其他中断引起的部分传输文件。 --partial
选项强制 rsync
将部分传输的文件留在目标上。 rsync
运行的净时间将不必重新传输部分传输文件的部分。
请注意,如果存在有人将部分传输的文件误认为完全传输的文件的风险,您可能不想使用此选项。
rsync -ravz --partial /home/dave/Documents/ /media/dave/SILVERXHD/backups/

在我们的例子中,好处是微不足道的。

加速比提高了百分之二百分之二!在真实场景中,您的速度提升会更加可观。
通过网络使用 rsync
到目前为止,我们一直以外部 USB 驱动器为目标。要将网络位置用作备份目标,请在命令行中使用该位置的路径。本文研究的网络上有一个网络附加存储设备 (NAS)。
我们可以使用我们之前使用的相同技巧来识别 NAS 的路径,方法是将鼠标悬停在 Nautilus 中与该设备的连接上。
没有特殊的选项可以通过网络进行备份;这些都是我们已经使用过的选项。
rsync -ravz --partial /home/dave/Documents/ /media/dave/NAS/dave/backups/

输出格式没有区别。

毫不奇怪,字节/秒数字有显着改善。
如果我们再次运行 rsync
,我们可以看到没有要传输的文件,因为没有任何更改,但仍然有一些字节来回传输。这是需要传输以比较目标文件列表和源文件列表的数据量。

在这种情况下,加速比要好一个数量级。实际上,您的性能比将介于我们的两个伪人工读数之间。
通过 SSH 使用 rsync
rsync
支持通过 SSH 连接进行备份。我们需要在命令行中提供用户帐户名和 SSH 位置。我们在这里使用网络名称,但您也可以使用 IP 地址。
请注意 SSH 连接详细信息和远程目标上网络路径开头之间的“:”。
rsync -ravz --partial /home/dave/Documents/ dave@sulaco.local:/home/dave/Backups/

系统将要求您提供远程 计算机上用户帐户的密码。这不是您在源计算机上的密码。

备份将照常完成。吞吐量不如常规网络连接快,因为在安全外壳连接中进行了加密和解密。
自动化您的备份
我们可以通过将条目添加到您的 crontab 文件来轻松创建自动备份。
crontab -e

我们将设置一个自动备份,在每天 04:30 运行(当然,前提是计算机在那个时间开启)。 rsync
命令的语法完全没有改变。

Ctrl+O 会将您的更改写入文件,Ctrl+X 将关闭 nano
编辑器。
在 Rsync 上装一张友好的脸
不太习惯命令行的人可以使用在 rsync
上放置图形用户界面 (GUI) 的众多程序之一。两个很好的例子是 luckyBackup 和 Grsync。这两个程序都允许通过用户界面选择许多 rsync
选项。
Grsync
程序专注于成为 rync
的可视化包装器。它提供了对 rsync
选项的轻松访问,并且只添加了一组有限的新功能。

luckyBackup
程序不仅仅是 rsync
的简单包装器。它是一个在后台使用 rsync
的备份程序。例如,luckyBackup
可以为您的备份创建多个“快照”。然后您可以“回滚”到任何快照中的文件版本。

安装 Grsync
要在 Ubuntu 中安装 Grsync
,请使用以下命令:
sudo apt-get install grsync

要在 Fedora 中安装 Grsync
,请使用以下命令:
sudo dnf install grsync

要在 Manaro 中安装 Grsync
,请使用以下命令:
sudo pacman -Syu grsync

安装 luckyBackup
要在 Ubuntu 中安装 luckyBackup
,请使用以下命令:
sudo apt-get install luckybackup

要在 Fedora 中安装 luckyBackup
,请使用以下命令:
sudo dnf install luckybackup

在 Manjaro 中,您必须从 Arch 用户存储库 (AUR) 安装 luckyBackup
。您可以使用 pamac
包管理器来完成此操作。

不要冒险,经常备份您的数据
备份绝对至关重要。经常备份,备份到多个位置,备份到不同的媒体。设置完成后,rsync
可以为您完成所有这些工作。
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts