pkj/generic-linux-backup-scripts

此工具可以创建文件夹和MySQL数据库的备份。它简单而强大。

dev-master 2015-05-27 10:38 UTC

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个备份。

  1. 让我们创建一个目录,我们将在这里存储所有数据库备份。让我们将它们存储在/opt/backups。/opt/backups文件夹可以是某种挂载驱动器。但就目前而言,我们将使用同一服务器上的目录。

    sudo mkdir /opt/backups
    
  2. 配置数据库连接详细信息,将其放入/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:忽略数组中的数据库,例如应忽略内置数据库mysqlperformance_schemainformation_schema。您也可以忽略其他数据库。
  3. 让我们测试我们的配置是否正常工作

    /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备份,这将很有用。
  4. 使用cron自动化每日备份例行程序

    sudo EDITOR=nano crontab -e
    

    现在添加此行,它将在每天午夜运行每日备份例行程序。

    00 00 * * * /opt/backup-tool/linuxbackups backups:mysql --backup-file-prefix="daily" --notifications-when-done
    
  5. 让我们配置备份例行程序发送通知报告的电子邮件

    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

请参阅Linux发行版上自动备份到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。