热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux服务器实现全自动备份数据--远程备份

系统备份是系统管理工作中十分重要的一个环切,本文详细介绍了各种Linux系统的备份方法,相信对大家的日常管理工作有所帮助。备份是一项重要的工作,但是很多人没有去做。一旦由于使用不当造成数据丢失,备份就成了真正的救命者。本文将讨论设置备份的策略

要写脚本程序来实现服务器的备份,经过2天的努力,终于实现了这个功能。这里把整个过程整理一下:

     我们首先设服务器为CA,IP:10.144.49.32,备份服务器为CA-BAK。IP:10.144.49.33

 

第1步:实现CA服务器的自动备份,首先确定要备份的目录,我这里要备份的目为以下这三个目录:    

/usr/local/trusdata/var/trusdatauser,/var/lib/mysql和/usr/local/trusdata/var/trusdatapolicy

第2步:为编写自动备份程序安家,首先我们确定用一个目录来存放这些文件,先建一个目录和然后建一个文件bakupcaadata.cron用以下脚本来实现,并赋予这个文件为可执行文件。                        

cd /

mkdir back

touch bakupcaadata.cron

chmod 711 bakupcaadata.cron

第3步:编写自动备份程序:目的。实现对目标目录进行自动备份,每天凌晨1点备份一次,并以日期命名。用以下脚本来实现,分别存放在BACK目录下的三个目录下datauser,datamysql和policy。

[root@localhost back]# vi bakupcaadata.cron
export DATETIME=`date +%Y%m%d`
cd /usr/local/trusdata/var/
tar -czf datauser.bak trusdatauser/
mv datauser.bak /back/datauser/datauser.$DATETIME.bak

cd /var/lib/
tar -czf datamysql.bak mysql/
mv datamysql.bak /back/datamysql/datamysql.$DATETIME.bak
cd /usr/local/trusdata/var/
tar -czf datapolicy.bak trusdatapolicy/
mv datapolicy.bak /back/policy/datapolicy.$DATETIME.bak

第4步:实现本机的自动备份,我们在任务文件创建一个规则,自动执行任务的文件为crontab,使用以下脚本:

[root@localhost .ssh]# vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
01 1 * * * root /back/bakupcaadata.cron

[root@localhost .ssh]#/etc/rc.d/init.d/crond restart

以上4步实现了本机的自动备份。下面要实现自动cp到另外一台服务器。

 

第5步:用raid实现或者重新安装一台和CA服务器一样的系统,我这里用raid克隆了一台一摸一样的系统。当然这个工作应该在第一步之前做,因为这里不需要自动备份。

 

第6步:实现从CA-bak自动去CA服务器上拷贝,拷贝的过程使用证书认证,加密传输。首先我们用rsa给各个机器产生一对密钥对。程序如下:

     在CA服务器上,增加一个用户roger,当CA-BAK去CA服务器上拷贝时用roger用户;

[roger@localhost roger]$ ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/roger/.ssh/id_rsa):
Created directory \'/home/roger/.ssh\'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/roger/.ssh/id_rsa.
Your public key has been saved in /home/roger/.ssh/id_rsa.pub.
The key fingerprint is:
60:97:c5:99:12:5e:b4:c6:f1:6f:b9:9a:cd:8b:8b:04 roger@localhost.localdomain

[roger@localhost roger]$mv id_rsa.pub roger.pub (用于2台服务器区分)

     同理在CA-BAK上

[root@localhost root]# ssh-keygen -b 1024 -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:
67:ef:a3:2a:40:fb:34:20:d9:76:b9:b0:90:ef:68:06 root@localhost.localdomain

产生密钥对后,互相把自己的公钥传给对方,并重命名为

在CA-BAK上

scp -r -p roger@10.144.49.32:/home/roger/roger.pub /root/.ssh/

cd /root/.ssh

mv roger.pub authorized_keys(必须)

在CA上

scp -r -p root@10.144.49.33:/root/.ssh/id_rsa.pub /home/roger/.ssh/

cd /home/roger/.shh/

mv id_rsa.pub authorized_keys

这样就实现了双方的认证。

这样就能实现双方自动拷贝

如:

scp -r -p roger@10.144.49.32:/back/id_rsa.pub /back
id_rsa.pub           100% |*******************************************************************************************|   237       00:00

编写一个自动从CA服务器上拷贝程序

 

同样,在CA-BAK服务器上建立一个目录back和一个可执行文件backup.cron。脚本如下:

export DATETIME=`date +%Y%m%d`

scp -r -p roger@10.144.49.32:/back/datauser/datauser.$DATETIME.bak /back/datauser

scp -r -p roger@10.144.49.32:/back/datamysql/datamysql.$DATETIME.bak /back/datamysql

scp -r -p roger@10.144.49.32:/back/policy/datapolicy.$DATETIME.bak /back/policy


推荐阅读
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
author-avatar
幽兰伴竹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有