pkj / generic-linux-backup-scripts
此工具可以创建文件夹和MySQL数据库的备份。它简单而强大。
dev-master
2015-05-27 10:38 UTC
Requires
- php: >=5.4.0
- swiftmailer/swiftmailer: 5.2.*
- symfony/config: 2.5.*
- symfony/console: 2.5.*
- symfony/dependency-injection: 2.5.*
- symfony/yaml: 2.5.*
This package is auto-updated.
Last update: 2024-08-29 03:47:36 UTC
README
此工具可以创建文件夹和MySQL数据库的备份。它简单而强大。
可以备份
- 文件系统
- MySQL数据库
功能
- 旨在简化设置和用于多台服务器的使用。
- 易于理解和使用。
- 轮换备份,选择您希望存储特定项目的备份数量。也可以禁用。
- 备份的日志文件,您可以真正了解都做了什么。
- 当出现问题或成功备份时,通过pushover发送通知。
- 当备份完成(或失败)时,通过电子邮件发送详细通知。
要求
- git:轻松安装,或者直接下载zip文件。
- php 5.4或更高版本。
- mysql:如果您打算使用MySQL备份功能。
基于Debian的/Ubuntu,要求
sudo apt-get install php5 git
安装
git clone https://github.com/peec/generic-linux-backup-scripts.git /opt/backup-tool cd /opt/backup-tool chmod +x install.sh linuxbackups ./install.sh # Help ? ./linuxbackups # Help for filesystem backup ? ./linuxbackups backups:filesystem --help # Help for mysql backup ? ./linuxbackups backups:mysql --help
- 安装脚本将询问您是否要创建数据库备份用户。它将生成一个带有随机密码的备份用户。请注意此密码,因为您将需要它来配置数据库备份用户。
入门
创建数据库备份
我们的目标:您希望创建所有数据库的每日备份,保留过去8天的8个备份。
-
让我们创建一个目录,我们将在这里存储所有数据库备份。让我们将它们存储在
/opt/backups
。/opt/backups文件夹可以是某种挂载驱动器。但就目前而言,我们将使用同一服务器上的目录。sudo mkdir /opt/backups
-
配置数据库连接详细信息,将其放入
/opt/backup-tool/config/database.json
{ "backup_path": "/opt/backups/Mysql/Databases", "amount_of_backups": 10, "database": { "user": "backup", "password": "PASSWORD FOR BACKUP DB USER", "host": "localhost", "ignore_databases": ["mysql", "information_schema", "performance_schema"] } }
- backup_path:这是我们想要存储数据库备份的位置。如果您想包含
%server_name
,例如,如果您有多个服务器连接到该文件夹,则可以使用/opt/backups/%server_name/Mysql/Databases
。 - amount_of_backups:我们想要保留的备份数量。
- 数据库:
- 用户:备份用户的用户名。您也可以使用root,但创建备份用户是推荐的。
- 密码:备份用户的密码。
- 主机:MySQL数据库的主机名。
- ignore_databases:忽略数组中的数据库,例如应忽略内置数据库
mysql
、performance_schema
、information_schema
。您也可以忽略其他数据库。
- backup_path:这是我们想要存储数据库备份的位置。如果您想包含
-
让我们测试我们的配置是否正常工作
/opt/backup/linuxbackups backups:mysql --backup-file-prefix="daily" --notifications-when-done # Are there any backups? ls -al /opt/backups/Mysql/Databases
--notifications-when-done
将在备份完成后发送通知到电子邮件或pusher。如果没有此标志,则只有在备份例行程序失败时才会发送通知。注意,如果未配置config/config.yml
,则不会发送通知。--backup-file-prefix="daily"
为当前的备份例行程序创建一个命名空间。如果您还想进行例如hourly
备份,这将很有用。
-
使用cron自动化每日备份例行程序
sudo EDITOR=nano crontab -e
现在添加此行,它将在每天午夜运行每日备份例行程序。
00 00 * * * /opt/backup-tool/linuxbackups backups:mysql --backup-file-prefix="daily" --notifications-when-done
-
让我们配置备份例行程序发送通知报告的电子邮件
sudo nano /opt/backup-tool/config/config.yml
并配置邮件发送程序
# EMAIL NOTIFICATIONS: # To enable email notifications, uncomment below: mailer: send_to: mygmail@gmail.com transport: gmail gmail: username: mygmail@gmail.com password: Mygmailpassword
恢复数据库备份
cd /path/to/my/backups
gunzip the-file-you-want-to-restore.gz
mysql -u root -p DataBaseThatShouldGetTheImportedSQL < the-file-you-want-to-restore
文件系统备份
默认配置
{ "backup_path": "/home/dropbox/Dropbox/Servers/%server_name/Sites", "amount_of_backups": 8, "directories": { "somesite": ["/home/www-data/vhosts/no/somesite/images", "/and/another/dir/related/to/somesite"], "someothersite": ["/home/...."] } }
自动备份
此脚本每天进行文件系统和数据库的备份,同时还对存储8个时备份的数据库进行每小时备份。
crontab -e
# m h dom mon dow command 00 00 * * * /home/dropbox/backup/linuxbackups backups:filesystem --backup-file-prefix="daily" 00 00 * * * /home/dropbox/backup/linuxbackups backups:mysql --backup-file-prefix="daily" 0 * * * * /home/dropbox/backup/linuxbackups backups:mysql --backup-file-prefix="hourly" --setting.amount_of_backups=8
Dropbox
通知
您必须配置/opt/backup-tool/config/config.yml
,这样我们知道邮件/推送通知发送到何处。
Use --notifications-when-done if you want to send info notifiers aswell.
邮件
邮件通知会更详细,请参阅config/config.yml.dist。如果您使用Gmail传输,请确保在您的Gmail账户上启用IMAP。
Pushover
汇总通知可以通过Pushover发送。
请参阅config/config.yml.dist。