一、PostgreSQL 自动备份
1、创建 pgbackup.sh,内容如下:
#!/usr/bin/sh
export PGPASSWORD="123456"
/opt/PostgreSQL/9.4/bin/pg_dump dbname -h loclahost -p 5432 -U user | gzip > ~/bak/pgbak `date +%Y%m%d`.gz
2、创建 pgbackup.service 内容如下:
[Unit]
Description=pg_dump backup
[Service]
User=postgres
Group=postgres
Type=simple
ExecStart=~/pgbackup.sh
[Install]
WantedBy=timers.target
3、创建 pgbackup.timer;内容如下
[Unit]
Description=pg_dump backup every day
[Timer]
OnBootSec=10min
OnStartupSec=10min
OnCalendar=*-*-* 02:00:00 # 每天的凌晨 2 点执行
Unit=pgbackup.service
[Install]
WantedBy=multi-user.target
然后执行以下命令:
systemctl enable pgbackup.service
systemctl enable pgbackup.timer
systemctl start pgbackup.timer
二、安装 Dropbox,并设定每天凌晨 5 点开始备份,完成备份后自动退出
1、安装 Dropbox,请自行搜索 Google,很简单。记得下载 dropbox.py,放在~/ 下即可, 并执行以下命令:
sudo chmod +x ~/dropbox.py
ln -s ~/bak/ ~/Dropbox/ # 将上面 postgresql 的备份目录加入 Dropbox 的主目录(同步)
2、创建~/dropbox.sh(这个非常重要,因为 dropbox.py 有一个问题,完成 sync 后,不会退出,会在后台一直占用 140M 左右的内存),内容如下:
#!/usr/bin/sh
start() {
~/dropbox.py start
}
stop() {
~/dropbox.py stop
}
isidle() {
if “$(~/dropbox.py status)” == “Up to date” ]; then
return 1;
else
return 0;
fi
}
case $1 in
"start")
start
sleep 30
isidle
while $? == 0 ]
do
sleep 30
isidle
done
stop
;;
“stop”)
stop
;;
*)
;;
esac
3、创建 dropbox.service 内容如下:
[Unit]
Description=dropbox sync
[Service]
User=user
Group=users
Type=simple
ExecStart= ~/dropbox.sh start >/dev/null 2>&1
[Install]
WantedBy=timers.target
4、创建 dropbox.timer;内容如下
[Unit]
Description=dropbox sync every day
[Timer]
OnBootSec=10min
OnStartupSec=10min
OnCalendar=*-*-* 05:00:00 # 每天的凌晨 5 点执行
Unit=dropbox.service
[Install]
WantedBy=multi-user.target
然后执行以下命令:
systemctl enable dropbox.service
systemctl enable dropbox.timer
systemctl start dropbox.timer
这样,每天凌晨 2 点 postgresql 会自动备份数据库到~/bak;然后在凌晨 5 点的时候,Dropbox 开始同步,一周自己下载备份到移动硬盘一次,完全自动化。
以上红色的字体,请注意路径或文件名,记得修改为你自己的文件名或路径。