【Linux】通过Crontab和shell脚本实现定期备份和删除PG数据库表数据
〇、参考资料
一、Crontab使用
1、查看状态
service crond status
2、新建crontab任务
crontab -e
输入字符串
* * * * * cd /home/bigdata && ./demo1_execute_and_input_parapmeter.sh dbname test
3、查看现在的定时任务
[bigdata@pg-xuelei-bigdata-dev ~]$ crontab -l
* * * * * cd /home/bigdata && ./demo1_execute_and_input_parapmeter.sh dbname test
4、删除定时任务
crontab -e
删除对应的内容
二、脚本编写
(一)实际使用
1、备份命令
pg_dump --host=172.16.5.66 --port=5432 --username=postgres --dbname=${2} --if-exists --clean --no-privileges --no-owner --file=./data/${2}/${2}_${time1}_bak.sql
2、shell脚本-删除文件夹并备份
#!/bin/bash
time1=$(date "+%Y%m%d")
sudo rm -rf ./data/${2}
sudo mkdir ./data/${2}
timer_start=`date "+%Y-%m-%d %H:%M:%S"`
sudo pg_dump --host=172.16.5.66 --port=5432 --username=postgres --dbname=${2} --if-exists --clean --no-privileges --no-owner --file=./data/${2}/${2}_${time1}_bak.sql >> pg_dump_execute.log
timer_end=`date "+%Y-%m-%d %H:%M:%S"`
duration=`echo eval $(($(date +%s -d "${timer_end}") - $(date +%s -d "${timer_start}"))) | awk '{t=split("60 s 60 m 24 h 999 d",a);for(n=1;n<t;n+=2){if($1==0)break;s=$1%a[n]a[n+1]s;$1=int($1/a[n])}print s}'`
echo "耗时: $duration"
3、删除前5日内容并备份
4、正确打印时间
(二)练习
1、命令输出追加到文件
echo "a new line" >> a.txt
2、获取命令输入的参数
#!/bin/sh
ps -ef | grep $1
3、格式化重定向到文本
#!/bin/sh
time_var=$(date "+%Y-%m-%d")
echo $time_var >> a.txt
4、计算日期差
#!/bin/sh
time_start=$(date)
sudo docker ps
ps -ef |grep docker
time_end=$(date)
time_diff=$($time_end-$time_start)
echo "共经过了"+$time_diff+"s"
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/16702650.html