array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Linux备份策略(第二版) - 爱码网

 

备份思想

一、系统潜在的威胁

Ø 系统硬件故障 

Ø 软件故障 

Ø 电源故障 

Ø 用户的误操作 

Ø 人为破坏 

Ø 缓存中的内容没有及时的写入磁盘 

Ø 自然灾害

 

二、备份介质的选择

备份介质:硬盘[比较常见的是通过Linux文件服务器] 磁带[常用] 可移动存储设备

一般在选择备份介质时,要从可靠性速度价格之间进行权衡,一般选择:硬盘,磁带机

 

三、备份策略

Ø 完全备份 

每隔一段时间对系统进行一次完全的备份, 这样在备份时间间隔内,一旦系统发生故障 使得数据丢失时,就可以用上一次的备份数据恢复到上一次备份时的情况。

 

Ø 增量备份 

首先进行一次完全备份,然后每隔一段较短 的时间进行一次备份,但是仅仅备份每个短 时期内更改的内容。

实际应用中,两者混合使用。

 

四、备份的分类

Ø 系统备份 

实现对操作系统和应用程序的备份 

目的:尽量在系统崩溃以后能快速简单完全地恢复 系统的运行 

主要备份/etc/boot 、/var/log/usr/local等,一般只有当系统内容发生变化时才进行 

 

Ø 用户备份 

实现对用户文件的备份 /home ,用户的数据变动频繁 

通常采用增量备份策略进行

 

五、记录更改 ,建立备份日志 

记录系统的更改:记录对系统进行了哪些修改的详细描述及为什么要进行修改 

建立备份日志:使用备份日志表格 

妥善保管 

 

【备份日志表格范例】

 机器名称、IP地址、存放位置 

 备份时间 

 备份介质及其编号 

 备份的文件系统 

 备份的目录和文件 

 使用的备份命令 

 备份人员及其他   

 

实例分析

一、cp命令备份举例

cp -Rpu [备份目录] [目标目录]

-R 备份的是目录

-p保持备份目录的属性

-u 增量备份

远程备份:scp

E.g.

cp /etc/inittab /backup/inittab_2014092301.bak #最后两个数字代表当天修改次数,但此时源文件与备份文件的时间值不统一

cp -Rup /etc/ /backup/etc_2014092301.bak

 

二、tar命令备份举例[默认保存文件属性]

备份

1、tar -zcf /backup/sys_20110303.tar.gz /etc /boot  #备份/etc与/boot目录,可同时打包多个目录

2、 tar -zcf backup_user_20110303.tar.gz /etc/passwd /etc/shadow /etc/group /etc/gshadow  #对/etc目录下指定文件进行备份

3、tar -ztf backup_user_20110303.tar.gz  #在不解包的情况下,查看备份包中的文件

 

还原

1、tar -zxf /backup/etc_20110303.tar.gz  #还原/etc目录,默认还原到打包文件源目录,-C可以指定还原目录

tar -zxvf backup_user_2014092101.tar.gz -C /backup 

2、tar -zxf backup_user_20110303.tar.gz etc/group  #只恢复备份中的指定文件

#在当前目录下创建etc目录,然后将group文件恢复到里面去,注意etc目录前没有/符号,tar包里查看到的文件是怎么写的,恢复是就要怎样写!

 

备份最佳实践

1.tar -rf backup_user_20110303.tar /etc/default/useradd /etc/login.defs 

将/etc/default/useradd、/etc/login.defs的内容追加到backup_user_20110303.tar 

 

2.tar -uf backup_user_20110303.tar /etc/passwd 

将/etc/passwd目录中修改过的内容追加到备份文件 

 

【* -r与-u选项只能针对tar包使用,不能用于压缩文件】

 

3.tar -zcf /backup/etc_$(date +%F).tar.gz /etc 

为备份文件名添加时间(年月日) 

 

4.tar -zcf /backup/etc_$(date +%Y.%m.%d-%H:%M).tar.gz /etc 

添加年.月.日-小时:分钟

 

备份流程

1、备份的意识 

2、备份分区 ro或unmount

mount -o remount,ro /backup #以只读方式挂载该分区

umont /backup #直接将备份分区卸载掉

3、数据压缩 

4、校验 md5sum -c 

5、加密处理 gnupg2非对称密钥加密

 

相关文章: