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

- Link: https://yjyj.net/learn/centos/3214.html
- Published: 2013-07-19T11:06:45+08:00
- Author: 小 虾

感谢流弊的[homezz](http://www.homezz.com/?c=mvp)跟东哥

**本文概览**

如何免密码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备份脚本内容如下:

    ```decode:true
    #!/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 homezz@remoter.server.com:/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 homezz@remoter.server.com:/home/homezz/
mysql >/dev/null 2>&1

0 */5 * * * /usr/bin/rsync -rvu /www/home homezz@remoter.server.com:/home/homezz/
backup >/dev/null 2>&1

第一行直接写即可

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

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

📚 【[CentOS 学习](https://yjyj.net/category/learn/centos)】专栏延伸阅读与热门精选（
[全站文章归档](https://yjyj.net/archive)）：

 * [奇怪的libssl.so.6找不到问题](https://yjyj.net/learn/centos/3209.html)
 * [升级一下iptables](https://yjyj.net/learn/centos/3208.html)
 * [在centos6上安装Ajenti](https://yjyj.net/learn/centos/3656.html)
 * [新手必须掌握的Linux命令](https://yjyj.net/learn/centos/3662.html)
 * 热门必读[Shopify Sessions 数据维度表](https://yjyj.net/learn/shopify/7764.html)
 * 热门必读[解决: windows 环境下 无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称](https://yjyj.net/learn/7776.html)

## Comments

### By: 小虾

- Link: https://yjyj.net/learn/centos/3214.html/comment-page-1#comment-12516
- Published: 2013-10-13T16:58:26+08:00

可以看看这篇 我现在正在用的:
 [http://yjyj.net/learn/centos/1926.html](http://yjyj.net/learn/centos/1926.html)

还有这个:
 [http://yjyj.net/learn/centos/1834.html](http://yjyj.net/learn/centos/1834.html)

### By: 星叔

- Link: https://yjyj.net/learn/centos/3214.html/comment-page-1#comment-12514
- Published: 2013-10-10T16:07:56+08:00

lz好，请教个问题

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