惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
N
Netflix TechBlog - Medium
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
B
Blog
F
Fortinet All Blogs
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
Google Developers Blog
A
About on SuperTechFans
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
MyScale Blog
MyScale Blog
B
Blog RSS Feed

博客园 - IT之家

关于antd前端组件a-select组件选择无效的问题处理记录 antd前端页面实现浏览器中PDF文件预览(不使用第三方插件 ) swagger文档生成html静态文档 根据Word模板导出word文档,包含文本标签替换为图片,生成列表数据,以及标签替换等功能 asp.net core中webapi接口的动作与参数 .NETCore文件上传将文件保存到docker容器以外的文件夹 mysql常见错误 liunx下自动备份文件夹 mysql在liunx下面的自动备份 关于.net6.0中swagger偶尔无法加载接口的问题笔记 VUE对象数组,和普通数组的常用方法 关于VUE项目请示接口报错:Error: Network Error at createError (createError.js:17) at XMLHttpRequest.handleError的问题处理 解决.net6 Docker容器 DateTime.Now 获取时间相差8小时问题(转载) CronExpression使用笔记 vue项目发布到docker nginx的方法总结 VUE项目开发报错:Error in render: "TypeError: Cannot read property 'country' of undefined" vs2022升级后打开项目报错预定义类型system.void未定义或导入” 关于.net6项目发布到docker(nginx)踩到的一些坑 关于.netcore6图片处理(生成缩略图、验证码、加水印)发布到docker(liunx)踩到的坑
liunx服务器通过ssh实现异地备份
IT之家 · 2023-07-31 · via 博客园 - IT之家

最近开发一套系统,为了安全考虑需要定时备份数据库和文件,前面已经实现本地定时备份数据库和文件,现在记录一下如何实现异地服务器备份。我这里是使用SSH进行备份,所以需要在待备份服务上面安装openssh-server,主服务器上面需要安装openssh-clients。具体操作步骤如下,我这里Liunx使用的是centos7,如果使用的是其它系统的可以将yum改为apt-get即可

1. 待备份服务器安装openssh-server,安装命令如下,如果系统没有安装openssh,下面的命令会进行安装操作

sudo yum install openssh-server  # 安装openssh-server

在安装过程中,我遇到了一个问题,就是安装的时候提示 No package openssh-server available 意思就是找不到包,这个问题产生的原因,一般是因为yum的源有问题,可以通过更新yum的方法来解决,代码如下:

cd /etc/yum.repos.d/  # 切换目录到yum的源目录
mv CentOS-Base.repo CentOS-Base.repo.back  # 备份yum源文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo # 从阿里云的源下载yum源,如果wget命令无效,你可能需要使用下面的命令安装一下wget
yum install -y wget # 安装wget,如果系统已经有了,就不需要执行这个命令了
yum clean all # 清除yum源的缓存
yum makecache # 重新建立缓存

  如果不确认是否已安装openssh-server,可以使用下面的命令查询

rpm -qa|grep openssh #此命令可以显示是否安装了openssh相关的服务

 如图所示,服务器已安装了openssh-server服务了,安装成功后可以使用下面的命令启动服务

sudo systemctl start sshd.service  # 启动服务,不同版本的centos可能命令会所有区别,如果systemctl命令不行,可以使用 sudo service sshd start

sudo systemctl enable sshd.service # 将服务设置为自动启动,同上,如果systemctl命令不行,可以使用sudo service sshd enable

2. 在主服务器上面安装openssh-client,安装操作与openssh-server的操作差不多,下面是安装命令

sudo yum install openssh-client

3.安装完后使用SSH就可以进行登录了,但是这个时候还只能使用用户名密码登录,文件备份显然是不方便的,所以要进行免密登录,步骤如下:

  1). 在待备份的服务器上面生成密钥,命令如下:  

ssh-keygen -t rsa  # 使用rsa加密方法生成密钥,生成过程中需要确认操作,直接回车确认即可。

  2). 密钥生成后,一般会的/root/.ssh/目录下面生成 id_rsa (私钥),id_rsa.pub (公钥)等文件,使用下面的命令将公钥文件复制到客户机上,输入命令后需要输入服务器对应用户名的密码才可以生效,ssh-copy-id命令是专门用户将公钥文件复制到远程主机上的

ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.19.22 # 复制公钥文件到172.16.19.22服务器上面,并且以root用户名登录,其中-i 的参数是指定公钥文件

  使用上面的命令,公钥文件就会被写入到目标服务器上面的/ssh/目录下面的,其中~表示,当前用户目录,如果是非root用户则目录为/home/username/,否则就是/root

  3). 密钥复制成功就可以使用免密码登录了,可以使用下面的命令登录

4. 使用rsynct复制将备份文件夹复制到目标服务器

 rsync -avp -e ssh /backup/ root@172.168.1.1:/backup # 使用SSH免密登录,将本地的backup文件夹复制到目标服务器的backup -a 归档拷贝 -v 显示复制过程 -p增量复制已存在的文件不再复制

 5. 将自动备份命令写入corntab服务内

crontab -e # 编辑

00 01 * * * rsync -avz -e ssh /backup  root@172.16.19.1:/backup  # 每天1点钟开始异地备份