如何在 Debian 10 中备份文件和文件夹
在 IT 领域,尽可能保留数据副本非常重要,以便在发生磁盘故障或被错误删除时需要时使用它。因此,在一天结束时定期进行备份是负责任的计算机用户的良好做法。
“rsync”命令通常用于复制大数据。但是,当在本地计算机上复制少量目录和文件时,也会使用“cp”命令。
在本文中,我们将了解如何在 Debian 10 中备份文件和文件夹。
先决条件
您需要具备以下条件才能完成本教程。
1.两台具有root权限的Debian 10机器
使用cp命令备份目录
我们要讨论的第一个命令是“cp”。它用于复制本地计算机上的少量文件和文件夹。因此,工业上实际上并未使用。
“cp”命令的语法如下。
cp -option1 -option2 源目标
为了便于理解,我们将把文件从 Desktop/log 复制到 Karim/logrot。在终端上运行以下命令。
cp -avr Desktop/log Karim/logro
a:用于保存目录属性,如文件模式、所有权、时间戳等。
r:用于递归复制主目录中的目录
v:用于详细输出
以下是示例输出。
如果要将所有文件、目录和子目录复制到另一个目录,可以使用 * 通配符。例如,以下命令会将现有目录 Desktop/log/ 中的所有数据复制到 Karim/logro/。
cp -avr Desktop/log/* Karim/logro/
以下是示例输出。
使用 rysnc 备份目录
正如我们已经说过的,最广泛使用的备份文件和文件夹命令是“rsync”。因此,让我们讨论一下它是什么以及如何使用它。
什么是 rysnc?
Rsync 代表远程同步,由 Andrew Tridgell 和 Paul Mackerras 于 1996 年 6 月 19 日编写。它是本地和网络计算机之间文件同步和传输的有效命令。它在大多数系统上默认可用。但是,如果它不可用,您可以借助以下简单命令来安装它(使用 root 权限运行命令)。
apt-get update
apt-get install rsync
在同步数据之前,您还需要在两台网络计算机上安装 ssh 客户端和服务器。在两台 Debian 1o 计算机上以 root 权限运行以下命令。
apt-get 安装 ssh
备份本地机器上的目录
在本地计算机上同步文件的基本语法如下。
rsync 选项 源目录 目标目录
如果您想保留所有权、权限、创建日期等元数据,则必须使用 -a 选项。如果要递归复制目录内的目录,则必须使用 -r 选项。
rsync -ar 源目录 目标目录
类似地,如果您想在同步过程中查看进度,请使用 -v 选项。命令应如下所示,
rsync -avr 源目录目标目录
假设我们要将位于 Desktop/log 的文件和文件夹同步到 Karim/logro,命令应如下所示。
rsync -avr Desktop/log Karim/logro
以下是示例输出。
让我们再讨论一个示例,假设我们有一个位于硬盘 1 (/media/hdd1/data-1) 的文件夹 data-1,并且您希望将其同步到位于 /media/hdd2/ 的第二个硬盘。完整的命令应如下所示。
rsync -avr /media/hdd1/data-1 /media/hdd2/
执行命令时,将在第二个硬盘驱动器中创建 data-1 目录,并将复制目标路径 /media/hdd2/ 上的所有内容。
通过网络备份文件和目录
通过网络传输数据时,语法略有不同。当您想要将本地目录与远程目录同步时,命令应如下所示。
rsync [-options] PathofSourceFolder 用户名@IPAddressofRemoteHost:PathofDestinationFolder
假设我的本地计算机中的 /home/karim/testfolder 有一个测试文件夹,并且我想将其同步到 /home/karim。远程用户是“karim”,机器 IP 地址是 10.1.1.2。在终端上运行以下命令。
rsync -avr /home/karim/testfolder [email :/home/karim/
一旦执行此命令,就会要求您输入远程计算机的密码。
以下是同步目录后的示例输出。
当您想要将远程目录与本地目录同步时,命令应如下所示。
rsync [-options] username@IPAddressofRemoteHost:PathofSourceFolder PathofDestinationFolder
假设我们有一个位于 /home/karim/ 的远程文件夹“testfolder”,我想与位置 /home/karim/ 的本地计算机同步。远程机器IP地址是10.1.1.2,用户名是karim。
在终端上执行以下命令。
rsync -avr [email :/home/karim/ /home/karim/testfolder
以下是示例输出。
如何自动化备份
自动化备份更加方便,系统工程师无需担心每天手动执行命令和进行备份。
Linux 中有一个名为“crontab”的著名工具,用于自动执行备份过程。我们可以安排每天、每周或每月运行所有上述命令。如果您尚未在 Linux 发行版上安装 crontab,请使用 sudo 权限在终端上运行以下命令。
apt-get update
apt-get install cron
安装 crontab 后,在终端上运行以下命令以打开 crontab 编辑器。
crontab -e
示例输出应如下所示。
crontab 有以下五个字段,
m h dm m dw 命令
m:指定分钟(0-59)
h:指定小时(0-23)
dm:指定月份中的日期 (1-31)
m:指定月份(1-12)
dw:指定星期几(0-6,其中 0 是星期日)
让我们以前面将目录从一个磁盘同步到另一个磁盘的示例为例,假设我们希望每天中午 12 点执行此操作,则 cron 作业应如下所示。
0 0 * * * rsync -avr /media/hdd1/data-1 /media/hdd2/
假设您想在每个月的星期日中午 12 点进行备份,则 cron 作业应编写如下。
0 0 1 * * rsync -avr /media/hdd1/data-1 /media/hdd2/
结论
您已经阅读了如何使用极其强大的命令“rysnc”进行备份。我们用“crontab”结束了这篇文章。 “rsync”和“crontab”也是一个有用的组合。