Rootop 服务器运维与web架构

Linux服务器远程自动异地备份

| 暂无评论

异地备份可以防止本地服务器硬盘故障以及攻击之类等,防止数据丢失。

在自动备份中,我们用到一个命令scp 用来远程复制文件,类似于ftp的作用。因为我们需要实现的是自动备份,scp是需要输入密码认证的,有一个交互过程,那么我们现在就必须通过密钥来认证,在备份过程需就无需输入密码了。

由于密钥认证是用本地的私钥去解锁目标服务器的公钥实现登陆。所以在本地机器上生成公钥和私钥。

[root@rhel6www ~]# ssh-keygen -t rsa          //生成密钥 -t rsa 加密类型
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):                   //直接回车
Enter passphrase (empty for no passphrase):                //直接回车 (为密钥密码验证)
Enter same passphrase again:                 //直接回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8f:1f:3c:4b:4c:7c:1c:7d:53:02:87:c3:b8:e7:b4:da root@rhel6www
The key’s randomart image is:
+–[ RSA 2048]—-+
|           o.oo .|
|          . +o ..|
|           ……|
|         …o. ..|
|        S o+o.   |
|         * .o    |
|        . Bo     |
|         o.+E    |
|          o      |
+—————–+
[root@rhel6www ~]#

在/root/.ssh/下会生成id_rsa(私钥)和id_rsa.pub(公钥)。

将id_rsa.pub复制到远程计算机并更名为:/root/.ssh/authorized_keys

可以通过 ssh-copy-id -i id_rsa.pub root@172.17.1.121 复制到目标服务器,会自动创建authorized_keys文件并修改400权限。通过ssh-copy-id好处就是,当有多个客户端通过密钥方式连接同一个目标服务器的时候,此命令会将客户端生成的公钥追加到authorized_keys中,免去手动修改的麻烦。这里通过手动方式上传到目标服务器。

[root@rhel6www .ssh]# scp id_rsa.pub root@172.17.1.121:/root/.ssh/authorized_keys
root@172.17.1.121’s password:                //我们可以看到默认是需要密码认证的
id_rsa.pub                                   100%  395     0.4KB/s   00:00

[root@rhel5 ~]# chmod 400 authorized_keys             //在远程服务器中更改为400权限,否则还会提示需要密码的

[root@rhel6www .ssh]# touch b               //测试经过密钥认证后是否还需要密码
[root@rhel6www .ssh]# scp b root@172.17.1.121:/root/.ssh/c   //如果ssh运行在非22端口上,请在scp后加-P 指定端口号
b                                            100%    0     0.0KB/s   00:00
[root@rhel6www .ssh]#                //没有提示需要密码,说明密钥认证配置成功。

现在就开始写脚本,订制备份时间、文件等。自由发挥,比如说我之前有个自动备份数据库的脚本:


#!/bin/bash
 backdir="/mnt/sdb1/backup"
 dirname="$(date +%Y-%m-%d-%H-%M)"
 DIR="www db"
 for dir in $DIR
 do
 mkdir -p $backdir/$dirname/$dir
 done

# web backup
 www="www.tar.gz"
 tar zcfP $backdir/$dirname/www/$www /var/www

# database backup
 clubdb="club.tar.gz"
 cd /var/lib/mysql
 mysqldump --opt -u root -p --password=YOURDATABASEPASSWORD club > $backdir/$dirname/db/club.sql
 tar zcfP $backdir/$dirname/db/$clubdb $backdir/$dirname/db/club.sql
 $backdir/$dirname/db/$clubdb root@172.17.1.121:/root/test_backup
 rm -rf $backdir/$dirname/db/club.sql

添加任务计划:
#crontab -e
#24 15 * * * /back.sh

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/750.html

作者:Venus

服务器运维与性能优化

发表回复