自动备份某目录下的最新文件并将其拷贝至指定地方并保留最新n份

制作该脚本主要是为了备份confluence中的备份文件到另外一台电脑上,做一下异地备份,前提是要将异地文件夹挂载到此服务器中,该脚本可以使用crontab定时运行

功能:

  • 备份指定文件夹内的文件到另外一个文件夹
  • 保留最新的n份
  • 输出每次的运行日志

废话不多说,直接上代码,上面有注释

#!/bin/bash


if [ ! -n "$1" ]; then
    echo "请输入需保留最后几份"
    exit 8
fi



from="/var/atlassian/application-data/confluence/backups/"
to="/nas/"
file_name="backup"

# 获取nas和back中最新文件
nas_new_file=$(ls -t $to | grep $file_name | head -n 1)
bak_new_file=$(ls -t $from | grep $file_name | head -n 1)
# 判断需不需要拷贝
if [ $nas_new_file == $bak_new_file ];then
    echo "已经是最新啦!无需拷贝最新备份"
else
    echo "nas没有最新备份,开始拷贝最新备份"
    # 拷贝最新的
    cp "$from$bak_new_file $to"
    echo "拷贝完毕~~"
fi

file_num=$(ls -l $to | grep "^-" | wc -l)

if [ $file_num -gt $1 ]; then
    echo "nas中文件数量超过"$1"份,需删除老文件,开始删除"
    # 计算出要删除最近几份的数量
    del_near_num=$(($1+1))

    # 将/nas/目录下的所有文件按照修改时间从近到远排序
    files=$(ls -r $to)

    # 删除/nas/目录中除了最新的3个文件之外的所有文件
    for file in $(echo "$files" | tail -n +$del_near_num); do
        rm -rf "$to$file"
    done
    echo "删除完毕"
else
    echo "nas中文件数量不超过"$1"份,无需删除老文件"
fi

说明

注意替换from和to,运行时,记得传参,传入要保留最新多少份,file_name是你要备份文件的文件名特征,防止文件夹内有其他杂乱的文件影响备份

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值