一、概述

前几天我通过SSH正在调戏汤姆猫(tomcat)的时候,服务器上CentOS突然挂了。开机grub,使用光盘linux rescue修复提示找不到linux分区,然后想mount硬盘备份系统的时候提示硬盘无法挂载。没有办法只能重装系统。吃一堑长一智,决定定期备份下系统。

何时进行备份?

每天晚上12:00

备份到哪?

显然备份到系统所在磁盘不是明智之举,用户应该备份到外接硬盘或者磁带上面。
为了让文章看上去更简单,本文所做的例子并没有备份到外接设备上,而是在/backup目录下。

要备份什么?

备份整个系统需要占用大量的磁盘空间,所以我决定只有星期天的时候对系统进行全部备份,其他时间备份重要的数据。

备份整个系统,因此这里需要考虑的是不必备份的目录:
/backup
/proc
/lost+found
/sys
/mnt
/media
/dev
/tmp

备份的数据:
/home (你懂的)
/work (我的工作目录)
/opt (软件安装目录)
/var/lib/mysql (mysql数据文件目录)
另外还需要保持一些重要的配置文件:
/etc/profile (各种环境变量)
/etc/bashrc (各种环境变量)
/etc/crontab (设置定时备份)
/etc/fstab (存放文件系统信息,其实我备份文件是存放在其他磁盘的,磁盘的挂载在这里设置)

备份方式

tar支持三种方式进行备份:
1.完整备份:备份指定的所有目标文件或文件夹
2.增量备份:仅备份atime与上次备份不同的文件或文件夹
3.差异备份:与增量备份差不多,只是增加了对Windows文件系统的支持
我这里选择完整备份

何时删除?

系统备份数据保存两周,数据备份保存一周

二、基础知识

atime,ctime,mtime

UNIX系統將时间分为三种:
atime(Access time):文件上次被访问时间。ls -lu查看
ctime(status Change time):文件的属性或内容上次被修改的时间。ls -lc查看
mtime(Modified time):文件的內容上次被修改的时间。ls -l查看
需要说明的是Linux 文件系统从来不存储文件创建时间。

为了方便查看各种时间,这里提供一个脚本

#!/bin/bash
#用法:脚本名 文件
if [ $# != 1 ];then
echo "输入参数不正确,需要输入一个文件"
exit 1
fi
file=$1
if [ ! -f "$file" ]; then
echo "$file 文件不存在"
else
echo "ctime(status Change time): $(ls -lc $file | awk '{print $6, $7, $8}')"
echo "atime(Access time): $(ls -lu $file | awk '{print $6, $7, $8}')"
echo "mtime(Modified time): $(ls -l $file | awk '{print $6, $7, $8}')"
fi

利用cron定时备份

新建cron计划任务非常简单,以下方法都可以完成:
方法一:
$ crontab -e
方法二:
# vim /etc/crontab
方法一只能以当前用户的权限运行计划的任务;方法二可以指定程序以哪个用户执行,但是必须以root身份编辑该文件。
在此,因为要对整个文件系统进行备份,因此仅以/etc/crontab为例进行介绍:
# m h dom mon dow user command
0 0 * * * root /work/mybin/backup.sh

这行配置表明,在每天0:00分执行/work/mybin/backup.sh这个脚本
这样设置后如果无效,需要service crond reload以及service crond restart命令重读配置文件以及重启服务来生效。

三、脚本

#!/bin/bash
#
#星期天进行系统全部备份,其他时间进行部分数据备份。
DATA="/work /home /opt /var/lib/mysql /etc/profile /etc/bashrc /etc/crontab /etc/fstab "
DATA_VALI=7 #数据文件有效期
SYS_VALI=14 #系统文件有效期 set $(date)
if test "$1" = "Sun" ; then
tar -czvpf "/backup/system_backup_$6-$2-$3.tar.gz" --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/tmp /
else
tar -czpvf "/backup/data_backup_$6-$2-$3.tar.gz" $DATA
fi find /backup -type f -name "data*" -mtime +$DATA_VALI -exec rm -rf {} \;
find /backup -type f -name "system*" -mtime +$SYS_VALI -exec rm -rf {} \;

这里说明两点

data时间格式问题:

我的linux环境是中文的,shell终端或shell脚本中执行date命令,得出的结果都是这样的:
2013年 05月 21日 星期二 10:13:56 CST
但是在crontab定期执行shell脚本中,得出的结果却是这样的:
Tue May 21 10:13:56 CST 2013
所以判断是否是星期天的是才用”if test “$1″ = “Sun” ; then”

find与mtime

find可以根据时间进行查找。atime,ctime和mtime上面已经讲过了,这里说明下-mtime后面加的数字。
1.直接上数字
表示距离当前时间第几天的文件。需要注意是这个时间不是按照日期的,是根据从当前时间(2013年5月21日13:19:10)向前推24小时表示0.也就是0表示24小时内修改过的文件,1表示24-48小时内修改过的文件,2表示48-72小时修改过的文件。
2.+数字
表示几天以外的修改过的文件,+1表示1天以修改过的文件(距离现在>48小时),+2表示2天以外修改过的文件(距离现在>72小时)
3.-数字
表示几天以内的修改过的文件,-1表示1天以修改过的文件(距离现在<24小时),-2表示2天以内修改过的文件(距离现在<48小时)

tar备份系统的更多相关文章

  1. tar备份系统的方法

    下面是备份系统的方法: 然后打开终端,输入以下命令: 1.成为根用户:   sudo su 2.转到根目录:   cd / 然後,下面就是我用来备份我的系统的完整的命令:tar -cvpzf /med ...

  2. Linux 中我该如何备份系统

    系统备份概述 在前面的一些文章中,我反复提到经常会把系统搞崩溃,所以备份系统就是一件不容忽视的事情.由于 Linux 系统本身的优越性,系统的备份和还原还是比较容易的.主要表现在以下方面: Linux ...

  3. Ubuntu 备份系统为ISO镜像 & 解决ISO限制4GB大小 & Clone当前系统到其他电脑

    看标题,标题涵盖了3个部分,Ubuntu 备份系统为ISO镜像,  解决ISO限制4GB大小 ,  Clone当前系统到其他电脑  我们就从三个部分说起. Ubuntu 备份系统为ISO镜像 在Win ...

  4. buntu下备份系统的方法

    今天不小心强行结束了一不知道用处的进程,结果造成进不了x界面,gdm启动不了,使用apt-get进行修复,结果几乎要把整个x界面有关的软件包删除,所以只好重装系统,为了防止下次出现类似的问题,所以把系 ...

  5. ghoest32 不重启电脑手动备份系统为.gho

    备份系统我们一般使用DOS之家的ghoest备份工具,但备份必须是重启电脑在DOS命令行下,其实,可以不重启电脑备份系统,也就是手动备份系统.DOS之家用的ghoest本质也是赛门铁克公司出的ghoe ...

  6. AWIT DBackup 0.0.20 发布,备份系统

    AWIT DBackup 0.0.20 修复了几个小 bug. AllWorldIT DBackup 是一个备份系统,为每个目录创建一个独立的压缩包,这更便于搜索. 特点: 使用 xz, bzip2, ...

  7. 通过rsync搭建一个远程备份系统(一)

    前言 我公司是电子商务公司,全部是linux系统,每天的网站数都在增加,为了保证安全,需要建立一个远程容灾系统,将网站数据每天凌晨1点备份到远程服务器上,由于数据量大,每天进行进行增量备份,仅仅备份当 ...

  8. VHD进阶:差分VHD备份系统

    VHD进阶:差分VHD备份系统 一.创建虚拟磁盘 方法1:图形界面创建 1.打开磁盘管理器(运行diskmgmt.msc),在“磁盘管理”上点击右键,“创建VHD”,类型选择VHD,动态扩展或者固定大 ...

  9. 基于HBase的手机数据备份系统 .

    基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信.联系人等. 包括服务器端(Server)和客户端(Client) Server运行环境:Hadoop+HBase+Tomcat ...

随机推荐

  1. CSS布局中——导航是非常常见的

    导航绝对是页面布局中最常见的,为了不用每次去写,稍微贴个简单的导航模版出来,方便以后使用. <title>CSS菜单</title> <style type=" ...

  2. CPU affinity 进程和线程的亲缘性

    设置Processor Affinity 作用: 1.进程和线程的亲缘性(affinity),使进程或线程在指定的CPU(核)上运行.(比如程序A,在第4个核心上运行) 2.设置进程 或者 线程, 使 ...

  3. Maven使用教程

    一.Maven介绍 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关的 ...

  4. JS组件Bootstrap实现弹出框和提示框效果代码

    这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编 ...

  5. 关于word2010中完美解决数学公式(正斜体)输入的解决方案

    测试环境 win10(64位) office2010(32位)——64位的没有测试,估计应该也可以. 需要软件(包)(请按照下面顺序安装) ①VC运行库(自行百度下载即可) ②北大方正word公式数学 ...

  6. BZOJ2038: [2009国家集训队]小Z的袜子(hose) 莫队算法

    要使用莫队算法前提 ,已知[l,r]的答案,要能在logn或者O(1)的时间得到[l+1,r],[l-1,r],[l,r-1],[l,r+1],适用于一类不修改的查询 优美的替代品——分块将n个数分成 ...

  7. openCV学习笔记

    学习新玩意儿的事情,必须要懂人家的规矩,openCV就有自己的规范和数据结构的,要用人家的那些库函数,必须要把传入参数的基础结构搞搞明白,比如RGBA,人家opencv已经说了,用CvScalar,就 ...

  8. leetcode—Best Time to Buy and Sell stocks III

    1.题目描述 Say you have an array for which the ith element is the price of a given stock on day i.   Des ...

  9. JavaScript中值的真真假假(true and false)

    值为flase的有: false 0 "" //空串 null undefined NaN 除了以上的之外的都是ture,包括"0" (zero in quot ...

  10. hadoop面试题答案

    Hadoop 面试题,看看书找答案,看看你能答对多少(2) 1. 下面哪个程序负责 HDFS 数据存储.a)NameNode  b)Jobtracker  c)Datanode d)secondary ...