【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"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值