如何在 Linux 中使用 Rsync 备份文件和目录

正在寻找可靠且强大的解决方案来备份 Linux 中的数据? 同步 让你得到保障! 本指南将引导您完成在 Linux 中使用 Rsync 备份文件和目录的步骤。

内容

  1. 一、简介
  2. 2.在Linux中使用Rsync备份文件和目录
    1. 2.1. 选择存储介质
    2. 2.3. 使用 Rsync 备份文件
    3. 2.4. 使用 Rsync 备份目录
      1. 2.4.1. 使用 Rsync 备份 HOME 目录
      2. 2.4.2. 创建备份脚本
      3. 2.4.3. 创建别名
  3. 3. 定时备份
  4. 4. Rsync 图形前端
  5. 5. 结论

一、简介

如果考虑到一切正常,您从不备份数据,那么我会说您错了。

问问那里的任何 Linux 用户,他们都会分担不备份系统/数据的痛苦。 作为一个新手,我犯过一次这样的错误,并了解到备份的重要性。

有许多适用于 Linux 和 Unix 平台的备份工具。 同步 (Remote Sync) 被认为是最广泛使用和值得信赖的备份工具之一。

2.在Linux中使用Rsync备份文件和目录

使用 Rsync,我们可以,

  1. 备份整个系统,
  2. 或备份单个文件和目录。

在第一种类型中,我们将整个 Linux 文件系统复制到外部设备或网络共享。 如果出现任何系统故障,您可以使用此副本将机器恢复到其原始状态。

第二种类型是仅备份或复制选择性文件和目录。 例如,您可以复制重要的配置文件或整个 $HOME 目录,并排除其他所有内容。

我们已经向您展示了如何 使用 Rsync 备份整个 Linux 系统. 本指南重点介绍在 Linux 中使用 Rsync 选择性备份文件和目录。

2.1. 选择存储介质

第一步,确定要备份数据的位置。 这是非常重要的!

您可以将数据备份到外部硬盘, Cloud 存储或网络附加存储 (NAS)。 一个简单而便宜的选择是使用外部硬盘。

如果您的机器中有两个独立的驱动器,您可以使用其中任何一个驱动器来备份您的数据,因为它们不会同时出现故障。

笔记:

如果您认真对待备份,请不要将备份放在同一个驱动器中。 始终使用外部驱动器、辅助驱动器、网络共享和云存储等。

出于演示目的,我将使用 1 TB 本指南中的外部硬盘。

2.3. 使用 Rsync 备份文件

Rsync 将数据从一个位置复制到另一个位置的一般语法是:

rsync [OPTION…] SRC… [DEST]

这里,

  • OPTION – Rsync 选项列表
  • SRC – 源文件/目录
  • DEST – 目的地

这是一个简单的 Rsync 命令,用于将文件从本地系统本身的一个位置备份或复制到另一个位置。

$ rsync src_file dest_file

例子:

$ rsync -auv ostechnix.txt ostechnix-bak.txt

这里,

  • -a – 存档模式模式(维护文件属性和符号链接)
  • -u – 跳过接收端较新的文件。
  • -v – 详细模式

以上命令保存备份文件 ostechnix-bak.txt 当前目录下的文件。 您还可以指定不同的目标目录,如下所示:

$ rsync -auv ostechnix.txt Downloads/ostechnix-bak.txt

如果不指定目标文件名,Rsync 将使用与目标文件相同的源文件名。

将备份文件保存在同一个磁盘中实际上并不是备份。 您必须将备份数据保存在外部驱动器或网络共享上,或者至少保存在不同的分区中。

例如,以下命令将文件备份到我的外部驱动器:

$ rsync -auv ostechnix.txt /media/karthick/"My Passport"/

Rsync 有许多高级选项。 看看下面的例子:

$ rsync -azvhP ostechnix.txt /media/karthick/"My Passport"/

此命令以存档(以保留属性)和压缩(zipped)模式传输文件,并带有详细且人类可读的进度条。

2.4. 使用 Rsync 备份目录

您可以将所有文件放在一个目录中并使用 Rsync 备份该目录,而不是备份单个文件。 这在镜像和同步数据时会派上用场。

出于本指南的目的,我将向您展示如何使用 Rsync 备份 HOME 目录。

2.4.1. 使用 Rsync 备份 HOME 目录

rsync 是一个增量文件复制工具。 含义 – 它只同步源目录中的新数据或修改过的数据(即 /home 在我们的例子中)而不是从头开始再次同步所有数据。

备份我的 $HOME 目录到我的外部驱动器,我使用了以下命令:

$ rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/

让我们分解上面的命令,看看每个选项的作用。

  • 旗帜 -a 是许多选项的组合。 此标志负责递归复制并保留文件/目录权限、所有者等属性。
  • 旗帜 -v 将启用详细模式,当您运行 rsync 命令时,它将在终端中提供更多日志。
  • 旗帜 -x 将限制 rsync 同步文件系统边界内的数据。 如果您在主目录中挂载了任何文件系统,这些文件系统将在同步操作期间被跳过。
  • 旗帜 -P 是两个标志的组合。 它将显示每次同步的进度并保留部分传输的文件。
  • 旗帜 --delete 将删除源中不可用但目标中可用的所有目录和文件。 你必须非常小心 使用标志时。
  • 旗帜 --exclude-from=File 接受一个文件作为参数。 此文件包含将被 rsync 忽略的文件和目录列表。

我创建了一个名为 ignore_list.txt 其中包含需要排除的文件和目录。

在上面的命令中,这部分 --exclude-from=/home/karthick/Work/Backup/ignore_list.txt 定义排除列表。

这里是内容 ignore_list.txt 文件:

排除清单

要从上图中排除的项目列表是我个人的选择,可能因您而异。 根据您的环境修改参数。

上述 Rsync 命令的最后两部分是源位置和目标位置。 就我而言,源是我的 $HOME 目录,目标是我的外部驱动器。 根据您的环境替换源和目标。

当心: 如果您想知道外部驱动器的安装点,请运行 lsblk 命令。

$ lsblk  sdb             8:16   0 931.5G  0 disk   └─sdb1          8:17   0 931.5G  0 part  /media/karthick/My Passport

在运行之前 rsync 命令第一次,总是建议做一个 试运行. 试运行将模拟将进行的更改。 使用相同的命令,但使用 -n 旗帜。

$ rsync -avxP -n --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/

示例输出:

 sending incremental file list  karthick/  karthick/.bash_history          20,527 100%    0.00kB/s    0:00:00 (xfr#1, ir-chk=1056/1060) karthick/.shutter/ karthick/.shutter/drawingtool.xml             228 100%    4.54kB/s    0:00:00 (xfr#2, ir-chk=1037/1060) karthick/.shutter/profiles/ karthick/Pictures/ karthick/Pictures/Selection_001.png          37,626 100%  349.94kB/s    0:00:00 (xfr#3, to-chk=47/3001) karthick/Pictures/Selection_002.png          25,815 100%  227.12kB/s    0:00:00 (xfr#4, to-chk=46/3001) karthick/Pictures/Selection_003.png          63,275 100%  532.69kB/s    0:00:00 (xfr#5, to-chk=45/3001) karthick/Pictures/Selection_004.png          77,965 100%  581.20kB/s    0:00:00 (xfr#6, to-chk=44/3001) karthick/Pictures/Selection_005.png          75,863 100%  532.99kB/s    0:00:00 (xfr#7, to-chk=43/3001) karthick/Pictures/Selection_006.png          11,628 100%   75.20kB/s    0:00:00 (xfr#8, to-chk=42/3001) karthick/Pictures/Selection_007.png          24,311 100%  150.26kB/s    0:00:00 (xfr#9, to-chk=41/3001) karthick/Work/Backup/ karthick/Work/Backup/home_dir_backup.sh             764 100%    4.34kB/s    0:00:00 (xfr#10, to-chk=20/3001) karthick/Work/Backup/home_dir_backup.sh~             796 100%    4.37kB/s    0:00:00 (xfr#11, to-chk=19/3001) karthick/Work/Backup/ignore_list.txt             182 100%    1.00kB/s    0:00:00 (xfr#12, to-chk=18/3001) karthick/Work/Backup/ignore_list.txt~             182 100%    1.00kB/s    0:00:00 (xfr#13, to-chk=17/3001) ... ... ... sent 88,424 bytes  received 9,459 bytes  195,766.00 bytes/sectotal size is 3,028,935,519  speedup is 30,944.45 (DRY RUN)

如果一切顺利,请删除 -n 标记并运行命令来备份您的数据。

$ rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/

根据大小,第一次运行需要一些时间。

sending incremental file list karthick/ karthick/.bash_history          20,527 100%    0.00kB/s    0:00:00 (xfr#1, ir-chk=1056/1060) karthick/.shutter/ karthick/.shutter/drawingtool.xml             228 100%    4.54kB/s    0:00:00 (xfr#2, ir-chk=1037/1060) karthick/.shutter/profiles/ karthick/Pictures/ karthick/Pictures/Selection_001.png          37,626 100%  349.94kB/s    0:00:00 (xfr#3, to-chk=47/3001) karthick/Pictures/Selection_002.png          25,815 100%  227.12kB/s    0:00:00 (xfr#4, to-chk=46/3001) karthick/Pictures/Selection_003.png          63,275 100%  532.69kB/s    0:00:00 (xfr#5, to-chk=45/3001) karthick/Pictures/Selection_004.png          77,965 100%  581.20kB/s    0:00:00 (xfr#6, to-chk=44/3001) karthick/Pictures/Selection_005.png          75,863 100%  532.99kB/s    0:00:00 (xfr#7, to-chk=43/3001) karthick/Pictures/Selection_006.png          11,628 100%   75.20kB/s    0:00:00 (xfr#8, to-chk=42/3001) karthick/Pictures/Selection_007.png          24,311 100%  150.26kB/s    0:00:00 (xfr#9, to-chk=41/3001) karthick/Work/Backup/ karthick/Work/Backup/home_dir_backup.sh             764 100%    4.34kB/s    0:00:00 (xfr#10, to-chk=20/3001) karthick/Work/Backup/home_dir_backup.sh~             796 100%    4.37kB/s    0:00:00 (xfr#11, to-chk=19/3001) karthick/Work/Backup/ignore_list.txt             182 100%    1.00kB/s    0:00:00 (xfr#12, to-chk=18/3001) karthick/Work/Backup/ignore_list.txt~             182 100%    1.00kB/s    0:00:00 (xfr#13, to-chk=17/3001)… … … sent 3,029,863,865 bytes  received 51,335 bytes  53,626,817.70 bytes/sec total size is 3,028,934,994  speedup is 1.00

2.4.2. 创建备份脚本

记住一个冗长的命令可能很难。 为了避免输入长 rsync 命令,您可以创建一个简单的 BASH 脚本并在您想要启动备份时调用它。

创建一个名为的脚本 home_dir_backup.sh

$ nano home_dir_backup.sh

添加以下几行:

#!/usr/bin/env bash  # PURPOSE : RSYNC COMMAND TO BACKUP MY HOME DIRECTORY TO EXTERNAL DEVICE.. # REPLACE SOURCE, DESTINATION AND EXCLUDE ACCORDING TO YOUR ENVIRONMENT.  rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/

根据您的要求添加、删除或更改 Rsync 选项。 还可以使用自己的方式更改源路径和目标路径。 Save 和 close 文件。

使脚本可执行:

$ chmod +x <path-to-home_dir_backup.sh>

现在随时运行脚本以启动 $HOME 目录备份:

$ ./path-to-home_dir_backup.sh

使用较短的脚本名称以轻松记住它。

您还可以创建一个 软链接 对于脚本文件 /usr/bin 或任何特定于用户的目录 $PATH 多变的。

2.4.3. 创建别名

避免键入长命令的另一种方法是使用 别名.

编辑您的 ~/.bashrc 文件并在最后添加以下行:

alias backup="rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick / media/karthick/"My Passport"/"

来源 bashrc 文件以使更改立即生效:

$ source ~/.bashrc

现在只需运行以下命令来备份 $HOME 目录:

$ backup

由您决定要使用什么。 您可以创建别名或创建脚本并通过触发脚本运行 rsync。 就我而言,我创建了一个脚本,然后为该脚本创建了一个别名。

3. 定时备份

您可以使用 cron scheduler 安排备份作业在特定日期的特定时间运行。

使用命令编辑当前用户的 cron 作业

$ crontab -e

定义您的备份计划。 比如说,运行备份 每天凌晨 3 点,使用以下行:

0 3 * * * <rsync-command-to-execute>

根据您的要求,您可以安排每天、每周或每月的工作。

如果您不熟悉 Cron Jobs,我们已经编制了一份有用的 cron 作业示例列表,用于在 Linux 中安排任务。 有关 cron 使用的更多详细信息,请参阅以下指南。

  • Cron 作业的初学者指南

4. Rsync 图形前端

如果您是 Linux 新手,您可能会发现很难理解所有 Rsync 选项和标志。 不用担心! 有一些用于 Rsync 的图形前端工具可用。 一种这样的工具是 同步.

Grsync 是 Rsync 的简单图形用户界面。 您不必记住任何 Rsync 命令及其选项。 您可以通过易于使用的 GUI 完成所有操作。

有关更多详细信息,请参阅以下指南:

  • Grsync – Rsync 的简单图形前端

5. 结论

在本指南中,我们研究了如何在 Linux 中使用 Rsync 备份文件和目录。 如您所见,使用 Rsync 复制文件和目录非常简单!

我们还向您展示了如何使用 rsync 命令备份您的主目录以及运行和调度它的一些方法。

这种方法也可以应用于Linux中的任何目录或文件结构来备份数据。 如果您认为自己有更好的备份解决方案,我们很乐意通过下面的评论部分听取您的意见。

相关阅读:

  • 使用 Rsync 通过 SSH 恢复部分传输的文件
  • 如何在 Linux 中使用 Deja Dup 备份和恢复文件
  • 如何使用 Rsnapshot 设置备份服务器
  • 如何在 Linux 上使用 Unison 同步文件
  • 如何在 Linux 中同步本地和远程目录
  • 如何使用 Zaloha.sh 同步文件和目录
  • CYA – Linux 系统快照和还原实用程序
  • Restic – 快速、安全和高效的备份应用程序

备份目录备份文件备份工具命令行工具复制目录复制文件文件备份开源远程同步Rsync同步文件