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

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

一、简介

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

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

Linux 和 Unix 平台有很多备份工具。 同步 (Remote Sync) 被认为是最广泛使用和最受信任的备份工具之一。

2、在Linux中使用rsync备份文件和目录

使用 Rsync,我们可以,

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

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

第二种类型是仅备份或复制选择性文件和目录。 为了 example,您可以复制重要的配置文件或整个 $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 有许多高级选项。 看看以下 example:

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

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

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 调度程序来安排备份作业在特定日期的特定时间运行。

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

$ crontab -e

定义您的备份计划。 说为 example运行备份 每天凌晨 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 – 快速、安全、高效的备份应用程序