1. 程式人生 > >linux的路上_linux實戰筆記七:cron配置定時任務(pg資料庫備份實戰)

linux的路上_linux實戰筆記七:cron配置定時任務(pg資料庫備份實戰)

以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,內容如下 

* * * * * : 從左到右依次表示分、時、天、月、星期

定時任務:
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 自行檢視。