VPS数据备份脚本

Administrator 455 2022-07-19

数据备份脚本

#!/bin/sh
#保存备份个数
NUMBER=7

# 备份路径
BACKUPDIR=/home/backup

#待删除文件路径
DELFILEDIR=/tmp/backup

# 待备份文件路径
FILEDIR=/home/appdata

# 获取系统时间用于文件名格式化
TIME=` date +%Y-%m-%d_%H-%M-%S `

#如果文件夹不存在则创建
if [ ! -d $BACKUPDIR ]; 
then     
    mkdir -p $BACKUPDIR; 
fi
if [ ! -d $DELFILEDIR ]; 
then     
    mkdir -p $DELFILEDIR; 
fi

# 打包备份文件
tar -JcPf $BACKUPDIR/appdata_backup_$TIME.tar.xz $FILEDIR

#写创建备份日志
date "+%Y-%m-%d %H:%M:%S" &>> $BACKUPDIR/log.txt
echo "create $BACKUPDIR/appdata_backup_$TIME.tar.xz" &>> $BACKUPDIR/log.txt

#找出待删除的备份
DELFILE=`ls -l -crt  $BACKUPDIR/*.tar.xz | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于$NUMBER
COUNT=`ls -l -crt  $BACKUPDIR/*.tar.xz | awk '{print $9 }' | wc -l`

if [ $COUNT -gt $NUMBER ]
then
  #移动最早生成的备份,只保留NUMBER数量的备份
  mv $DELFILE $DELFILEDIR/
  #写待删除文件日志
  echo "delete $DELFILE" &>> $BACKUPDIR/log.txt
fi
#rclone同步文件
rclone sync $BACKUPDIR/ aliyun:/vpsbackup/vaultwarden/ &>> $BACKUPDIR/log.txt

# 删除7天以前的备份
find $DELFILEDIR -atime +6 -type f -exec rm -rf {} \; &>> $BACKUPDIR/log.txt

#输出分隔符
echo "--------" &>> $BACKUPDIR/log.txt