linux自动备份文件夹脚本,shell脚本——linux下自动备份文件夹

新建一个脚本文件,将脚本代码复制进去

vim backup.sh

chmod +x backup.sh

将脚本文件放到要备份的文件夹下

执行脚本命令:sh backup.sh 1 & ,代表每1个小时备份一次

备份间隔时间可以是小数:sh backup.sh 0.1 &,代表0.1*3600=360秒

停止备份命令:sh backup.sh stop

# !/bin/bash

#--------------------------------#

# author: Jugier

# date: 2019-12-10

# 作用: 定期备份文件

#--------------------------------#

# ShellFolder 脚本所在路径

# SourceDir 需要备份的目录

# BackDir 备份目录

if [ "$0" == "./backup.sh" ];then

echo "*********************************"

echo "开始备份命令:sh backup.sh 1 &"

echo "参数1是备份时间间隔(小时)"

echo "停止备份命令:sh backup.sh stop"

echo "查看脚本程序号:jobs -l"

echo "*********************************"

exit 0

fi

#**************************************************#

#停止备份程序:

if [ "$1" == "stop" ];then

pidnum=`ps -ef|grep "backup.sh"|grep -v 'grep'|awk '{print $2}'`

kill -9 $pidnum

echo "备份已停止!"

exit 0

fi

#**************************************************#

#备份间隔时间:由脚本第一个参数传递

if [ "$#" -lt "1" ];then

echo "error:没有设置备份间隔时间(小时)"

echo "例:sh backup.sh 1 &"

exit 0

fi

if [ $(echo "$1 > 0.00"|bc) -eq 1 ];then

echo

else

echo "error:传递的参数不是数字"

echo "例:sh backup.sh 1 &"

exit 0

fi

let step=$(echo "$(echo "$1 * 60 * 60" | bc)" | cut -f1 -d".")

echo "*********************************"

echo "备份间隔时间:"$1"小时"

#*************************************************#

#备份目录

ShellFolder=$(cd "$(dirname "$0")";pwd)

SourceDir="${ShellFolder##*/}"

BackDir=$SourceDir".sample"

if [ ! -d "../$BackDir" ];then

mkdir ../$BackDir

fi

#**************************************************#

#开始备份

echo "开始备份"$SourceDir"到"$BackDir

echo "*********************************"

while [ "1" = "1" ]

do

if [ ! -d "../$BackDir" ];then

mkdir ../$BackDir

fi

cp -a $ShellFolder/* ../$BackDir/

str=$(diff ../$SourceDir ../$BackDir |grep Only|awk '{print $4}')

OLD_IFS="$IFS"

#设置分隔符

IFS=","

#如下会自动分隔

arr=($str)

#恢复原来的分隔符

IFS="$OLD_IFS"

sleep 20

#遍历数组,删除备份目录多余的文件

for filename in ${arr[@]}

do

echo "$filename"

rm -rf ../$BackDir/$filename

done

sleep $step

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值