异地备份可以防止本地服务器硬盘故障以及攻击之类等,防止数据丢失。
在自动备份中,我们用到一个命令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