首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>网络管理>linux服务器>正文

Linux服务器使用tar与cron定期备份数据

http://www.oklinux.cn  2008-10-12  OKLinux   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

有一次很不小心地删除了一个/etc/下的系统配置文件,很是吓了一跳!我是不太习惯在bashrc中设置alias rm=’rm -i’的,因为那样删除的东西多的时候会很烦人。虽然rm删除文件只是删除一个入口,文件仍然处于磁盘上,在被其他数据覆盖之前是可以找回来的,但是俗话说“防患于未燃”,不是更好吗?

其实我也是很少有备份的习惯的,过去也有过删错东西的时候,也不知道怎么的这次就想起来了,其实过去自己总结学习RHCE还是挺有用的,自己总结过的东西毕竟印象深得多。现在要用了,觉得很自然地想到了cron进行周期性地备份。

虽然Linux上也有一些很庞大很复杂的备份程序,不过感觉上,tar cron对我来说已经很足够了。有人说Unix能力就是组合使用工具的能力,感觉不无道理的,在Unix的世界里,数不清的小工具,随你信手去用,只有你想不到的,没有你做不到的。

以下的脚本基于GNU 的tar和cron,使用差异备份(differential backup)的方法备份/etc/中的所有数据。每周日一次完整备份,完整备份前会删除目录中的所有备份以节约空间;每周其余各天实行差异备份,被刺差异备份前会删除前次差异备份。

这个脚本自然是可以继续更加完善的,比如留出之前的N个备份,每一次完整备份和基于它的差异备份分别放在各个文件夹中等,但这里没有这么做了。注释中有部分英文,也就是因为但是用了英文而已。用了大量的变量,只是为了修改起来方便,比如要备份的位置,备份时间,文件名等等,使用变量存储就是为了如果需要修改的话,不会牵扯到脚本主体。

要使用它,可以将这个脚本放在任意位置,然后在crontab中引用它。注意,必须以root权限运行脚本,因为待备份的目录中可能出现需要root权限才能查看的文件。例如,我将这个脚本命令为backup.sh,放在~/bin/中,所以我可以在crontab中添加如下内容:

20 13 * * * root /home/kimia/bin/backup.sh

以下是脚本文件:backup.sh

#!/bin/bash

#use this bash script to backup /etc every week
#you can add other location after it begin with a space
targets=”/etc/”

#这是当前时间,用作备份文件的文件名用的
now=`/bin/date`

#这是完整备份文件的全名
backup_file=”/home/kimia/Backup/etcbak/$now.tar.gz”

#这是所有备份文件的目录
backup_dir=”/home/kimia/Backup/etcbak/”

#这是需要执行完整备份的每周的时间,每周一次
full_backup_day=”Sun”

#这是压缩的每个备份文件的时间标签
label=`date %Y%m%d`

#这里是存储上一次完整备份的日期的文件
last_full_backup_date_file=”/var/tmp/last_full_backup_date”

#这是上一次的完整备份的时间
last_full_backup_date=`/bin/cat $last_full_backup_date_file`

#这里是存储上一次差异备份的日期的文件
last_diff_backup_date_file=”/var/tmp/last_diff_backup_date”

#这是上一次的差异备份的时间
last_diff_backup_date=`/bin/cat $last_diff_backup_date_file`

#这是上一次的差异备份的文件名
last_diff_backup=$backup_dir$last_diff_backup_date.tar.gz

#Check fully backup date
if ( `echo $now | grep $full_backup_day > /dev/null` )
then
/bin/echo $now > $last_full_backup_date_file
/bin/chmod 600 $last_full_backup_date_file

#以免积累的备份消耗空间,每个星期清空一次备份
rm -rf $backup_dir/*

/bin/tar -cvzf “$backup_file” \
-V “Full backup $label” \
$targets
sleep 1

else
/bin/echo $now > $last_diff_backup_date_file
/bin/chmod 600 $last_full_backup_date_file

echo “$last_diff_backup”
rm -f “$last_diff_backup”
/bin/tar -cvzf “$backup_file” \
-V “Differential backup $label” \
-N “$last_full_backup_date” \
$targets
sleep 1
fi


上一篇:Linux下破解路由器WEP加密   下一篇:袁萌:微软Office面临严重挑战

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux下更改虚拟用后的默认FTP主目录
·Linux下tomcat服务的启动、关闭与错误跟踪
·Linux下Tomcat设置内存大小
·Arch Linux下vsftpd的搭建
·Linux下搭建samba服务器共享打印机
·在Linux下使用ftp要注意文件夹权限的设置
·Linux下使用mutt和msmtp命令行发送邮件
·基于Ubuntu构建协作平台之服务器端篇——Trac
·SCU IPv6 for Linux
·Linux下Sendmail慢卡问题的解决
·Linux 主机清除 DNS Cache
·通过Apache访问Linux家目录下的文件
·在Linux下安装LENOVO 10/100自适应网卡LN-530TX
·Linux服务器socket端口不能释放的解决方法
·VirtualBox中Linux和Windows建立桥接
·Linux下生成spase文件
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·利用VSFTP架设Linux环境下的FTP服务器
·Linux下安装Apache 2.2.6 笔记
·Linux下的主要VPN技术
·Linux下Samba服务器搭建实例
·用Sendmail在Linux下架设邮件服务器
·2009服务器盘点:再见Sun 再见麦克利尼
·SUSE 10上做VPN服务器
·在Ubuntu 9.10中打造带tdbsam Backend
·Ubuntu服务器上SSH Server 的安装配置
·Nginx 禁止某个 User_Agent 的方法
·Linux-Apache-MySQL-PHP网站架构方案分
·Nginx 对某些 User_Agent 进行限速的方
  阅读排行
·Linux系统下架设APACHE SVN服务器全过
·Linux下用vsftp轻松搭建FTP服务器(修订
·Ubuntu下安装tftp服务器的步骤
·Linux 下配置vsftp虚拟用户总结
·详解远程SHELL下安装配置RedHat ES 5的
·Linux下安装eclipse与myeclipse
·Linux DNS Server -bind 9.5.0 安装配
·Linux与Linux,Linux与Windows之间使用S
·Ubuntu上搭建SVN服务器全攻略
·LVS集群学习笔记(NAT\DR\IP tunnel)
·Linux下tomcat启动jvm内存设置
·Linux shell 中FTP实现自动下载上传文
·安装大型Linux集群(4):节点安装和 GPFS
·Linux系统下架设PPTP VPN服务器
·Linux系统中下查看内存的方法
网摘收藏: