有4个不同的文件夹,文件夹下的文件都是按时间生成的,比如要打包30天的,统一打包压缩以当前时间命名生成在home下。
不太清楚你的目录是什么结构
#!/bin/bash
#设置备份目录
BCK_DIR=/home
#要备份的文件夹
DIR_PATH=/data/demo/1,/data/demo/2,/data/demo/3
#指定备份日期
DATE=`date +%Y%m%d`
DIR_PATHS=(${DIR_PATH//,/ })
for PATH in ${DIR_PATHS[@]}
do
SOURCE_DIR=$SOURCE_DIR' '$PATH/$DATE/
done
#echo $SOURCE_DIR
/usr/bin/zip -r $BCK_DIR/$DATE.zip $SOURCE_DIR >> /dev/null 2>&1
这个是每天打一次,至于题主说要打30天的,我建议直接加定时,每天自动执行此脚本即可
crontab -e添加定时,进入vi界面,添加
50 59 23 ? * * sh /data/back_up.sh
此为每天23:59:50执行一次
可以利用定时任务,执行日志备份。
编辑定时任务
crontab -e
定时任务
0 1 * * * /www/shell/task.sh
这里我设置的每天凌晨1点执行脚本 task.sh
task.sh 脚本内容如下:
#!/bin/sh
BKDATE=$(date +%F)
if [ ! -d "/opt/www/catalina/backup" ];then
mkdir /opt/www/catalina/backup
fi
\cp /opt/www/catalina/ftc_manager.log /opt/www/catalina/backup/ftc_manager_$BKDATE.log
\cp /opt/www/catalina/ftc_handle.log /opt/www/catalina/backup/ftc_handle_$BKDATE.log
\cp /dev/null /opt/www/catalina/ftc_manager.log
\cp /dev/null /opt/www/catalina/ftc_handle.log
mkdir /opt/www/catalina/backup/$BKDATE
cd /opt/www/catalina
zip -r /opt/www/catalina/backup/$BKDATE/ftc_manager_log_$BKDATE.zip ftc_manager.log
zip -r /opt/www/catalina/backup/$BKDATE/ftc_handle_log_$BKDATE.zip ftc_handle.log
脚本说明:先判断备份目录是否存在,不存在则创建目录。这里我的日志是放在/opt/www/catalina 下,我这里是需要把日志文件末尾以时间命名,并备份到 backup目录下。
ps:附加定时任务参数说明
时间格式如下:
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)