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 自行檢視。