数据安全至关重要,千万不要让宝贵的数据丢失。在Linux系统中,通过命令行进行数据备份是一种高效且可靠的方法。本文将详细介绍如何使用rsync
命令进行备份,并推荐一些可选的图形界面工具,让备份操作更加便捷。
备份文件的方式多种多样,而我们推荐rsync
命令,因为它采用了高效的差异算法。该算法能够计算出源目录和目标目录之间文件的差异,仅传输发生变化的部分,从而避免了不必要的完整文件传输,大大提高了备份效率。
自从20世纪90年代中期以来,rsync
在文件复制和目录同步方面一直表现出卓越的可靠性,使其成为在Linux命令行下进行备份的理想选择。
此外,市面上还有许多基于rsync
的独立软件,它们提供了图形用户界面(GUI),使得rsync
的使用更加友好,方便不熟悉命令行的用户。
备份操作越简单快捷,您就越有可能坚持执行备份,从而更好地保护您的数据。
使用外部硬盘进行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
目录及其内容已被复制到了外部硬盘。内容位于Documents
目录内,而不是外部硬盘的根目录。
复制到特定目标目录
要将内容复制到目标硬盘上的特定目录,请在目标路径中添加目录名称。例如,如果我们要将”/home/dave/Documents”目录的内容复制到外部硬盘上名为“backups”的目录中,可以使用以下命令:
rsync -r /home/dave/Documents/ /media/dave/SILVERXHD/backups/
检查外部硬盘,可以看到已经创建了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/
复制完成后会显示备份摘要:
摘要信息解释如下:
已发送
:传输到目标的字节数。已接收
:主机接收到的字节数。字节/秒
:实际传输速率。总大小
:如果不使用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/
输出格式没有区别。
不难发现,Bytes/sec
数据有了显著改善。
如果我们再次运行rsync
,我们会发现没有需要传输的文件,因为没有任何更改。但仍有一些字节来回传输,这是为了比较目标上的文件列表和源上的文件列表所需的数据量。
在这种情况下,加速比提升了一个数量级。在实践中,您的性能比率将介于我们的两个测试结果之间。
通过SSH使用rsync
rsync
支持通过SSH连接进行备份。我们需要在命令行中提供用户帐户名和SSH位置。我们在此示例中使用网络名称,但您也可以使用IP地址。
请注意SSH连接详细信息和远程目标上网络路径的开头之间的“:”。
rsync -ravz --partial /home/dave/Documents/ [email protected]:/home/dave/Backups/
系统会要求您输入远程计算机上用户帐户的密码,而不是源计算机上的密码。
备份将照常完成。由于加密和解密发生在安全外壳连接中,吞吐量不如常规网络连接快。
自动化备份
我们可以通过在crontab文件中添加条目来轻松创建自动备份:
crontab -e
我们将设置一个自动备份,使其在每天04:30运行(当然,前提是当时计算机处于开启状态)。rsync
命令的语法没有变化。
Ctrl+O
会将您的更改写入文件,Ctrl+X
将关闭nano编辑器。
rsync
图形界面
对于不熟悉命令行的用户,可以使用许多为rsync
提供图形用户界面(GUI)的程序。两个不错的选择是luckyBackup和Grsync。这两个程序都允许通过用户界面选择许多rsync
选项。
Grsync
程序专注于成为rsync
的可视化包装器,它提供了对rsync
选项的便捷访问,并且只添加了有限的新功能。
Grsync
设置对话框之一
luckyBackup
程序不仅仅是rsync
的简单包装器。它是一个在幕后使用rsync
的备份程序。例如,luckyBackup
可以为您的备份创建多个“快照”,然后您可以“回滚”到任何快照中的文件版本。
luckyBackup
设置对话框之一
安装Grsync
要在Ubuntu中安装Grsync
,请使用以下命令:
sudo apt-get install grsync
要在Fedora中安装Grsync
,请使用以下命令:
sudo dnf install grsync
要在Manjaro中安装Grsync
,请使用以下命令:
sudo pacman -Syu grsync
安装luckyBackup
要在Ubuntu中安装luckyBackup
,请使用以下命令:
sudo apt-get install luckybackup
要在Fedora中安装luckyBackup
,请使用以下命令:
sudo dnf install luckybackup
在Manjaro中,您必须从Arch用户存储库(AUR)安装。您可以使用pamac包管理器执行此操作。
不要冒险,经常备份您的数据
备份至关重要,请务必经常备份,备份到多个位置,并备份到不同的介质。一旦设置完成,rsync
就可以为您完成所有这些工作。