全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 554|回复: 3

用ssh远程备份多个服务器的数据

[复制链接]
发表于 2023-3-12 10:22:58 | 显示全部楼层 |阅读模式
本帖最后由 Kvm 于 2023-3-12 10:24 编辑

数据, 对于自己来说无价, 对于别人来说可能一文不值.
对于单个或者服务器进行备份, 每个服务器进行一次设置太过于繁琐,
这里给一个简单方便的备份路子,  在一个备份服务器上对多个服务器的数据进行自动备份.


备份服务器预先准备好openssh-client rsync等等, 需要备份的服务器安装好类似mysqldump, gzip,rsync,openssh-client等软件包
首先运行ssh-keygen, 默认一路回车生成一套key, 文件存放于 ~/.ssh/目录下,  一般文件名以id打头, 文件名为.pub的文件内容放到生产服务器上.
  1. ssh-keygen -t rsa
复制代码


一根据参数一般会得到类似这样的文件名 id_rsa.pub  id_ecdsa.pub  id_ed25519.pub
以id_rsa.pub为例子, 将文件内的文本内容, 写入需要进行备份数据服务器的/root/.ssh/authorized_keys文件内.
  1. cat ~/.ssh/id_rsa.pub
复制代码


快速自动shell脚本方案
  1. #!/bin/bash
  2. setenforce 0 >> /dev/null 2>&1
  3. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  4. mkdir -p /root/.ssh/
  5. cat >>/root/.ssh/authorized_keys<<EOF
  6. 这里粘贴上cat ~/.ssh/id_rsa.pub的内容
  7. EOF
复制代码


然后就是在备份服务器上测试ssh登录是否能免密码进入.



前期准备做好后, 在备份服务器上开始搞事情直接跑数据备份了.

备份服务器上开始准备目录以及备份脚本



以脚本存放文件名/opt/rsync.sh为例子
  1. #/opt/rsync.sh
  2. gettime=$(date +%Y-%m-%d-%H:%M)
  3. BAKPATH=/opt/backup/archive/$gettime
  4. mkdir -p  $BAKPATH/{SERVER1,SERVER2,SERVER3,SERVER4}  #此处以此类推
  5. ssh root@SERVER1   'cd /home/webpath/web1.com/; tar -zcf  - ./' | cat > $BAKPATH/SERVER1/web-web1.com-$(date +%Y-%m-%d-%H:%M).tar.gz
  6. ssh root@SERVER1  'mysqldump  -u数据库用户名  -p数据库密码 数据库名| gzip' > $BAKPATH/SERVER1/data-web1.com-$(date +%Y-%m-%d-%H:%M).sql.gz
  7. #这里ssh以此类推SERVER1, SERVER3 , SERVER4, 有多少个服务器就加多少个服务器
复制代码


保存好文件后执行sh /opt/rsync.sh, 测试备份是否正常.
数据库账号密码安全问题可以在服务器上写一个配置文件用shell去读去, 不用在ssh里面写明文.

测试正常后丢cron自动跑定时任务

  1. #crontab -e
  2. 0 0 * * 0 sh /opt/rsync.sh
复制代码



上面提到了rsync, 也可以加在脚本/opt/rsync.sh里面用上, 不论是将远程数据同步回来, 还是再把本地数据同步出去一份.
如果网站体积大的建议把tar打包换成rsync同步备份.


  1. mkdir /opt/backup/{SERVER1,SERVER2,SERVER3,SERVER4}/web
  2. rsync -avPq  root@SERVER2:/home/webpath/web2.com/   /opt/backup/SERVER2/web  #将远程的数据同步回备份服务器.
  3. rsync -avPq  /opt/backup/   root@SERVER4:/opt/backup/  #将备份服务器的数据同步到另外的服务器上去
复制代码



所有的脚本往/opt/rsync.sh里面丢, 一次控制N个服务器, 要更加的安全可以把备份服务器丢在nat的内网里面.




发表于 2023-3-12 10:23:46 | 显示全部楼层
好贴,谢谢大佬
发表于 2023-3-12 10:27:26 | 显示全部楼层
不错 不错 学到了 我都是直接 ssh-copy-id
 楼主| 发表于 2023-3-12 10:30:37 | 显示全部楼层
spr1ng 发表于 2023-3-12 10:27
不错 不错 学到了 我都是直接 ssh-copy-id

不想输第二次密码, 我平常都是写脚本存文件丢web上面

用的时候直接curl url|bash 跑一次,直接顺道把各种东西一次设定好了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-17 20:40 , Processed in 0.059898 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表