![通用备份脚本](https://linux22.com/image/162329/%E9%80%9A%E7%94%A8%E5%A4%87%E4%BB%BD%E8%84%9A%E6%9C%AC.png)
我需要为 Ubuntu 上运行的数据库编写一个备份脚本。我希望这样可以保留前几天的备份,而且最好以对数方式保留之前的几个备份。这些备份应存储在以日期为名称的文件夹中,例如 20191016。应删除以前的备份以释放空间。如果对数不可能,则至少应保留前 N 天的备份。我想使用 cron 来安排备份任务。
是否有任何现有的通用脚本或可执行文件可以帮助我实现这一目标?
我认为这不是特别相关,但正在备份的数据库是 Mongo,我计划使用 mongodump 执行备份,它可以将转储写入标准输出或特定文件或目录。
答案1
您可以使用 备份数据库,mongodump
然后使用 备份转储文件rsnapshot
,这可以在 rsnapshot 的配置文件中编写脚本。
Arch wiki 有一个很好的总结这。
这是摘录自rsnapshot.conf
...
# LOCALHOST
backup /home/ localhost/
backup /etc/ localhost/
backup /usr/local/ localhost/
#backup /var/log/rsnapshot localhost/
#backup /etc/passwd localhost/
#backup /home/foo/My Documents/ localhost/
#backup /foo/bar/ localhost/ one_fs=1,rsync_short_args=-urltvpog
#backup_script /usr/local/bin/backup_pgsql.sh localhost/postgres/
# You must set linux_lvm_* parameters below before using lvm snapshots
#backup lvm://vg0/xen-home/ lvm-vg0/xen-home/
# EXAMPLE.COM
#backup_exec /bin/date "+ backup of example.com started at %c"
#backup [email protected]:/home/ example.com/ +rsync_long_args=--bwlimit=16,exclude=core
#backup [email protected]:/etc/ example.com/ exclude=mtab,exclude=core
#backup_exec ssh [email protected] "mysqldump -A > /var/db/dump/mysql.sql"
#backup [email protected]:/var/db/dump/ example.com/
#backup_exec /bin/date "+ backup of example.com ended at %c"
注释掉的行backup_exec
或backup_script
显示调用可执行文件或脚本来执行转储。