数据备份全攻略:从恢复到光盘存储
1. 恢复丢失或损坏的文件
在数据备份中,恢复丢失的文件至关重要。一个有效的备份系统不仅要在灾难发生时随时可用,还需对恢复计划进行测试,确保在最需要时能正常工作。
以下是一个用于恢复文件的脚本:
#!/bin/bash
dest=server1
user=$(whoami)
cd || exit 1
for file in "$@" ; do
rsync -aHPvz "${user}@${dest}:./${file}" "./${file}"
done
使用方法很简单,只需在命令行中运行该脚本,并将需要恢复的文件名作为参数传递。例如:
amy@desk12:~$ rm sales-plan-2006-10.sxw
amy@desk12:~$ ./backrestore sales-plan-2006-10.sxw
Password:
receiving file list ...
1 file to consider
sales-plan-2006-10.sxw
41285 100% 6.56MB/s 0:00:00 (1, 100.0% of 1)
sent 42 bytes received 39299 bytes 6052.46 bytes/sec
total size is 41285 speedup is 1.05
amy@desk12:~$
若要一次性恢复所有文件,可使用点号(
.
)作为文件名。
2. 自动化备份
可以使用类似上述脚本的方式,将其作为 cron 作业来实现自动化备份。不过,由于 SSH 需要输入用户密码,为了在用户不在场时(如凌晨 3 点)也能正常登录 SSH,需要将用户的公钥添加到 SSH 配置中。
创建备份有多种选择:
- 可以在服务器上每天或每周运行 cron 作业脚本,将数据备份到另一台服务器。
- 有远程办公室的企业可以通过互联网定期备份这些办公室的数据。
- 还可以将备份数据刻录到 CD - R、DVD 或磁带上,制作可异地存储的长期存档副本。
3. tar 归档文件
tar
命令可从一个或多个指定的文件或目录创建归档文件,也能列出归档内容或从中提取文件和目录。tar 归档文件也称为 tarfile 或 tarball。
与单独的文件目录相比,tar 归档文件有诸多优势:
- 使通过电子邮件发送整个目录变得更加容易。
- 对于包含大量相似文件的目录,对单个文件中的所有数据进行压缩时,压缩效率更高。
常见用途是辅助免费或开源软件的源程序文件分发。多数情况下,tar 归档文件会使用
gzip
或
bzip2
程序进行压缩。但如果要归档的所有文件已经是压缩格式(如音频、视频和 OpenOffice.org 文件),对归档文件本身进行压缩的效果不大。
常见的 tar 文件扩展名及含义如下:
| 扩展名 | 含义 |
| ---- | ---- |
|
.tar
| 未压缩的 tar 归档文件 |
|
.tar.gz
或
.tgz
| 使用
gzip
压缩程序压缩的 tar 归档文件 |
|
.tar.bz2
或
.tbz
| 使用
bzip2
压缩程序压缩的 tar 归档文件 |
tar
命令的语法为:
tar options arguments
,常用选项如下:
| 选项 | 含义 |
| ---- | ---- |
|
-b
| 指定块大小(默认单位为 512 字节) |
|
-c
| 创建(写入)新的归档文件 |
|
-f filename
| 从归档文件名读取或写入。如果省略文件名或为
-
,则将归档文件写入标准输出或从标准输入读取 |
|
-j
| 使用
bzip2
或
bunzip2
压缩或解压缩归档文件。使用
bzip2
压缩的归档文件通常有
.bz2
后缀 |
|
-p
| 保留文件权限 |
|
-t
| 列出现有归档文件中的文件 |
|
-v
| 创建或解包归档文件时,列出内容。与
-t
选项一起使用时,提供列出文件的更多详细信息 |
|
-x
| 从现有归档文件中提取(读取)文件 |
|
-z
| 使用
gzip
或
gunzip
压缩或解压缩归档文件。使用
gzip
压缩的归档文件通常有
.gz
后缀 |
3.1 创建新的归档文件
以下是一些归档
work - docs
目录的典型命令:
- 创建未压缩的归档文件
work - docs.tar
:
$ tar -cf work-docs.tar work-docs
-
创建使用
gzip压缩的归档文件work - docs.tar.gz:
$ tar -czf work-docs.tar.gz work-docs
-
创建使用
bzip2压缩的归档文件work - docs.tar.bz2:
$ tar -cjf work-docs.tar.bz2 work-docs
3.2 从归档文件中提取文件
在提取归档文件之前,应先列出并查看其内容,避免意外覆盖系统中的现有文件或造成文件混乱。通常,最好在计算机上创建一个新目录来提取 tar 归档文件,这样可以将提取的文件与其他文件分开,防止覆盖现有文件。
以下是一些示例命令:
- 列出
collection.tar
归档文件中的文件:
$ tar -tf collection.tar
-
详细列出
collection.tar.bz2归档文件中的文件:
$ tar -tvjf collection.tar.bz2
-
提取
collection.tar归档文件中的文件到当前目录,并保留原始权限:
$ tar -xpf collection.tar
-
提取
collection.tar.gz归档文件中的文件到当前目录,并保留原始权限:
$ tar -xpzf collection.tar.gz
-
提取
collection.tar.bz2归档文件中的文件到当前目录,并保留原始权限:
$ tar -xpjf collection.tar.bz2
-
列出并提取
collection.tar.bz2归档文件中的文件到当前目录,并保留原始权限:
$ tar -xpvjf collection.tar.bz2
3.3 完整的打包和解包示例
以下是一个完整的 shell 会话,展示了如何创建、列出和提取 tar 归档文件:
amy@desk12:~$ ls -dl monthly-reports
drwxr-xr-x 2 amy amy 4096 2006-08-11 14:15 monthly-reports
amy@desk12:~$ ls -l monthly-reports
total 228
-rw-r--r-- 1 amy amy 50552 2006-05-09 11:09 mr-2006-04.sxw
-rw-r--r-- 1 amy amy 51284 2006-06-06 15:44 mr-2006-05.sxw
-rw-r--r-- 1 amy amy 51428 2006-07-06 14:30 mr-2006-06.sxw
-rw-r--r-- 1 amy amy 54667 2006-08-07 10:06 mr-2006-07.sxw
amy@desk12:~$ tar -czf monthly-reports-aug.tar.gz monthly-reports
amy@desk12:~$ ls -l monthly-reports-aug.tar.gz
-rw-r--r-- 1 amy amy 199015 2006-08-14 12:46 monthly-reports-aug.tar.gz
amy@desk12:~$ tar -tzf monthly-reports-aug.tar.gz
monthly-reports/
monthly-reports/mr-2006-04.sxw
monthly-reports/mr-2006-05.sxw
monthly-reports/mr-2006-06.sxw
monthly-reports/mr-2006-07.sxw
amy@desk12:~$ tar -tvzf monthly-reports-aug.tar.gz
drwxr-xr-x amy/amy 0 2006-08-11 14:15:12 monthly-reports/
-rw-r--r-- amy/amy 50552 2006-05-09 11:09:12 monthly-reports/mr-2006-04.sxw
-rw-r--r-- amy/amy 51284 2006-06-06 15:44:33 monthly-reports/mr-2006-05.sxw
-rw-r--r-- amy/amy 51428 2006-07-06 14:30:19 monthly-reports/mr-2006-06.sxw
-rw-r--r-- amy/amy 54667 2006-08-07 10:06:57 monthly-reports/mr-2006-07.sxw
amy@desk12:~$ mkdir extract.dir
amy@desk12:~$ cd extract.dir
amy@desk12:~/extract.dir$ tar -xzf ../monthly-reports-aug.tar.gz
amy@desk12:~/extract.dir$ tar -xvzf ../monthly-reports-aug.tar.gz
monthly-reports/
monthly-reports/mr-2006-04.sxw
monthly-reports/mr-2006-05.sxw
monthly-reports/mr-2006-06.sxw
monthly-reports/mr-2006-07.sxw
amy@desk12:~/extract.dir$ tar -xvvzf ../monthly-reports-aug.tar.gz
drwxr-xr-x amy/amy 0 2006-08-11 14:15:12 monthly-reports/
-rw-r--r-- amy/amy 50552 2006-05-09 11:09:12 monthly-reports/mr-2006-04.sxw
-rw-r--r-- amy/amy 51284 2006-06-06 15:44:33 monthly-reports/mr-2006-05.sxw
-rw-r--r-- amy/amy 51428 2006-07-06 14:30:19 monthly-reports/mr-2006-06.sxw
-rw-r--r-- amy/amy 54667 2006-08-07 10:06:57 monthly-reports/mr-2006-07.sxw
amy@desk12:~/extract.dir$ cd
amy@desk12:~$
4. 在光盘介质上保存文件
可记录的 CD 和 DVD 介质(如 CD - R、DVD - R 和 DVD + R)能以方便、紧凑的形式保存文件,可用于异地存储备份,也可向用户或客户分发软件或数据。CD - R 可容纳 700 MB 以上的数据,DVD - R 或 DVD + R 可容纳 4.7 GB 以上的数据,还有容量为 8.55 GB 的双层 DVD + R。
4.1 访问 CD - R 驱动器
Linux 通过
ide - scsi
驱动程序支持在 IDE ATAPI CD - R 驱动器上进行刻录。大多数 Linux 发行版的内核中包含此驱动程序。若系统没有该驱动程序,需要加载驱动模块(必要时进行安装),或者可能需要重新编译内核。
使用以下命令列出系统上的 SCSI 设备,以找到 CD - R 驱动器的模拟 SCSI 设备编号:
# cdrecord -scanbus
输出结果示例如下:
Cdrecord-Clone 2.01 (i686-pc-linux-gnu) Copyright (C) 1995-2004 Jörg Schilling
scsidev: 'ATA'
devname: 'ATA'
scsibus: -2 target: -2 lun: -2
Linux sg driver version: 3.5.27
Using libscg version 'schily-0.8'.
scsibus1:
1,0,0 100) 'SONY ' 'CD-RW CRX195E1 ' 'ZYS5' Removable CD-ROM
1,1,0 101) 'DVD-16X ' 'DVD-ROM BDV316E ' '0052' Removable CD-ROM
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) *
1,6,0 106) *
1,7,0 107) *
若
ide - scsi
驱动程序未安装或未激活,可能会得到如下输出:
Cdrecord-Clone 2.01 (i686-pc-linux-gnu) Copyright (C) 1995-2004 Jörg Schilling
cdrecord: No such file or directory. Cannot open '/dev/pg*'. Cannot open SCSI driver.
cdrecord: For possible targets try 'cdrecord -scanbus'.
cdrecord: For possible transport specifiers try 'cdrecord dev=help'.
cdrecord:
cdrecord: For more information, install the cdrtools-doc
cdrecord: package and read /usr/share/doc/cdrecord/README.ATAPI.setup .
遇到这种情况,需要在实际刻录之前激活
ide - scsi
驱动程序。
4.2 设置默认值
可以配置多个
cdrecord
参数,例如配置
cdrecord
识别刻录设备的名称,指定默认设备。配置步骤如下:
1. 以 root 用户登录(或使用
su -
切换到 root 用户)。
2. 使用编辑器创建文本文件:
# vi /etc/default/cdrecord
-
根据
cdrecord - scanbus输出的设备信息,在文件中添加以下内容(需根据自己的设备信息修改):
CDR_DEVICE=cd
cd=1,0,0 -1 -1 ""
dvd=1,1,0 -1 -1 ""
如果 Linux 内核是 2.6 版本,由于驱动程序重新设计,可能需要在设备前加上
ATA:
前缀,配置文件可能如下:
CDR_DEVICE=cd
cd=ATA:1,0,0 -1 -1 ""
dvd=ATA:1,1,0 -1 -1 ""
还可以在设备编号后设置每个设备的默认刻录速度,
-1
表示使用默认值。下一个数字是 FIFO 缓冲区大小,同样
-1
指定 Linux 系统上的默认值。行中的最后一项允许传递特定于驱动程序的选项,这里留空。较新的
cdrecord
版本支持
driveropts = burnfree
选项,以防止缓冲区欠载。
4.3 准备要刻录到 CD - R 的文件
mkisofs
命令用于创建 ISO 文件系统映像文件,该文件应包含要刻录到 CD - R 的所有文件。常用选项如下:
| 选项 | 含义 |
| ---- | ---- |
|
-J
| 包含 Joliet 名称以实现 Windows 兼容性 |
|
-r
| 包含 Rock Ridge 名称以实现 Unix/Linux 兼容性 |
|
-v
| 设置详细模式以显示进度状态 |
|
-V id_string
| 指定要创建的光盘的卷 ID |
|
-o filename
| 指定要创建的 ISO 映像的文件名 |
示例命令,将指定目录中的所有文件包含在 ISO 映像中:
# mkisofs -JrvV "disc name" -o backup.iso /home/amy
该命令会有大量输出,对于大型文件集合,输出有助于估计剩余时间。如果不想看到这些输出,可省略
-v
选项。
4.4 刻录 CD - R
使用创建好的 ISO 映像刻录 CD - R,步骤如下:
1. 以 root 用户登录(或使用
su -
切换到 root 用户),因为
cdrecord
程序需要 root 权限才能访问原始 SCSI 层、修改进程优先级以及将缓冲区空间锁定到 RAM 中以避免交换。
2. 如果使用的是 CD - RW 驱动器中的可重写 CD - RW 光盘,在刻录前需要擦除(清空)光盘:
# cdrecord blank=fast padsize=63s -pad -dao -v -eject
部分驱动器需要弹出介质以重置驱动器进行下一次操作,除非确定驱动器不需要此操作,否则应使用
-eject
选项。
3. 刻录上一步创建的 ISO 映像:
# cdrecord padsize=63 -pad -dao -v -eject backup.iso
在刻录 CD 或 DVD 时,应避免在计算机上进行其他工作。一些现代驱动器具有
burnfree
等特殊功能,可在计算机运行速度不够快时避免问题,但使用这些修复功能刻录的光盘可能与一些旧设备不兼容。如果发现刻录有时失败,可降低刻录速度,可通过
speed =
选项更改速度,该选项在
cdrecord
手册页中有详细说明。对于刻录网络文件系统上的映像文件,降低刻录速度尤为重要。
此外,一些 IDE ATAPI CD 读取器需要填充才能与 Linux 和其他系统通常进行的预读操作正常工作。虽然省略填充在较新的驱动器上可能可行,但由于问题出现在读取阶段,为确保旧驱动器能够读取刻录的 CD - R,应包含填充。否则,可能会发现关键备份文件在临时替换计算机上无法读取。
综上所述,数据备份和恢复是一个复杂但重要的过程,涉及到多种技术和工具。通过合理运用
rsync
、
tar
和光盘刻录等方法,可以有效地保护数据的安全和可用性。
数据备份全攻略:从恢复到光盘存储(续)
5. 总结与注意事项
在数据备份和恢复的过程中,我们使用了多种工具和方法,每个环节都有其重要性和需要注意的地方。下面是对前面内容的总结以及一些额外的注意事项。
5.1 恢复丢失或损坏文件总结
- 脚本使用 :使用自定义的恢复脚本可以方便地从服务器恢复单个或所有文件。脚本如下:
#!/bin/bash
dest=server1
user=$(whoami)
cd || exit 1
for file in "$@" ; do
rsync -aHPvz "${user}@${dest}:./${file}" "./${file}"
done
- 自动化备份 :通过 cron 作业实现自动化备份时,要确保 SSH 配置中包含用户的公钥,以实现无密码登录。不同的备份场景(如远程办公室、长期存档)可以选择不同的备份方式。
5.2 tar 归档总结
- 优势 :tar 归档文件便于文件传输和压缩,适用于软件分发等场景。
-
常用选项
:记住
-c用于创建归档文件,-x用于提取文件,这两个选项容易混淆。常见的压缩格式有.tar.gz和.tar.bz2。 -
操作流程
:创建归档文件时使用
-c选项,提取文件前先使用-t选项查看内容,提取时使用-x选项并可根据需要添加-p保留文件权限。
5.3 光盘存储总结
- 介质选择 :CD - R、DVD - R 和 DVD + R 各有容量特点,根据数据量选择合适的介质。
-
驱动器访问
:Linux 中使用
ide - scsi驱动程序支持 CD - R 刻录,使用cdrecord -scanbus命令查找驱动器编号。 -
配置与准备
:配置
cdrecord参数指定默认设备和刻录速度,使用mkisofs命令创建 ISO 映像文件。 - 刻录过程 :刻录时需要 root 权限,对于 CD - RW 光盘需要先擦除,注意填充和刻录速度的设置。
6. 备份流程可视化
为了更清晰地展示整个备份和恢复的流程,我们可以使用 mermaid 流程图来进行可视化。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(数据备份):::process
B --> C{选择备份方式}:::decision
C -->|服务器备份| D(使用 rsync 脚本):::process
C -->|tar 归档| E(使用 tar 命令):::process
C -->|光盘存储| F(准备光盘介质):::process
D --> G(自动化备份配置):::process
E --> H(选择压缩格式):::process
F --> I(访问 CD - R 驱动器):::process
H --> J(创建归档文件):::process
I --> K(配置 cdrecord 参数):::process
J --> L(存储归档文件):::process
K --> M(使用 mkisofs 创建 ISO 映像):::process
M --> N(刻录 CD - R):::process
L --> O(数据恢复准备):::process
N --> O
O --> P{恢复方式选择}:::decision
P -->|单个文件恢复| Q(使用恢复脚本):::process
P -->|tar 归档恢复| R(使用 tar 提取):::process
Q --> S([结束]):::startend
R --> S
这个流程图展示了从数据备份到恢复的整个过程,包括不同的备份方式和恢复方式。通过这个流程图,可以更直观地理解各个步骤之间的关系。
7. 常见问题与解决方案
在进行数据备份和恢复的过程中,可能会遇到一些常见的问题,下面为大家提供相应的解决方案。
| 问题 | 解决方案 |
|---|---|
rsync
恢复时需要输入密码
| 确保 SSH 配置中包含用户的公钥,实现无密码登录。 |
tar
归档文件压缩效果不佳
| 检查要归档的文件是否已经是压缩格式,如果是则无需再次压缩。 |
cdrecord -scanbus
无法找到 CD - R 驱动器
|
检查
ide - scsi
驱动程序是否安装和激活,必要时加载驱动模块或重新编译内核。
|
| 刻录 CD - R 失败 | 检查是否有足够的权限(需要 root 权限),是否正确擦除 CD - RW 光盘,尝试降低刻录速度。 |
| 恢复文件时覆盖现有文件 |
在提取 tar 归档文件前,先使用
-t
选项查看内容,最好创建新目录进行提取。
|
8. 总结
数据备份和恢复是保障数据安全和可用性的重要手段。通过本文介绍的方法,我们可以使用
rsync
进行服务器备份,使用
tar
进行文件归档,以及使用光盘介质进行长期存储。每个步骤都有其特定的操作和注意事项,我们需要根据实际情况选择合适的备份方式和恢复方法。
同时,通过可视化流程图和常见问题解决方案,我们可以更清晰地理解整个过程,并在遇到问题时能够快速解决。希望本文能够帮助大家更好地进行数据备份和恢复工作,确保数据的安全和可靠。
超级会员免费看
63

被折叠的 条评论
为什么被折叠?



