linux系统备份策略


万一Linux主机不幸被黑客入侵,或由于硬件关系而导致系统奔溃!如何快速恢复系统呢!
如果有备份数据的话, 恢复系统所花费的时间与成本将会大大降低! 平时就要养成备份的习惯

备份的重要性

回到顶部
数据是企业的重要资产!数据丢失甚至会给企业带来致命打击! 数据丢失不是简单的重装系统就可以解决的。 数据的备份至关重要! 备份是linux下非常重要的工作!
备份可以在系统损毁时用来抢救恢复系统! 需要重新安装系统时,备份的好坏直接影响到系统复原的进度! 基本上,计算机是一个相对不可靠的机器!
系统可能会因为某些不可预期的因素而导致系统发生错误! 例如硬件损坏、软件系统bug、人为操作失误、突然断电、网络黑客攻击等。 其中硬件损坏损失最严重的就是硬盘了,其他硬件损坏会造成系统的运行异常, 但可能不至于造成系统数据的破坏,只需要更换损坏的硬件就可以恢复系统了! 但是如果是硬盘损坏了,那么所有的数据就有可能全部丢失! 为了避免因为硬盘损坏而导致数据丢失,具有备份功能的RAID1,RAID5,RAID6等磁盘阵列得到越来越广泛的应用! 但如果RAID控制芯片损坏而导致磁盘阵列全部阵亡将是灾难性的,所以即使有RAID系统,我们还是得需要经常对系统中重要的数据进行备份!
常见的人为操作失误就是误删除了,例如千万不要在命令行下运行如下命令:
            rm -rf /
            
上面的命令是将根目录下的所有文件都删除掉。如果你真的这么做了,面临的可能不只是丢失工作,很可能会让你吃上官司! 千万不要做删库跑路的蠢事儿! 当然现在最新的linux系统具有自我保护功能,已经禁止用户这么做了! 经常更新系统,让服务软件版本保持最新状态是避免网络攻击的有效手段! 但是软件更新会造成系统的不稳定,并不能保证数据的绝对安全,相对可靠的做法的就是有意识的经常备份系统, 即使万一哪天系统被黑客攻击破坏,至少还有备份可以恢复!

备份策略

回到顶部
那么我们需要备份哪些数据呢?这些数据要多久备份一次,备份到哪里比较合适呢? 如果是多台主机,每一部主机中的数据都需要备份吗? 具备Internet网络服务功能的主机和不具备网络服务功能的主机在备份的时候考虑的内容一样吗?这些都是重要的备份策略问题! 主机角色不同,备份策略也不同
早期的ghost备份工具,可以将系统上面的磁盘数据完整的复制成一个备份文件,可以将备份文件备份到U盘即可! 未来复原时,只要将USB插到系统,就可以进行复原了!

备份哪些文件:
哪些数据对系统或用户来说是重要的?那些数据就是值得备份的数据!例如 /etc/* 及 /home/* 等。
选择什么备份的媒介:
是可擦写光盘、另一颗硬盘、同一颗硬盘的不同 partition、还是使用网络备援系统? 哪一种的速度最快, 最便宜,可将数据保存最久?这都可以考虑的。
考虑备份的方式:
是以完整备份(类似 ghost)来备份所有数据,还是使用差异备份仅备份有被更动过的数据即可?
备份的频率:
例如 Mariadb 数据库是否天天备份、若完整备份,需要多久进行一次?
备份使用的工具为何:
是利用 tar 、 cpio 、 dd 还是 dump 等等的备份工具?

哪些Linux数据具有备份的意义

回到顶部
备份可以分为关键数据备份和完整备份(Full backup)! 完整备份就是将整个系统完整的备份下来,而关键数据备份只备份系统中的关键数据文件, 这些关键数据文件通常可以分为两大类, 一类是系统基本设置信息,一类是类似网络服务的内容数据。
操作系统本身需要备份的文件:
这方面的文件主要跟账号与系统配置文件有关! 包括/etc/passwd, /etc/shadow, /etc/group, /etc/gshadow, /home目录下的用户家目录等, Linux默认的重要配置文件都在/etc/目录下,所以只要将这个目录备份下来的话, 几乎所有的配置文件都可以备份下来!
/home目录是一般用户的家目录,也需要备份一份! 如果用户开启了邮件功能,/var/spool/mail/目录也需要备份! 另外系统的内核文件和grub配置文件都在/boot目录下,所以/boot目录中的信息也是非常重要的! 综上所述,重点要备份的系统数据文件有一下这些:
1./etc/目录;
2./home/目录;
3./var/spool/mail/目录;
4./var/spoll/{at|cron}/目录;
5./boot/目录
6./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/
不需要备份的目录:
有些数据是不需要备份的!例如我们在第五章文件权限与目录配置里头提到的 /proc 这个目录是在 记录目前系统上面正在跑的程序,这个数据根本就不需要备份的呢!此外,外挂的机器,例如 /mnt 或 /media 里面都是挂载了其他的硬盘装置、光驱、软盘驱动器等等,这些也不需要备份吧? 所以啰!
底下有些目录可以不需要备份啦!
/dev :这个随便你要不要备份
/proc, /sys, /run:这个真的不需要备份啦!
/mnt, /media:如果你没有在这个目录内放置你自己系统的东西,也不需要备份
/tmp :干嘛存暂存档!不需要备份!

备份用储存设备的选择

回到顶部
用来储存备份数据的媒体非常的多样化,那该如何选择呢?
在备份的时候,选择一个数据存放的地方也是需要考虑的重要因素! 什么叫做数据存放的地方呢?较为大型的机器都会使用 tape 这一种磁带机来备份数 据,早期如果是一般个人计算机的话,很可能是使用类似 Mo 这一种可擦写式光盘片来存取数据!
近来因为 USB 界面的大容量磁盘驱动器越来越便宜且速度越来越快, 所以几乎取代了上述的总总 储存媒体了!但是你不要忘记了几个重要的因素,那就是万一你的 Linux 主机被偷了呢?
异地备援系统
这个时候,所谓的异地备援系统就显的相当的重要了! 异地备援简单的说,就是将系统数据备份到其他的地方去, 例如说我的机器在台南,但是我还有另 一部机器在高雄老家,这样的话, 我可以将台南机器上面重要的数据都给他定期的自动的透过网络 传输回去! 也可以将家里重要的数据给他丢到台南来!这样的最大优点是可以在台南的机器死掉的 时候, 即使是遭小偷,也可以有一个万一的备份所在!
有没有缺点啊?有啊!缺点就是~带宽严重的不足! 在这种状态下,所能采取的策略大概就是仅 将最重要的数据给他传输回去! 至于一些只要系统从新安装就可以回复的!那就没有这个必要了! 当然啰,如果你的网络是双向 100Mbps 或 300Mbps 那就另当一回事, 想完整备份将数据丢到另一地去,也是很可行的啦!
储存媒体的考虑
除了异地备援这个相对较为安全的备份方法之外, 还有没有其他的方法可以储存备份的呢? 毕竟这种网络备援系统实在是太耗带宽了!使用近端的装置来备份啰! 这也是目前我们最常见到的备份方法!
在过去我们使用的储存媒体可能有 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 来储存就是了! 不过听业界的朋友说,磁带就是比较怕被消磁以及发霉的问题~否则,这家伙倒是很受企业备份的喜好需求!

备份的种类、频率与工具的选择

回到顶部
选择什么储存媒体与相关备份工具, 都与备份使用的方式有关!那么备份有哪些方式呢? 一般可以粗略分为累积备份与差异备份这两种。当然啦,如果你在系统出错时想要重新安装到更新的系统时,仅备份关键资料就可以了!

完整备份之累积备份(Incremental backup)

回到顶部
备份不就是将重要数据复制出来即可吗?干嘛需要完整备份(Full backup)呢? 如果你的主机是负责相当重要的服务, 因此如果有不明原因的当机事件造成系统损毁时,你希望在最短的时间内复原系统。 此时,如果仅备份关键数据时, 那么你得要在系统出错后,再去找新的Linux distribution来安装,安装完毕后还得要考虑到数据新旧版本的差异问题, 还得要进行数据的移植与系统服务的重新建立等等,等到建立妥当后,还得要进行相关测试! 这种种的工作可至少得要花上一个星期以上的工作天才能够处理妥当!所以,仅有关键数据是不够的!
还原的考虑
但反过来讲,如果是完整备份的话呢?若硬件出问题导致系统损毁时,只要将完整备份拿出来,整个给他倾倒回去硬盘, 所有事情就搞定了! 有些时候 (例如使用 dd 指令) 甚至连系统都不需要重新安装!反正整个系统都给他倒回去,连同重要的 Linux 系统文件等,所以当然也就不需要重新安装! 因此,很多企业用来提供重要服务的主机都会使用完整备份, 若所提供的服务真的非常重要时,甚至会再架设一部一模一样的机器呢! 如此一来, 若是原本的机器出问题,那就立刻将备份的机器拿出来接管!以使企业的网络服务不会中断哩!
那你知道完整备份的定义了吧?没错!完整备份就是将根目录 (/) 整个系统通通备份下来的意思! 不过,在某些场合底下,完整备份也可以是备份一个文件系统 (filesystem)! 例如 /dev/sda1 或 /dev/md0或 /dev/myvg/mylv 之类的文件系统就是了。
累积备份的原则
虽然完整备份在还原方面有相当良好的表现,但是我们都知道系统用的越久,数据量就会越大! 如此一来, 完整备份所需要花费的时间与储存媒体的使用就会相当麻烦~所以,完整备份并不会也不太可能每天都进行的!
那你想要每天都备份数据该如何进行呢?有两种方式啦,一种是本小节会谈到的累积备份,一种则是下个小节谈到的差异备份。
所谓的累积备份,指的是在系统在进行完第一次完整备份后,经过一段时间的运作, 比较系统与备份文件之间的差异,仅备份有差异的文件而已。 而第二次累积备份则与第一次累积备份的数据比较,也是仅备份有差异的数据而已。如此一来,由于仅备份有差异的数据,因此备份的数据量小且快速! 备份也很有效率。 我们可以从下图来说明:
图 20.4.1、累积备份 (incremental backup) 操作示意图
假如我在星期一作好完整备份,则星期二的累积备份是系统与完整备份间的差异数据; 星期三的备份是系统与星期二的差异数据, 星期四的备份则是系统与星期三的差异数据。 那你得要注意的是,星期二的数据是完整备份加第一次累积备份, 星期三的数据是完整备份加第一次累积与第二次累积备份, 星期四的数据则是星期一的完整备份加第一次加第二次加第三次累积备份。 由于每次都仅与前一次的备份数据比较而已,因此备份的数据量就会少很多!
那如何还原?经过上面的分析,我们也会知道累积备份的还原方面比较麻烦! 假设你的系统在星期五的时候挂点了! 那你要如何还原?首先,你必须要还原星期一的完整备份,然后还原星期二的累积备份, 再依序还原星期三、星期四的累积备份才算完全复原! 那如果你是经过了九次的累积备份,就得要还原到第九次的阶段, 才是最完整的还原程序!
累积备份使用的备份软件
完整备份常用的工具有dd, cpio, xfsdump/xfsrestore等。这些工具都能够备份装置与特殊文件! dd可以直接读取磁盘的扇区 (sector) 而不理会文件系统,是相当良好的备份工具!不过缺点就是慢很多! cpio 是能够备份所有档名,不过,得要配合 find 或其他找文件名的指令才能够处理妥当。
以上两个都能够进行完整备份, 但累积备份就得要额外使用脚本程序来处理。可以直接进行累积备份的就是 xfsdump 这个指令啰! 详细的指令与参数用法, 请前往第八章查阅,这里仅列出几个简单的范例而已。
# 1. 用 dd 来将 /dev/sda 备份到完全一模一样的 /dev/sdb 硬盘上:
            [root@study ~]# dd if=/dev/sda of=/dev/sdb
            
# 由于 dd 是读取扇区,所以 /dev/sdb 这颗磁盘可以不必格式化!非常的方便!
# 只是你会等非常非常久!因为 dd 的速度比较慢!# 2. 使用 cpio 来备份与还原整个系统,假设储存媒体为 SATA 磁带机:
            [root@study ~]# find / -print | cpio -covB > /dev/st0 #备份到磁带机 
            [root@study ~]# cpio -iduv < /dev/st0 #还原
          
假设 /home 为一个独立的文件系统,而 /backupdata 也是一个独立的用来备份的文件系统,那如何 使用 dump 将 /home 完整的备份到 /backupdata 上呢?
可以像底下这样进行看看: # 1. 完整备份
            [root@study ~]# xfsdump -l 0 -L 'full' -M 'full' -f /backupdata/home.dump /home # 2. 第一次进行累积备份
            [root@study ~]# xfsdump -l 1 -L 'full-1' -M 'full-1' -f /backupdata/home.dump1 /home 
            
除了这些指令之外,其实 tar也可以用来进行完整备份啦!举例来说,/backupdata 是个独立的文件 系统, 你想要将整个系统通通备份起来时,可以这样考虑:将不必要的 /proc, /mnt, /tmp 等目录不 备份,其他的数据则予以备份:
            [root@study ~]# tar --exclude /proc --exclude /mnt --exclude /tmp \> --exclude /backupdata
            -jcvp -f /backupdata/system.tar.bz2 /
            

完整备份之差异备份 (Differential backup)

回到顶部
差异备份与累积备份有点类似,也是需要进行第一次的完整备份后才能够进行。 只是差异备份指的是:每次的备份都是与原始的完整备份比较的结果。 所以系统运作的越久,离完整备份时间越长, 那么该次的差异备份数据可能就会越大! 差异备份的示意图如下所示:
图 20.4.2、差异备份 (differential backup) 操作示意图 差异备份常用的工具与累积备份差不多!因为都需要完整备份嘛!
如果使用 xfsdump 来备份的话,那么每次备份的等级 (level) 就都会是 level 1 的意思啦!当然啦,你也可以透过 tar 的 -N 选项来备份喔! 如下所示:
            [root@study ~]# tar -N '2015-09-01' -jpcv -f /backupdata/home.tar.bz2 /home
            
# 只有在比 2015-09-01 还要新的文件,在 /home 底下的文件才会被打包进 home.bz2 中!
# 有点奇怪的是,目录还是会被记录下来,只是目录内的旧文件就不会备份。
此外,你也可以透过 rsync 来进行镜像备份喔! 这个 rsync 可以对两个目录进行镜像 (mirror) ,算 是一个非常快速的备份工具!简单的指令语法为:
            [root@study ~]# rsync -av 来源目录 目标目录
            
# 1. 将 /home/ 镜像到 /backupdata/home/ 去
            [root@study ~]# rsync -av /home /backupdata/
            
# 此时会在 /backupdata 底下产生 home 这个目录来!
            [root@study ~]# rsync -av /home /backupdata/
            
# 再次进行会快很多!如果数据没有更动,几乎不会进行任何动作!
根据分析 (注 2) ,差异备份所使用的磁盘容量可能会比累积备份来的大,但是差异备份的还原较快, 因为只需要还原完整备份与最近一次的差异备份即可。无论如何,请依据你自己的喜好来选择备份的 方式吧!

关键数据备份

回到顶部
完整备份虽然有许多好处,但就是需要花费很多时间!所以,如果在主机提供的服务并不是一定要 24小时提供的前提下, 我们可以仅备份重要的关键数据即可。由于主机即使当机个一两天可能也不会影响到你的正常生活时, 仅备份关键数据就好啦! 不需要整个系统都备份。仅备份关键资料是有许多好处的! 由于完整备份可能是在系统运作期间进行,不但会花费非常多时间,而且如果备份当时 系统已经被攻破, 那你备份的数据是有问题的,那还原回去也是有问题的系统啊!
如果仅是备份关键数据而已,那么由于系统的绝大部分执行档都可以后来重新安装,因此若你的系统 不是因为硬件问题, 而是因为软件问题而导致系统被攻破或损毁时,直接捉取最新的 Linux distribution , 然后重新安装, 然后再将系统数据 (如账号/密码与家目录等等) 与服务数据 (如 www/email/crontab/ftp 等等) 一个一个的填回去! 那你的系统不但保持在最新的状态,同时也可以 趁机处理一下与重新温习一下系统设定!是很不错的呦!
不过,备份关键数据最麻烦的地方其实就是在还原啦!上述的还原方式是你必须要很熟悉系统运作, 否则还原得要花费很多时间的!尤其近来的 Linux 强调安全性,所以加入 SELinux 了,你如果要从 旧版的 Linux 升级到新版时, 原本若没有 SELinux 而换成新版则需要启动 SELinux 时,那个除错的时间会花很长一段日子哩! 认为这是仅备份关键数据的一些优缺点啦~备份关键数据最爱使用 tar 来处理了!如果想要分门别类的将各种不同的服务在不同的时间备份 使用不同档名, 配合 date 指令是非常好用的工具! 例如底下的案例是依据日期来备份 mariadb 的 数据库喔!
            [root@study ~]# tar -jpcvf mysql.`date +%Y-%m-%d`.tar.bz2 /var/lib/mysql
            
备份是非常重要的工作,你可不希望想到才进行吧?交给系统自动处理就对啦!请自己撰写 script , 配合 crontab 去执行吧!这样子,备份会很轻松喔!
事实上除了这些基本的 Linux 备份还原工具之外,如果你还想要尝试裸机复原的功能, 那可以使用台湾国家高速网络中心开发的再生龙软件! 这个软件相当棒!目前服务的单位也是透过这个软件 来处理整间计算机教室的复原工作喔!这个软件也有单机版, 也挺好用的!有兴趣的朋友得要自行处理软件的使 用喔:
http://clonezilla.nchc.org.tw/ 20.5 的备份策略
每部主机的任务都不相同,重要的数据也不相同,重要性也不一样,因此,每个人的备份思考角度都不一样! 有些备份策略是非常有趣的,包括使用多个磁带机与磁带来自动备份企业数据哩。
就的想法来说,并没有想要将整个系统完整的备份下来,因为太耗时间了!而且就的立场而言,似乎也没有这个必要, 所以通常只备份较为重要的文件而已! 不过,由于需要备份 /home 与网页数据,如果天天都备份,我想,系统迟早会受不了 (因为这两个部分就已经占去数 10GB 的硬盘空间...), 所以就将我的备份分为两大部分,一个是每日备份经常性变动的重要数据, 一个则是每周备份就不常变动的信息。这个时候我就写了两个简单的 scripts ,分别来储存这些数据。
所以针对的鸟站来说,我的备份策略是这样的:
1. 主机硬件:使用一个独立的 filesystem 来储存备份数据,此 filesystem 挂载到 /backup 当中;
2. 每日进行:目前仅备份 MySQL 数据库;
3. 每周进行:包括 /home, /var, /etc, /boot, /usr/local 等目录与特殊服务的目录;
4. 自动处理:这方面利用 /etc/crontab 来自动提供备份的进行;
5. 异地备援:每月定期的将数据分别 (a)刻录到光盘上面 (b)使用网络传输到另一部机器上面。
那就来看看是怎么备份的吧! ^_^ 20.5.1 每周系统备份的 script 底下提供的备份的 scripts ,希望对大家有点帮助!假设你已经知道如何挂载一个新的 filesystem 到 /backup 去,所以格式化与挂载这里就不再强调啰。
            [root@study ~]# vi /backup/backupwk.sh
            #!/bin/bash
            # ====================================================================
            # 用户参数输入位置:
            # basedir=你用来储存此脚本所预计备份的数据之目录(请独立文件系统)
            basedir=/backup/weekly
            #您只要改这里就好了! #====================================================================# 底下请不要修改了!用默认值即可!
            PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH export LANG=C # 设定要备份的服务的配置文件,以及备份的目录
            named=$basedir/named postfixd=$basedir/postfix vsftpd=$basedir/vsftp sshd=$basedir/ssh
            sambad=$basedir/samba wwwd=$basedir/www others=$basedir/others userinfod=$basedir/userinfo #
            判断目录是否存在,若不存在则予以建立。 for dirs in $named $postfixd $vsftpd $sshd $sambad $wwwd $others $userinfod do [ !
            -d "$dirs" ] && mkdir -p $dirs done 
            
# 1. 将系统主要的服务之配置文件分别备份下来,同时也备份 /etc 全部。
            cp -a /var/named/chroot/{etc,var} $named cp -a /etc/postfix /etc/dovecot.conf $postfixd cp -a /etc/vsftpd/*
            $vsftpd cp -a /etc/ssh/* $sshd cp -a /etc/samba/* $sambad cp -a /etc/{my.cnf,php.ini,httpd} $wwwd
            cd /var/lib tar -jpc -f $wwwd/mysql.tar.bz2 mysql cd /var/www tar -jpc -f $wwwd/html.tar.bz2 html
            cgi-bincd / tar -jpc -f $others/etc.tar.bz2 etc cd /usr/ tar -jpc -f $others/local.tar.bz2 local 
            
# 2.关于使用者参数方面
            cp -a /etc/{passwd,shadow,group} $userinfod cd /var/spool tar -jpc -f $userinfod/mail.tar.bz2
            mail cd / tar -jpc -f $userinfod/home.tar.bz2 home cd /var/spool tar -jpc -f $userinfod/cron.tar.bz2
            cron at [root@study ~]# chmod 700 /backup/backupwk.sh 
            
            
            
            [root@study ~]# /backup/backupwk.sh #记得自己试跑看看!
上面的 script 主要均使用 CentOS 7.x (理论上, Red Hat 系列的 Linux 都适用) 默认的服务与目录, 如果你有设定某些服务的数据在不同的目录时,那么上面的 script 是还需要修改的!不要只是拿来 用而已喔! 上面 script 可以在底下的连结取得。
http://linux.vbird.org/linux_basic/0580backup/backupwk-0.1.sh 20.5.2 每日备份资料的 script 再来,继续提供一下每日备份数据的脚本程序!请注意,这里仅有提供 Mariadb 的数据库备份 目录, 与 WWW 的类似留言版程序使用的 CGI 程序与写入的数据而已。 如果你还有其他的数据 需要每日备份,请自行照样造句啰! ^_^
[root@study ~]# vi /backup/backupday.sh #!/bin/bash #=========================================================# 请输入,你想让备份数据放置到那个独立的目录去 basedir=/backup/daily/ #你只要改这里就可以了!
#=========================================================PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH export LANG=C basefile1=$basedir/mysql.$(date +%Y-%m-%d).tar.bz2 basefile2=$basedir/cgi-bin.$(date +%Y-%m-%d).tar.bz2 [ ! -d "$basedir" ] && mkdir $basedir # 1. MysQL (数据库目录在 /var/lib/mysql)cd /var/lib tar -jpc -f $basefile1 mysql # 2. WWW 的 CGI 程序 (如果有使用 CGI 程序的话) cd /var/www tar -jpc -f $basefile2 cgi-bin [root@study ~]# chmod 700 /backup/backupday.sh [root@study ~]# /backup/backupday.sh #记得自己试跑看看!
上面的脚本可以在底下的连结取得。这样一来每天的 Mariadb 数据库就可以自动的被记录在 /backup/daily/ 目录里头啦!而且还是文件名会自动改变的呦! 呵呵!我很喜欢!OK!再来就是开始让系统自己跑啦! 怎么跑?就是 /etc/crontab 呀!提供一下我的相关设定呦!
http://linux.vbird.org/linux_basic/0580backup/backupday.sh
[root@study ~]# vi /etc/crontab # 加入这两行即可 (请注意你的文件目录!不要照抄呦!) 30 3 * * 0 root /backup/backupwk.sh 30 2 * * * root /backup/backupday.sh 这样系统就会自动的在每天的 2:30 进行 Mariadb 的备份,而在每个星期日的 3:30 进行重要文件的 备份!呵呵!你说,是不是很容易呢!但是请千万记得呦!还要将 /backup/ 当中的资料 copy 出来 才行耶!否则整部系统死掉的时候...那可不是闹着玩的!
所以大约一个月到两个月之间,会将 /backup 目录内的数据使用 DVD 复制一下,然后将 DVD 放置在家中保存!这个 DVD 很重要的 喔!
不可以遗失,否则系统的重要数据 (尤其是帐户信息)
流出去可不是闹着玩的! Tips 有些时候,你在进行备份时,被备份的文件可能同时间被其他的网络服务所修改喔!
举 例来说,当你备份 Mariadb 数据库时,刚好有人利用你的数据库发表文章,此时, 可能会发生一些错误的讯息。 要避免这类的问题时,可以在备份前,将该服务先关掉, 备份完成后,再启动该服务即可!
感谢讨论区 duncanlo 提 供这个方法!
20.5.3 远程备援的 script
如果你有控管两部以上的 Linux 主机时,那么互相将对方的重要数据保存一份在自己的系统中也是 个不错的想法!
那怎么保存啊?使用 USB 复制来去吗?当然不是啦!你可以透过网络来处置啦! 我们假设你已经有一部主机, 这部主机的 IP 是 192.168.1.100 ,而且这部主机已经提供了 sshd 这 个网络服务了,接下来你可以这样作:
使用 rsync 上传备份数据 要使用 rsync 你必须要在你的服务器上面取得某个账号使用权后, 并让该账号可以不用密码即可登 入才行!
这部分得要先参考服务器篇的远程联机服务器才行! 假设你已经设定好 dmtsai 这个账号 可以不用密码即可登入远程服务器,而同样的你要让 /backup/weekly/ 整个备份到 /home/backup/weekly 底下时,可以简单这样做:
            [root@study ~]#vi /backup/rsync.sh #!/bin/bash remotedir=/home/backup/ basedir=/backup/weekly host=127.0.0.1 id=dmtsai
            
# 底下为程序阶段!不需要修改喔! rsync -av -e ssh $basedir ${id}@${host}:${remotedir} 由于 rsync 可以透过 ssh 来进行镜像备份,所以没有变更的文件将不需要上传的!相当的好用呢! 好 了!大家赶紧写一个适合自己的备份 script 来进行备份的行为吧!重要重要喔!
Tips 因为 rsync 搭配 sshd 真的很好用!加上它本身就有加密~近期以来大家对于数据在 网络上面跑都非常的在乎安全性, 所以就取消了 FTP 的传输方式啰~ 20.6 灾难复原的考虑 之所以要备份当然就是预防系统挂点啦!如果系统真的挂点的话,那么你该如何还原系统呢?
硬件损毁,且具有完整备份的数据时 由于是硬件损毁,所以我们不需要考虑系统软件的不稳定问题,所以可以直接将完整的系统复原回去 即可。 首先,你必须要先处理好你的硬件,举例来说,将你的硬盘作个适当的处理,譬如建置成为 磁盘阵列之类的。
然后依据你的备份状态来复原。举例来说,如果是使用差异备份,那么将完整备 份复原后, 将最后一次的差异备份复原回去,你的系统就恢复了!非常简单吧!
由于软件的问题产生的被攻破安全事件 由于系统的损毁是因为被攻击,此时即使你恢复到正常的系统,那么这个系统既然会被攻破, 没道 理你还原成旧系统就不会被再次攻破! 所以,此时完整备份的复原可能不是个好方式喔!最好是需要 这样进行啦:
1.先拔除网络线,最好将系统进行完整备份到其他媒体上,以备未来查验
2. 开始查阅登录档,尝试找出各种可能的问题
3. 开始安装新系统 (最好找最新的 distribution)
4. 进行系统的升级,与防火墙相关机制的制订
5. 根据 2 的错误,在安装完成新系统后,将那些 bug 修复
6. 进行各项服务与相关数据的恢复
7. 正式上线提供服务,并且开始测试
软件安全事件造成的问题可大可小,一般来说,标准流程都是建议你将出问题的系统备份下来, 如 果被追踪到你的主机曾经攻击过别人的话, 那么你至少可以拿出备份数据来左证说,你是被攻击者, 而不是主动攻击别人的坏人啊!然后,记得一定要找出问题点并予以克服,不然的话,你的系统将一 再地被攻击啊! 那样可就伤脑筋啰~

本文由initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读