以postgresql数据库备份为例。
1. vim /data/backup.sh 编写测试脚本backup.sh
内容如下,需要注意的是crontab并不能识别/etc/profile配置的环境变量,在执行crontab用户的家目录配置环境变量不确定有没有用,索性就用绝对路径了。
#普通备份
#/usr/pgsql-10/bin/pg_dump -h 127.0.0.1 -p 5432 -d backup_test -U admin > /data/backup/backup_$(date +%Y%m%d_%H%m%S).bak
#压缩备份,需要用pg_restore还原
/usr/pgsql-10/bin/pg_dump -F c -Z 9 "host=127.0.0.1 port=5432 user=admin password=123456 dbname=backup_test" > /data/backup/backup_$(date +%Y%m%d_%H%m%S).tar
2. crontab -e 编辑crontab,内容如下
cat /etc/crontab 查看定时任务配置格式
* * * * * : 从左到右依次表示分、时、天、月、星期
定时任务:
0 01 * * * sh /data/backup.sh ###每天晚上凌晨一点执行备份脚本
#0 0 * * * find /data/backup -mtime +5 -name '*.bak' -exec rm -rf {} \; ###保留7天的备份
#0 0 * * * rm -rf $(find /data/backup -mtime +5 -name '*.bak'); ###保留7天的备份
0 0 * * * find /data/backup -mtime +5 -name '*.bak' | xargs rm rf ###保留7天的备份(建议)
3. crontab -l 查看已配置的定时任务
备注:pg_dump普通备份用psql就可以还原,压缩备份只能通过pg_restore还原。如
#还原
psql -h 127.0.0.1 -p 5432 -U admin -d restore_test < /data/backup/backup_20181206_010400.tar
pg_restore -h 127.0.0.1 -p 5432 -U admin -d restore_test -F c -c< /data/backup/backup_20181206_010400.tar
对应选项可通过pg_restore --help 自行查看。