## 20.3 备份要点
备份是个很重要的工作,很多人总是在系统损毁的时候才在哀嚎说:“我的数据啊!天那...!”此时才会发现备份数据的可爱! 但是备份其实也非常可怕!因为你的重要数据都在备份文件里面,如果这个备份被窃取或遗失,其实对你的系统资安影响也非常大! 同时,备份使用的媒体选择也非常多样,但是各种储存媒体各有其功能与优劣,所以当然得要选择啰!闲话少说,来谈谈备份吧!
### 20.3.1 备份数据的考虑
老实说,备份是系统损毁时等待救援的救星!因为你需要重新安装系统时, 备份的好坏会影响到你系统复原的进度!不过,我们想先知道的是,系统为什么会损毁啊?是人为的还是怎样产生的啊? 事实上,系统有可能由于不预期的伤害而导致系统发生错误! 什么是不预期的伤害呢?这是由于系统可能因为不预期的硬件损坏,例如硬盘坏掉等等,或者是软件问题导致系统出错, 包括人为的操作不当或是其他不明因素等等所致。下面我们就来谈谈系统损坏的情况与为何需要备份吧!
* 造成系统损毁的问题-硬件问题
基本上,“计算机是一个相当不可靠的机器”这句话在大部分的时间内还是成立的! 常常会听到说“要计算机正常的工作,最重要的是要去拜拜!”嘿嘿!不要笑!这还是真的哩! 尤其是在日前一些计算机周边硬件的生产良率 (就是将硬件产生出来之后,经过测试, 发现可正常工作的与不能正常工作的硬件总数之比值) 越来越差的情况之下,计算机的不稳定状态实在是越来越严重了!
一般来说,会造成系统损毁的硬件元件应该要算硬盘吧!因为其他的元件坏掉时,虽然会影响到系统的运行, 不过至少我们的数据还是存在硬盘当中的啊!为了避免这个困扰,于是乎有可备份用的 RAID1, RAID5, RAID6 等磁盘阵列的应用啊!但是如果是 RAID 控制芯片坏掉呢?这就麻烦了~所以说,如果有 RAID 系统时, 鸟哥个人还是觉得需要进行额外的备份才好的!如果数据够重要的话。
* 造成系统损毁的问题-软件与人的问题
根据分析,其实系统的软件伤害最严重的就属使用者的操作不当啦!像以前 Google 还没有这么厉害时, 人们都到讨论区去问问题,某些高手高手高高手被小白烦的不胜其扰,总是会回答:“喔!你的系统有问题喔!那请 rm -rf / 看看出现什么状况! 做完再回来!”...你真的做下去就死定了!如果你的系统有这种小白管理员呢?敢不备份喔?
软件伤害除了来自主机上的使用者操作不当之外,最常见的可能是资安攻击事件了。 假如你的 Linux 系统上面某些 Internet 的服务软件是最新的!这也意味着可能是“相对最安全的”, 但是,这个世界目前的闲人是相当多的,你不知道什么时候会有所谓的“骇客软件”被提供出来,万一你在 Internet 上面的服务程序被攻击,导致你的 Linux 系统全毁,这个时候怎么办?当然是要复原系统吧?
那如何复原被伤害的系统呢?“重新安装就好啦!”或许你会这么说, 但是,像鸟哥管理的几个网站的数据,尤其是 MySQL 数据库的数据,这些都是弥足珍贵的经验数据, 万一被损毁而救不回来的时候,不是很可惜吗?这个还好哩,万一你是某家银行的话, 那么数据的损毁可就不是能够等闲视之的!关系的可是数千甚至上万人的身家财产!这就是备份的重要性了! 他可以最起码的稍微保障我们的数据有另外一份 copy 的备援以达到“安全回复”的基本要求!
* 主机角色不同,备份任务也不同
由于软硬件的问题都可能造成系统的损毁,所以备份当然就很重要啦!问题是,每一部主机都需要备份吗? 多久备份一次呢?要备份什么数据呢?
早期有 ghost 这套单机备份软件,近期以来有台湾国家高速网络中心发展的再生龙 (clonzilla) 软件, 这些软件的共同特性就是可以将你系统上面的磁盘数据完整的复制起来,变成一个大文件,你可以通过现在便宜到爆炸的 USB 外接磁盘来备份出来, 未来复原时,只要将 USB 安插到系统里面,就几乎可以进行裸机复原了哩!
但是,万一你的主机有提供 Internet 方面的服务呢?又该如何备份啊?举个例子来说,像是我们 Study Area 团队的讨论区网站 [http://phorum.study-area.org](http://phorum.study-area.org/) 提供的是类似 BBS 的讨论文章, 虽然数据量不大,但是由于讨论区的文件是天天在增加的,每天都有相当多的信息流入, 由于某些信息都是属于重要的人物之留言,这个时候,我们能够让机器死掉吗?或者是能够一季三个月才备份一次吗? 这个备份频率需求的考虑是非常重要的!
再提到 2002 年左右鸟哥的讨论区曾经挂点的问题,以及 2003 年初 Study-Area 讨论区挂点的问题,讨论区一旦挂点的话,该数据库内容如果损毁到无法救回来, 嘿嘿!要晓得讨论区可不是一个人的心血耶!有的时候 (像 Study-Area 讨论区) 是一群热心 Linux 的朋友们互相创建交流起来的数据流通网,如果死掉了,那么不是让这些热血青年的热情付之一炬了吗? 所以啰,创建备份的策略 (频率、媒体、方法等) 是相当的重要的。
* 备份因素考虑
由于计算机 (尤其是目前的计算机,操作频率太高、硬件良率太差、使用者操作习惯不良、 “某些”操作系统的当概率太高....) 的稳定性较差,所以啰!备份的工作就越来越重要了! 那么一般我们在备份时考虑的因素有哪些呢?
* 备份哪些文件:
哪些数据对系统或使用者来说是重要的?那些数据就是值得备份的数据!例如 /etc/* 及 /home/* 等。
* 选择什么备份的媒介:
是可读写光盘、另一颗硬盘、同一颗硬盘的不同 partition、还是使用网络备援系统? 哪一种的速度最快,最便宜,可将数据保存最久?这都可以考虑的。
* 考虑备份的方式:
是以完整备份(类似 ghost)来备份所有数据,还是使用差异备份仅备份有被更动过的数据即可?
* 备份的频率:
例如 Mariadb 数据库是否天天备份、若完整备份,需要多久进行一次?
* 备份使用的工具为何:
是利用 tar 、 cpio 、 dd 还是 dump 等等的备份工具?
下面我们就来谈一谈这些问题的解决之道吧! ^_^
### 20.3.2 哪些 Linux 数据具有备份的意义
一般来说,鸟哥比较喜欢备份最重要的文件而已 (关键数据备份),而不是整个系统都备份起来 (完整备份, Full backup)!那么哪些文件是有必要备份的呢?具有备份意义的文件通常可以粗分为两大类,一类是系统基本设置信息、一类则是类似网络服务的内容数据。 那么各有哪些文件需要备份的呢?我们就来稍微分析一下。
* 操作系统本身需要备份的文件:
这方面的文件主要跟“帐号与系统配置文件”有关系! 主要有哪些帐号的文件需要备份呢?就是 /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow, /home 下面的使用者主文件夹等等, 而由于 Linux 默认的重要参数文件都在 /etc/ 下面,所以只要将这个目录备份下来的话, 那么几乎所有的配置文件都可以被保存的!
至于 /home 目录是一般用户的主文件夹,自然也需要来备份一番!再来,由于使用者会有邮件吧!所以呢,这个 /var/spool/mail/ 内容也需要备份呦!另外,由于如果你曾经自行更动过核心,那么 /boot 里头的信息也就很重要啰!所以啰,这方面的数据你必须要备份的文件为:
* /etc/ 整个目录
* /home/ 整个目录
* /var/spool/mail/
* /var/spoll/{at|cron}/
* /boot/
* /root/
* 如果你自行安装过其他的软件,那么 /usr/local/ 或 /opt 也最好备份一下!
* 网络服务的数据库方面:
这部份的数据可就多而且复杂了,首先是这些网络服务软件的配置文件部分, 如果你的网络软件安装都是以原厂提供的为主,那么你的设置文件大多是在 /etc 下面,所以这个就没啥大问题!但若你的套件大多来自于自行的安装,那么 /usr/local 这个目录可就相当的重要了!
再来,每种服务提供的数据都不相同,这些数据很多都是人们提供的!举例来说,你的 WWW 服务器总是需要有人提供网页文件吧?否则浏览器来是要看啥咚咚?你的讨论区总是得要写入数据库系统吧? 否则讨论的数据如何更新与记载?所以,使用者主动提供的文件,以及服务运行过程会产生的数据, 都需要被考虑来备份。若我们假设我们提供的服务软件都是使用原厂的 RPM 安装的!所以要备份的数据文件有:
* 软件本身的设置文件,例如:/etc/ 整个目录,/usr/local/ 整个目录
* 软件服务提供的数据,以 WWW 及 Mariadb 为例:
WWW 数据:/var/www 整个目录或 /srv/www 整个目录,及系统的使用者主文件夹
Mariadb : /var/lib/mysql 整个目录
* 其他在 Linux 主机上面提供的服务之数据库文件!
* 推荐需要备份的目录:
由上面的介绍来看的话,如果你的硬件或者是由于经费的关系而无法全部的数据都予以备份时, 鸟哥建议你至少需要备份这些目录呦!
* /etc
* /home
* /root
* /var/spool/mail/, /var/spool/cron/, /var/spool/at/
* /var/lib/
* 不需要备份的目录:
有些数据是不需要备份的啦!例如我们在[第五章文件权限与目录配置](../Text/index.html)里头提到的 /proc 这个目录是在记录目前系统上面正在跑的程序,这个数据根本就不需要备份的呢!此外,外挂的机器,例如 /mnt 或 /media 里面都是挂载了其他的硬盘设备、光驱、软盘机等等,这些也不需要备份吧? 所以啰!下面有些目录可以不需要备份啦!
* /dev :这个随便你要不要备份
* /proc, /sys, /run:这个真的不需要备份啦!
* /mnt, /media:如果你没有在这个目录内放置你自己系统的东西,也不需要备份
* /tmp :干嘛存暂存盘!不需要备份!
### 20.3.3 备份用储存媒体的选择
用来储存备份数据的媒体非常的多样化,那该如何选择呢?在选择之前我们先来讲个小故事先!
* 一个实际发生的故事
在备份的时候,选择一个“数据存放的地方”也是很需要考虑的一个因素! 什么叫做数据存放的地方呢?讲个最简单的例子好了,我们知道说,较为大型的机器都会使用 tape 这一种磁带机来备份数据,早期如果是一般个人计算机的话,很可能是使用类似 Mo 这一种可读写式光盘片来存取数据!近来因为 USB 界面的大容量磁盘机越来越便宜且速度越来越快, 所以几乎取代了上述的总总储存媒体了!但是你不要忘记了几个重要的因素,那就是万一你的 Linux 主机被偷了呢?
这不是不可能的,之前鸟哥在成大念书时 (2000年前后),隔壁校区的研究室曾经遭小偷, 里面所有的计算机都被偷走了!包括“Mo 片”,当他们发现的时候,一开始以为是硬件被偷走了,还好, 他们都有习惯进行备份,但是很不幸的,这一次连“备份的 MO 都被拿走了!”怎么办?!只能道德劝说小偷先生能够良心发现的将硬盘拿回来啰!唉~真惨....
* 异地备援系统
这个时候,所谓的“异地备援系统”就显的相当的重要了! 什么是异地备援呀!说的太文言了!呵!简单的说,就是将你的系统数据“备份”到其他的地方去, 例如说我的机器在台南,但是我还有另一部机器在高雄老家,这样的话, 我可以将台南机器上面重要的数据都给他定期的自动的通过网络传输回去! 也可以将家里重要的数据给他丢到台南来!这样的最大优点是可以在台南的机器死掉的时候, 即使是遭小偷,也可以有一个“万一”的备份所在!
有没有缺点啊?有啊!缺点就是~带宽严重的不足! 在这种状态下,所能采取的策略大概就是“仅将最重要的数据给他传输回去啰!” 至于一些只要系统从新安装就可以回复的咚咚!那就没有这个必要了!当然啰,如果你的网络是属于双向 100Mbps 或 300Mbps 那就另当一回事, 想完整备份将数据丢到另一地去,也是很可行的啦!只是鸟哥没有那么好命...住家附近连 100/40 Mbps 的网络带宽都没有...
* 储存媒体的考虑
在此同时,我们再来谈一谈,那么除了异地备援这个“相对较为安全的备份”方法之外, 还有没有其他的方法可以储存备份的呢?毕竟这种网络备援系统实在是太耗带宽了!那么怎么办?喔~那就只好使用近端的设备来备份啰! 这也是目前我们最常见到的备份方法!
在过去我们使用的储存媒体可能有 Tape, Mo, Zip, CD-RW, DVD-RW, 外接式磁盘等等, 近年来由于磁盘容量不断上提,加上已经有便宜的桌上型 NAS 储存设备,这些 NAS 储存设备就等于是一部小型 Linux server, 里面还能够提供客制化的服务,包括不同的连接界面与传输协定,因此,你只要记得,就是买还能够自我容错的 NAS 设备来备份就对了!
在经费充足的情况考虑之下,鸟哥相当建议您使用外接式的 NAS 设备,所谓的 NAS 其实就是一台内嵌 Linux 或 unix-like 的小型服务器,可能提供硬件或软件的磁盘阵列,让你可以架设 RAID10 或 RAID5,6 等的等级,所以 NAS 本身的数据就已经有保障! 然后跟你预计要备份的 Linux server 通过网络连线,你的数据就可以直接传输到 NAS 上头去了!其他以前需要考虑的注意事项, 几乎都不再有限制~最多就是担心 NAS 的硬件坏掉而已~
若经费不足怎办,现在随便磁盘都有 4TB 以上的容量,拿一颗磁盘通过外接式 USB 界面,搭配 USB 3.0 来传输~ 随便都能够进行备份了!虽然这样的处理方式最怕的是单颗磁盘损毁,不过,如果担心的话,买两三颗来互相轮流备份,也能够处理掉这个问题! 因为目前的数据量越来越大,实在没啥意义再使用类似 DVD 之类的储存设备来备份了!
如果你想要有比较长时间的备份储存,同时也比较担心碰撞的问题,目前企业界还是很多人会喜欢使用 Tape 来储存就是了! 不过听业界的朋友说,磁带就是比较怕被消磁以及发霉的问题~否则,这家伙倒是很受企业备份的喜好需求!
- 鸟哥的Linux私房菜:基础学习篇 第四版
- 目录及概述
- 第零章、计算机概论
- 0.1 电脑:辅助人脑的好工具
- 0.2 个人电脑架构与相关设备元件
- 0.3 数据表示方式
- 0.4 软件程序运行
- 0.5 重点回顾
- 0.6 本章习题
- 0.7 参考资料与延伸阅读
- 第一章、Linux是什么与如何学习
- 1.1 Linux是什么
- 1.2 Torvalds的Linux发展
- 1.3 Linux当前应用的角色
- 1.4 Linux 该如何学习
- 1.5 重点回顾
- 1.6 本章习题
- 1.7 参考资料与延伸阅读
- 第二章、主机规划与磁盘分区
- 2.1 Linux与硬件的搭配
- 2.2 磁盘分区
- 2.3 安装Linux前的规划
- 2.4 重点回顾
- 2.5 本章习题
- 2.6 参考资料与延伸阅读
- 第三章、安装 CentOS7.x
- 3.1 本练习机的规划--尤其是分区参数
- 3.2 开始安装CentOS 7
- 3.3 多重开机安装流程与管理(Option)
- 3.4 重点回顾
- 3.5 本章习题
- 3.6 参考资料与延伸阅读
- 第四章、首次登陆与线上求助
- 4.1 首次登陆系统
- 4.2 文字模式下指令的下达
- 4.3 Linux系统的线上求助man page与info page
- 4.4 超简单文书编辑器: nano
- 4.5 正确的关机方法
- 4.6 重点回顾
- 4.7 本章习题
- 4.8 参考资料与延伸阅读
- 第五章、Linux 的文件权限与目录配置
- 5.1 使用者与群组
- 5.2 Linux 文件权限概念
- 5.3 Linux目录配置
- 5.4 重点回顾
- 5.5 本章练习
- 5.6 参考资料与延伸阅读
- 第六章、Linux 文件与目录管理
- 6.1 目录与路径
- 6.2 文件与目录管理
- 6.3 文件内容查阅
- 6.4 文件与目录的默认权限与隐藏权限
- 6.5 指令与文件的搜寻
- 6.6 极重要的复习!权限与指令间的关系
- 6.7 重点回顾
- 6.8 本章习题:
- 6.9 参考资料与延伸阅读
- 第七章、Linux 磁盘与文件系统管理
- 7.1 认识 Linux 文件系统
- 7.2 文件系统的简单操作
- 7.3 磁盘的分区、格式化、检验与挂载
- 7.4 设置开机挂载
- 7.5 内存交换空间(swap)之创建
- 7.6 文件系统的特殊观察与操作
- 7.7 重点回顾
- 7.8 本章习题 - 第一题一定要做
- 7.9 参考资料与延伸阅读
- 第八章、文件与文件系统的压缩,打包与备份
- 8.1 压缩文件的用途与技术
- 8.2 Linux 系统常见的压缩指令
- 8.3 打包指令: tar
- 8.4 XFS 文件系统的备份与还原
- 8.5 光盘写入工具
- 8.6 其他常见的压缩与备份工具
- 8.7 重点回顾
- 8.8 本章习题
- 8.9 参考资料与延伸阅读
- 第九章、vim 程序编辑器
- 9.1 vi 与 vim
- 9.2 vi 的使用
- 9.3 vim 的额外功能
- 9.4 其他 vim 使用注意事项
- 9.5 重点回顾
- 9.6 本章练习
- 9.7 参考资料与延伸阅读
- 第十章、认识与学习BASH
- 10.1 认识 BASH 这个 Shell
- 10.2 Shell 的变量功能
- 10.3 命令别名与历史命令
- 10.4 Bash Shell 的操作环境:
- 10.5 数据流重导向
- 10.6 管线命令 (pipe)
- 10.7 重点回顾
- 10.8 本章习题
- 10.9 参考资料与延伸阅读
- 第十一章、正则表达式与文件格式化处理
- 11.1 开始之前:什么是正则表达式
- 11.2 基础正则表达式
- 11.3 延伸正则表达式
- 11.4 文件的格式化与相关处理
- 11.5 重点回顾
- 11.6 本章习题
- 11.7 参考资料与延伸阅读
- 第十二章、学习 Shell Scripts
- 12.1 什么是 Shell scripts
- 12.2 简单的 shell script 练习
- 12.3 善用判断式
- 12.4 条件判断式
- 12.5 循环 (loop)
- 12.6 shell script 的追踪与 debug
- 12.7 重点回顾
- 12.8 本章习题
- 第十三章、Linux 帐号管理与 ACL 权限设置
- 13.1 Linux 的帐号与群组
- 13.2 帐号管理
- 13.3 主机的细部权限规划:ACL 的使用
- 13.4 使用者身份切换
- 13.5 使用者的特殊 shell 与 PAM 模块
- 13.6 Linux 主机上的使用者讯息传递
- 13.7 CentOS 7 环境下大量创建帐号的方法
- 13.8 重点回顾
- 13.9 本章习题
- 13.10 参考资料与延伸阅读
- 第十四章、磁盘配额(Quota)与进阶文件系统管理
- 14.1 磁盘配额 (Quota) 的应用与实作
- 14.2 软件磁盘阵列 (Software RAID)
- 14.3 逻辑卷轴管理员 (Logical Volume Manager)
- 14.4 重点回顾
- 14.5 本章习题
- 14.6 参考资料与延伸阅读
- 第十五章、例行性工作调度(crontab)
- 15.1 什么是例行性工作调度
- 15.2 仅执行一次的工作调度
- 15.3 循环执行的例行性工作调度
- 15.4 可唤醒停机期间的工作任务
- 15.5 重点回顾
- 15.6 本章习题
- 第十六章、程序管理与 SELinux 初探
- 16.1 什么是程序 (process)
- 16.2 工作管理 (job control)
- 16.3 程序管理
- 16.4 特殊文件与程序
- 16.5 SELinux 初探
- 16.6 重点回顾
- 16.7 本章习题
- 16.8 参考资料与延伸阅读
- 第十七章、认识系统服务 (daemons)
- 17.1 什么是 daemon 与服务 (service)
- 17.2 通过 systemctl 管理服务
- 17.3 systemctl 针对 service 类型的配置文件
- 17.4 systemctl 针对 timer 的配置文件
- 17.5 CentOS 7.x 默认启动的服务简易说明
- 17.6 重点回顾
- 17.7 本章习题
- 17.8 参考资料与延伸阅读
- 第十八章、认识与分析登录文件
- 18.1 什么是登录文件
- 18.2 rsyslog.service :记录登录文件的服务
- 18.3 登录文件的轮替(logrotate)
- 18.4 systemd-journald.service 简介
- 18.5 分析登录文件
- 18.6 重点回顾
- 18.7 本章习题
- 18.8 参考资料与延伸阅读
- 第十九章、开机流程、模块管理与 Loader
- 19.1 Linux 的开机流程分析
- 19.2 核心与核心模块
- 19.3 Boot Loader: Grub2
- 19.4 开机过程的问题解决
- 19.5 重点回顾
- 19.6 本章习题
- 19.7 参考资料与延伸阅读
- 第二十章、基础系统设置与备份策略
- 20.1 系统基本设置
- 20.2 服务器硬件数据的收集
- 20.3 备份要点
- 20.4 备份的种类、频率与工具的选择
- 20.5 鸟哥的备份策略
- 20.6 灾难复原的考虑
- 20.7 重点回顾
- 20.8 本章习题
- 20.9 参考资料与延伸阅读
- 第二十一章、软件安装:源代码与 Tarball
- 20.1 开放源码的软件安装与升级简介
- 21.2 使用传统程序语言进行编译的简单范例
- 21.3 用 make 进行宏编译
- 21.4 Tarball 的管理与建议
- 21.5 函数库管理
- 21.6 检验软件正确性
- 21.7 重点回顾
- 21.8 本章习题
- 21.9 参考资料与延伸阅读
- 第二十二章、软件安装 RPM, SRPM 与 YUM
- 22.1 软件管理员简介
- 22.2 RPM 软件管理程序: rpm
- 22.3 YUM 线上升级机制
- 22.4 SRPM 的使用 : rpmbuild (Optional)
- 22.5 重点回顾
- 22.6 本章习题
- 22.7 参考资料与延伸阅读
- 第二十三章、X Window 设置介绍
- 23.1 什么是 X Window System
- 23.2 X Server 配置文件解析与设置
- 23.3 显卡驱动程序安装范例
- 23.4 重点回顾
- 23.5 本章习题
- 23.6 参考资料与延伸阅读
- 第二十四章、Linux 核心编译与管理
- 24.1 编译前的任务:认识核心与取得核心源代码
- 24.2 核心编译的前处理与核心功能选择
- 24.3 核心的编译与安装
- 24.4 额外(单一)核心模块编译
- 24.5 以最新核心版本编译 CentOS 7.x 的核心
- 24.6 重点回顾
- 24.7 本章习题
- 24.8 参考资料与延伸阅读