一键备份Linux操作系统文件及目录脚本,支持指定多个目录备份或者多个文件备份,或者单个文件备份,备份完毕,自动上传至FTP服务器
将下面的脚本放置在crontab中定时启动
vim system_files_back.sh
[code]
#!/bin/bash
#2017年8月28日08;46;17
#Auto Backup System Files
#By ying
#定义变量
SOURCE_DIR=($*)
TARGET_DIR=/backup/
YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date +%d`
WEEK=`date +%u`
A_NAME=`date +%H%M`
FILES=system_backup.tgz
CODE=$?
if [ -z “$*” ];then
echo -e “\033[32mUsage;\n请输入需要备份的文件或目录路劲\n——————————————–\n\nUsage; { $0 /boot | /etc | / }\033[0m”
exit
fi
#判断目录是否存在
if [ ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ];then
mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY
echo -e “\033[32mThe $TARGET_DIR Created Successfully !\033[0m”
fi
#全备函数快
Full_Backup()
{
if [ “$WEEK” -eq “7” ];then
rm -rf $TARGET_DIR/snapshot
cd $TARGET_DIR/$YEAR/$MONTH/$DAY
tar -g $TARGET_DIR/snapshot -czvf $FILES ${SOURCE_DIR[@]}
[ “$CODE” == “0” ]&&echo -e “——————————————–\n\033[32全备成功!\033[0m”
fi
}
#增量备份函数快
Add_Backup()
{
if
[ $WEEK -ne “7” ];then
cd $TARGET_DIR/$YEAR/$MONTH/$DAY
tar -g $TARGET_DIR/snapshot -czvf $A_NAME$FILES ${SOURCE_DIR[@]}
[ “$CODE” == “0” ]&&echo -e “—————————————–\n\033[32m增量备份成功!\033[0m”
fi
}
Full_Backup
Add_Backup
#备份成功后将目录复制到FTP目录下
if [ ! -d /etc/vsftpd ];then
yum install -y vsftpd
fi
if [ “$CODE” == “0” ];then
cp -R $TARGET_DIR/$YEAR/$MONTH/$DAY /var/ftp/pub/system_back_$DAY
[ “$CODE” == “0” ]&&echo -e “—————————————–\n\033[32m已保存至FTP目录中/var/ftp/pub/!\033[0m”
fi
[/code]