环境:
linux服务器2台
服务器A:192.168.1.10(mysql数据库,root 123456)
服务器B: 192.168.1.50
适用的环境:这是一个非常简单的shell脚本,它适合网站比较小和数量比较少的服务器
目标:
首先,在服务器A,上利用scp,将数据的备份文件传输到服务器B,但是在用scp的时候,需要输入ssh的密码,所以,这个时候需要在服务器A的把ssh公共密钥,远程复制到服务器B中,这样,在使用scp后,就不需要输入密码
第二,在服务器A,上写一个脚本,内容主要包括2个,一个是自动备份数据库和网站数据,第二个就是,将数据备份文件传输到服务器B上
最后,设置一个自动运行脚本的计划任务
具体步骤如下;
- 为了使用scp的时候不需要输入密码,采用ssh另一种用密钥对来验证的方式?。
a.使用ssh-keygen 命令生成密钥。生成过程中,都选择默认的值:回车即可。
[root@xxx root]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory “/root/.ssh”.
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:
e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7
这样会在用户目录~/.ssh/产生两个文件,id_rsa,id_rsa.pub
b.、把这个密钥对中的公共密钥访问属性改为755,然后复制到备份的机器上去,并改名为 authorized_keys
chmod 755 id_rsa.pub
scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
测试:
[root@localhost .ssh]# rsync -az --exclude="*.svn" --exclude="*.git" --delete ./* [email protected]:/gldata1/server/douluo_android_game239/ [root@localhost .ssh]# ssh 192.168.0.239 Last login: Wed Jun 9 05:42:27 2021 from 192.168.0.239 [root@localhost ~]# exit logout Connection to 192.168.0.239 closed. [root@localhost .ssh]# touch 1 [root@localhost .ssh]# scp ./* [email protected]:/root/ 1 100% 0 0.0KB/s 00:00 authorized_keys 100% 408 712.5KB/s 00:00 id_rsa 100% 1679 3.4MB/s 00:00 id_rsa.pub 100% 408 1.0MB/s 00:00 known_hosts 100% 175 243.7KB/s 00:00 li 100% 1675 2.9MB/s 00:00 li.pub
2.编写脚本
#!/bin/bash
cd /backup
#backup database
echo ====You are In Backup Directory====
mv *.sql /oldbackup
echo ====Old Databases are Moved to oldbackup folder====
Now=$(date +”%d-%m-%Y–%H:%M:%S”)
File=backup-$Now.sql
mysqldump -u root -p123456 teddylu > $File
echo ====Your Database Backup Successfully Completed====
scp /backup/*.sql [email protected]:/home
echo ====databases are already done!====
#backup webfiles
cd /home/teddylu/public_html
mv *.zip /backup2
echo ====old webfiles are moved to backup2 folder===
Now2=$(date +”%d-%M-%Y–%H:%M:%S”)
File2=backup-$Now2.zip
zip -r $File2 ./*
scp /home/teddylu/public_html/*.zip [email protected]:/home
#/home/teddylu/public_html这个是我网站的根目录
echo ====webfiles are already done!====
脚本说明,这个脚本,就是现在备份数据库和网站数据,在通过scp复制到服务器B上,
下图,就是脚本执行的结果:
3.使用cron制订备份计划
使用Cron可以定时执行该脚本,备份会自动完成。使用?crontab?命令编辑cron 执行的计划任务。
1
|
#crontab –e |
只要在编辑器上加入下面这一行代码保存即可。
1
|
013* * * * /backup/backup .sh |
本任务表示的是在每天下午1点钟把数据库备份到指定的文件夹