785 views
Linux-shell脚本

一键备份系统或目录脚本

一键备份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]

Leave a Reply

影子专属博客 赣ICP备17013143号