tar备份系统
一、概述
前几天我通过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备份系统的更多相关文章
- tar备份系统的方法
下面是备份系统的方法: 然后打开终端,输入以下命令: 1.成为根用户: sudo su 2.转到根目录: cd / 然後,下面就是我用来备份我的系统的完整的命令:tar -cvpzf /med ...
- Linux 中我该如何备份系统
系统备份概述 在前面的一些文章中,我反复提到经常会把系统搞崩溃,所以备份系统就是一件不容忽视的事情.由于 Linux 系统本身的优越性,系统的备份和还原还是比较容易的.主要表现在以下方面: Linux ...
- Ubuntu 备份系统为ISO镜像 & 解决ISO限制4GB大小 & Clone当前系统到其他电脑
看标题,标题涵盖了3个部分,Ubuntu 备份系统为ISO镜像, 解决ISO限制4GB大小 , Clone当前系统到其他电脑 我们就从三个部分说起. Ubuntu 备份系统为ISO镜像 在Win ...
- buntu下备份系统的方法
今天不小心强行结束了一不知道用处的进程,结果造成进不了x界面,gdm启动不了,使用apt-get进行修复,结果几乎要把整个x界面有关的软件包删除,所以只好重装系统,为了防止下次出现类似的问题,所以把系 ...
- ghoest32 不重启电脑手动备份系统为.gho
备份系统我们一般使用DOS之家的ghoest备份工具,但备份必须是重启电脑在DOS命令行下,其实,可以不重启电脑备份系统,也就是手动备份系统.DOS之家用的ghoest本质也是赛门铁克公司出的ghoe ...
- AWIT DBackup 0.0.20 发布,备份系统
AWIT DBackup 0.0.20 修复了几个小 bug. AllWorldIT DBackup 是一个备份系统,为每个目录创建一个独立的压缩包,这更便于搜索. 特点: 使用 xz, bzip2, ...
- 通过rsync搭建一个远程备份系统(一)
前言 我公司是电子商务公司,全部是linux系统,每天的网站数都在增加,为了保证安全,需要建立一个远程容灾系统,将网站数据每天凌晨1点备份到远程服务器上,由于数据量大,每天进行进行增量备份,仅仅备份当 ...
- VHD进阶:差分VHD备份系统
VHD进阶:差分VHD备份系统 一.创建虚拟磁盘 方法1:图形界面创建 1.打开磁盘管理器(运行diskmgmt.msc),在“磁盘管理”上点击右键,“创建VHD”,类型选择VHD,动态扩展或者固定大 ...
- 基于HBase的手机数据备份系统 .
基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信.联系人等. 包括服务器端(Server)和客户端(Client) Server运行环境:Hadoop+HBase+Tomcat ...
随机推荐
- Java [Leetcode 104]Maximum Depth of Binary Tree
题目描述: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along th ...
- SqlSugar轻量ORM
蓝灯软件数据股份有限公司项目,代码开源. SqlSugar是一款轻量级的MSSQL ORM ,除了具有媲美ADO的性能外还具有和EF相似简单易用的语法. 学习列表 0.功能更新 1.SqlSuga ...
- UVA 11183 Teen Girl Squad 最小树形图
最小树形图模板题 #include <iostream> #include <algorithm> #include <cstdio> #include <c ...
- python引用在函数传参时的体现以及可变与不可变对象的对比
今天偶然看到 vamei 老师的博客 http://www.cnblogs.com/vamei/archive/2012/07/10/2582795.html 讲的是python动态类型以及引用的事儿 ...
- 远程调试树莓PI
非官方 参考 http://linuxtortures.blogspot.jp/2012/06/cross-compiling-and-cross-debugging-c.html 注意: 建立 / ...
- 配置OpenGL及第一个实例
Windows环境下安装GLUT的步骤:1.将下载的压缩包解开,将得到5个文件2.在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VS,则应该是其安装目录下面的“VC\PlatformSD ...
- 设计模式_Observer_观察者模式
形象例子: 想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦.观察者 ...
- 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇04:如何实现触控操作》
4.如何实现触控操作 触控操作概述: 随着APPLE.Samsung.SONY等众多公司,将掌机.电脑和手机等产品在触控领域的不断探索,以触控为操作的机型越来越多的被投放到市场当中.触控游戏.触控软件 ...
- CI支持各种文件上传-文件类型(Linux + window)
$mimes = array( 'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'c ...
- HW6.30
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...