scripts-github-mirror/backup
tianyu 2da218b528 Update README.md 2016-11-18 20:17:46 +08:00
..
README.md Update README.md 2016-11-18 20:17:46 +08:00
backup.conf add backup.sh 2016-11-18 19:59:43 +08:00
backup.sh update backup.sh 2016-11-18 20:08:54 +08:00
ftpbackup.list add backup 2016-11-12 16:27:50 +08:00
ftpbackup.sh add backup 2016-11-12 16:27:50 +08:00

README.md

服务器备份脚本

指定要备份的文件和目录列表, 使用 zip 加密备份文件到指定目录,如 Dropbox 同步目录。压缩文件密码为随机密码,会通过 gmail 发送到指定邮箱。

下载

mkdir /root/bin
cd /root/bin
 
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/backup/backup.sh
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/backup/backup.conf
 
chmod +x backup.sh

依赖

需要安装 zip 用来压缩文件, sendemail 用来发送密码通知邮件。

apt-get install zip libnet-ssleay-perl libio-socket-ssl-perl sendemail

配置

修改 backup.conf 文件,主要修改

邮件配置

EMAIL="receiver@gmail.com"
SENDER="sender@gmail.com"
SENDER_PASSWD="sender_password"

注意如果 sender@gmail.com 启用了两部验证,则应该使用 应用专用密码

文件列表配置

FILES=(
    "/root/.vimrc"
    "/root/.bashrc"
    "/root/.my.cnf"
    "/root/.screenrc"
    "/root/.ssh/config"
)

目录列表配置

DIRS=(
    "/etc"
    "/root/bin"
    "/root/bashfiles"
    "/var/www"
    "/home/git"
)

忽略目录中的文件或文件夹

注意如果备份时要跳过目录中的文件或子目录,可以在目标目录中添加一个 exclude.lst 文件,如 /var/www/exclude.lst 文件内容参考如下

*/10meg.test
*/cache/*
/var/www/zips/*
/var/www/downloads/*
/var/www/share/*
/var/www/wordpress/dl/*
/var/www/wordpress/mp3/*
/var/www/wordpress/d/*
/var/www/wordpress/wp-content/languages/*
/var/www/wordpress/wp-content/plugins/*
/var/www/wordpress/wp-content/themes/*
/var/www/wordpress/wp-content/uploads/2011/*

备份所有文件

如果某次备份要备份所有的文件,即忽略 exclude.lst 文件,可以添加 all 参数运行

/root/bin/backup.sh all

备份 mysql 配置

BACKUP_MYSQL=true

如果启用 mysql 备份, 则需要添加 /root/.my.cnf 文件,内容示例如下

[mysqldump]
user=root
password=123456

备份压缩配置

ZIP_COMPRESS=true

如果不启用压缩,则会以存储模式压缩文件和文件夹。

备份保存路径

TARGET_DIR="/root/Dropbox"

备份完成后会移动到 TARGET_DIR 示例中为 dropbox 的默认同步路径,可以将文件同步到 dropbox 服务器。安装 dropbox 请参考 https://www.dropbox.com/install-linux

日志路径

LOG_FILE="/var/log/backup.log"

会将备份过程中的主要操作输出到日志中。

cron 定时任务

10 */4 * * * bash /root/bin/backup.sh >/dev/null 2>&1
30 02 * * 0 bash /root/bin/backup.sh all >>/dev/null 2>&1

online.net ftp 备份脚本

下载

mkdir /root/bin
cd /root/bin
 
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/backup/ftpbackup.sh
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/backup/ftpbackup.list
 
chmod +x ftpbackup.sh

配置

修改 /root/bin/ftpbackup.sh 中的 SERVER 为账户下的 FTP serverBACKUP_DIR 为备份文件临时目录。

修改 /root/bin/ftpbackup.list 文件,files 为要上传的文件,dirs 为要备份的目录。

运行

cron 定时任务

5 1 * * * /root/bin/ftpbackup.sh >> /var/log/ftpbackup.log 2>&1