如何定期备份服务器内容到其他服务器

2013-07-19 1,801 2

感谢流弊的homezz跟东哥

本文概览

如何免密码SSH登陆备用服务器
如何定期备份mysql数据库并压缩保存
如何定期同步数据到远程服务器

如何免密码SSH登陆备用服务器

A 你当前所在的机器,也可以是服务器,也可以是VPS;

B 您需要登陆的目标服务器。

首先在A服务器上运行命令

ssh-keygen

后面一直回车就可以了.

然后你会本地发现多了一个.ssh目录,如果是root就是/root/.ssh

进入这个目录,你会发现一下几个文件

authorized_keys id_rsa id_rsa.pub

运行 cat id_rsa.pub,就能直接显示这个文件的内容,这个文件后面要用。

现在A服务器上的操作已经结束了。

ssh登陆到B服务器。如果是root,您的home目录为/root/

如果你的ssh用户名是 homezz,则home目录一般为/home/homezz

cd /home/homezz 或者 cd /root

看你是什么用户就进入什么目录。

然后运行命令 mkdir .ssh

然后进入.ssh 运行命令 cd .ssh

然后运行如下命令

echo "在A服务器上 cat id_rsa.pub显示出来的内容">>authorized_keys

现在。你可以从A服务器上免密码登陆到B服务器了。

也可以不需要输入密码,从A服务器rsync数据到B服务器了。

如何定期备份mysql数据库并压缩保存

请给您的服务器安装php环境支持,因为下面的脚本是基于php的,运行php -v ,如果没有任何显示则表示没有安装
安装方法很简单 apt-get -y install php5 php5-cli (ubuntu 或者debian)
yum -y install php5 php5-devel ( centos)
mysql备份脚本内容如下:

#!/usr/bin/php
/*
homezz.com  版权所所有
盗版随意
 
*/
 
$backupdir  = "/backup";
$dbuser = "mysquser";
$dbpass = "mysqlpass";
 
/* 下面的不需要动*/
$hourly        = $backupdir."/mysql/homezz-hourly.tar.gz";
$daily          = $backupdir."/mysql/homezz-daily.tar.gz";
$weekly      = $backupdir."/mysql/homezz-weekly.tar.gz";
 
exec("mkdir -p ".$backupdir."/mysql");
 
$file ="/scripts/mysql/tmp.sql";
$cmd =( " /usr/bin/mysqldump --all-databases -u ".$dbuser." -p".$dbpass.">".$file);
exec( $cmd);
 
$cmd = "cd ".$backupdir."/mysql/; tar -czvf ".$hourly." tmp.sql; rm -rf tmp.sql; ";
exec( $cmd);
 
if( !file_exists( $daily )) exec("cp -rf $hourly $daily");
 
if( !file_exists( $weekly )) exec("cp -rf $hourly $weekly");
 
if( (time() - filectime( $daily )) >(3600*24) ){
exec("cp -rf $hourly $daily");
}
if( (time() - filectime( $weekly )) >(3600*24*7) ){
        exec("cp -rf $daily $weekly");
 
}
?>

外链接打开代码:http://pastebin.com/bqC9m8FG

将上面的文件保存到一个文件,如 /root/backup.php 运行命令 chmod +x /root/backup.php

这个脚本,可以一个小时运行一次。没有必要太频繁。运行之后,会自动保存mysql的 小时备份 日备份和周备份

如何定期同步数据到远程服务器

使用rsync,rsync安装很简单,ubuntu apt-get install rsync

centos yum install rsync

然后运行 /usr/bin/rsync -rvu /www/home [email protected]:/home/homezz/backup

这个命令就是将 /www/home 同步到 remoter.server.com 服务器上的/home/homezz/backup目录下,命令中 homezz表示远程服务器的ssh登陆名,如果您设置了免密码登陆,这个命令就不会弹出密码,直接开始同步了

rync的好处在于,第一次同步传输所有的文件,此后同步就只传输有变化的文件

设定定期执行
在你的服务器上(不是备份服务器)

现在脚本这些都准备好了,我们就让服务器自动干活

输入命令 crontab -e

即可编辑定期执行命令

输入

0 */2 * * * /root/backup.php >/dev/null 2>&1

0 */3 * * * /usr/bin/rsync -rvu /backup/mysql [email protected]:/home/homezz/mysql >/dev/null 2>&1

0 */5 * * * /usr/bin/rsync -rvu /www/home [email protected]:/home/homezz/backup >/dev/null 2>&1

第一行直接写即可

第二行和第三行请根据您实际的目录来操作

至此,异地灾难备份搞定,就算硬raid出问题也没事拉

相关文章

升级&安装最新版 golang-go
彻底删除docker
宝塔安装 nginx 失败
Ubuntu 安装 GUI 及远程桌面 Xrdp
macOS 下 GoAccess 踩坑
甲骨文(Oracle Linux)手动扩容命令

评论(2)

  1. lz好,请教个问题

    如果2台服务器都是免密码形式,都有证书,请问如何使用rsync

发布评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据