
说下这个脚本的使用方法和缺陷:假如脚本名为backup.sh,首先给它添加可执行属性:
代码: 全选
sudo chmod +x backup.sh
代码: 全选
sudo ./backup.sh -full
代码: 全选
sudo ./backup.sh -add [List]
当系统挂机了之后,若:
1.能进入命令行:使用
代码: 全选
sudo tar -jxpvf backup-xxx.tar.bz2 -C /
2.连命令行都进不了:使用live-usb启动,手动解压备份包,然后逐个copy到系统分区下。(没有live-usb?好吧,我也不知到该怎么办了,嗯,可以借一个^_^)
这个脚本的缺陷是:1,系统中不能出现文件名中含有空格的文件;(不影响脚本运行)2,对于完整备份中备份过的,之后又经过修改但文件名未发生更改的文件,在累积备份时会跳过,以后有机会在完善。
脚本:
代码: 全选
#!/bin/bash
#Program:
# This script is used to backup the systems;
# Notice that to run this script correctly you should add extra
# arguments as other unix commands do:
# [-full] #make a full backup;
# [-add] [List] #make a incremental backup which will ex
# -clude the files in the List.
#Version:
#1.1 -exclude the /sys,/run,/tmp,/sys directory and caches directory.
#History:
#2013/02/05 version1.0
#2013/02/06 by Lodz
#################################################################
#Here is the varible of backup path that user can modify accordingly.
path_backup=/media/lodz/DWindows/ubackup
#################################################################
[ "$#" -lt 1 ] && echo\
-e "\n Arguments are necessary,please view the script first"\
&& exit 0
[ ! -d $path_backup ] && echo\
-e "\n Can't open $path_backup,make sure your backup path is correct"\
&& exit 0
#######################full backup###############################
if [ "$#" == 1 ];then
if [ "$1" != "-full" ];then
echo -e "\n Use '-full' to make a full backup"
exit 0
else
rm -f $path_backup/backup*
tar -jcpvf $path_backup/backup-full-`date +%Y-%m-%d`.tar.bz2\
--exclude=/proc --exclude=/lost+found --exclude=/media \
--exclude=/mnt --exclude=/run --exclude=/tmp\
--exclude=/sys --exclude-caches /\
> $path_backup/backup.list
#delete the directory including in List file.
sed -i '/.*\/$/d' $path_backup/backup.list
fi
#######################incremental backup#########################
elif [ "$#" == 2 ];then
if [ "$1" == "-add" ];then
if [ ! -f $2 ];then
echo -e "\n There must be a file to specify exclusions"
exit 0
else
sed -i '/.*\/$/d' $2
tar -jcpvf $path_backup/backup-add-`date +%Y-%m-%d`.tar.bz2\
--exclude=/media --exclude=/proc --exclude=/lost+found\
--exclude=/mnt --exclude=/run --exclude=/tmp\
--exclude=/sys --exclude-caches --exclude-from=$2 / \
> $path_backup/backup-add-`date +%Y-%m-%d`.list
cat $path_backup/backup-add-`date +%Y-%m-%d`.list >> $2
sed -i '/.*\/$/d' $2
fi
else
echo -e "\n Only '-full' and '-add' are supported"
exit 0
fi
else
echo -e "\n Argument list too long"
fi
#####################################################################