一、概述 备份与恢复对于系统维护而言是至关重要的事情。不合理的备份与还原会让你的数据面临丢失的风险。许多用户都在丢失重要数据后才意识到这种风险。而要从这种情况恢复数据将是非常耗时并且困难的。所以我们应该从别人的错误中吸取教训,并确保你的系统处于保护中。先考虑一些问题: 何时进行备份?如果你可以接受一个星期的数据丢失,那么每周备份一次就足够了。但是如果你只能容忍一天的数据损失,那么你就必须每天晚上进行备份。 备份到哪? 显然备份到系统所在磁盘不是明智之举,用户应该备份到外接硬盘或者磁带上面。 要备份什么?我们要备份整个系统,因此这里需要考虑的是不必备份的目录:
备份方式 tar支持三种方式进行备份: 本文主要阐述如何用tar对系统进行增量备份,以及如何利用cron设置定时备份。 二、基础知识mtime, atime, ctime Linux的文件系统会记录以下三种时间 三、开始增量备份GNU tar使用--listed-incremental选项(缩写为-g)进行增量备份: tar -czvpf /backup/backup.tar.gz -g /backup/snapshot.snar --exclude=/backup --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/tmp /
三、需要了解的 1.最后一个斜杠“/”告诉tar要从根目录进行备份。 5.–listed-incremental与–incremental(-g与-G)的区别 –listed-incremental(缩写为-G)是该参数是–listed-incremental(缩写为-g)的快捷选项,不需要指定增量文件。它也是旧版本的tar增量备份遗留下来的。现在常常用于解压增量备份,或者列出增量备份的文件列表。 四、列出备份文件列表tar -tGvvf backup.tar.gz -t 等价于 –list 五、数据恢复还原 数据恢复无需为tar指定增量文件snar,因为tar所需的信息已经包含在打包的文件中了。 方法一:将增量文件指定为/dev/null tar -xzvpf /backup/backup.tar.gz -g /dev/null -C / 方法二:使用--incremental参数(缩写为-G) tar -xzvpGf /backup/backup.tar.gz -C / 方法三:某些情况下,你还可以省略-G选项,但这不是推荐的版本: tar -xzvpf /backup/backup.tar.gz -C / 六、利用cron定时备份新建cron计划任务非常简单,以下方法都可以完成: 方法一:$ crontab -e 方法二:# vi /etc/crontab 在笔者的Linux上,方法一只能以当前用户的权限运行计划的任务;方法二可以指定程序以哪个用户执行,但是必须以root身份编辑该文件。 # m h dom mon dow user command 1 3 * * * root /root/scripts/daily_backup 这行配置表明,在每天3:01分执行/root/scripts/daily_backup这个脚本里的文件。 七、讨论tar, cpio, rsync, dump 之前有人使用cpio进行备份,但是后来发现cpio格式无法提取单个文件。但是tar也有自己的缺点: 八、Script(脚本)利用tar内置的增量备份功能进行备份本代码完成以下任务:
/!\注意:请将本脚本放置在/backup目录下运行 # Read db file and config DATE=`date +%Y%m%d-%H%M%S` # Create new snapshot tar -czvpf /backup/$BKFILE -g /backup/$NEWSNAP –exclude=/backup –exclude=/proc –exclude=/lost+found –exclude=/sys –exclude=/mnt –exclude=/media –exclude=/dev –exclude=/tmp / echo VER=$NEW > bkdb 恢复增量备份文件本代码完成以下任务:
/!\注意:还原会刷新atime和ctime end() { nameOf() { if [ -f "bkdb" ]; then ver=0 if [ ! -e /proc ]; then if [ ! -e /lost+found ]; then if [ ! -e /sys ]; then if [ ! -e /mnt ]; then if [ ! -e /media ]; then if [ ! -e /dev ]; then if [ ! -e /tmp ]; then 改进版本:利用find仅备份mtime更新的文件本代码[4]完成以下任务:
[bash] 九、tar高级技巧1.档案分割创建时分割: tar -cvpz <put options here> / | split -d -b 3900m - /name/of/backup.tar.gz 创建后分割: split -d -b 3900m /path/to/backup.tar.gz /name/of/backup.tar.gz 2.通过netcat进行网络备份发送端 tar -czvp <all other options> / | nc -q 0 <receiving host> 1024 接收端 nc -l 1024 > backup.tar.gz /!\注意:由于通过网络备份tar不再需要参数-f执行备份档案名称,该名称由接收端的nc重定向指定 3.通过netcat进行网络恢复发送端 cat backup.tar.gz | nc -q 0 <receiving host> 1024 接收端 nc -l 1024 | tar -xzvpf - -C / 4.通过SSH进行网络备份与恢复在安装了SSH服务的主机(SSH Server)上,客户端只需直接发起连接并传送命令到目标计算机(SSH Server),就能完成操作。所有数据通过“管道”传送,用户不需要了解通过哪个端口备份(当然您也可以自行指定),而且所有传输的数据都是加密的。因此通过SSH备份,更安全、更方便、只需一人就能完成备份工作。请在准备备份的计算机上执行以下命令: tar -cvpz <all other options> / | ssh <backuphost> "( cat > ssh_backup.tar.gz )" 要恢复文件,请执行以下命令: cat ssh_backup.tar.gz | ssh <receivinng host> "( tar -xzvp -C / )" |
|
来自: 丶过客而已 > 《tar_全备 增量》