centos 备份目录?centos7返回上一层目录

大家好,关于centos 备份目录很多朋友都还不太明白,今天小编就来为大家分享关于centos7返回上一层目录的知识,希望对各位有所帮助!

GitLab 远程 定时备份

一、环境准备

1.gitlab所在的服务器A(centos7,192.168.1.1)

2.备份服务器B(centos7,192.168.1.2)

3.gitlab本地备份目录设置为/var/opt/gitlab/backups/log,本篇也是以此展开

gitlab已经配置了本地备份。如果没有配置,可以参考 。

二、通过密钥配对取消scp传输密码的限制

手动备份数据费时费力。最好的方法就是通过脚本实现远程自动备份。但远程无论是通过SSH登陆,还是通过scp拷贝文件都需要输入密码。

为了克服这个问题,首先需要实现不需要密码的SSH登陆,这样就可以使用 rsync,scp,rexec等命令来做的远程备份了。

2.1生成密钥对

假设A,B两服务器,现在需要在A机上用root登陆B机,而不需要输入密码。那我们可按照下面的步骤来做:

** 1)在gitlab服务器A上生成rsa证书**

1、生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。

2、因为之前已经有/root/.ssh/id_rsa文件存在,因此提示你是否覆盖,输入y表示覆盖

3、接着会提示输入一个密码,直接回车,让它空着。当然,也可以输入一个密码。

4、接着输入确认密码,输入完之后,回车密钥对就生成完了。

这样,在/root/.ssh下生成id_rsa和 id_rsa.pub两个文件,其中公共密钥保存在/root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa。

** 2)在gitlab服务器A上cp生成rsa公钥证书**

在/root/.ssh下复制备份一份id_rsa.pub命名为 id_rsa.pub.A,以便拷贝到远程服务器B。

2.2生成rsa公钥证书上传到备份服务器B

先在服务器B上创建目录/root/.ssh。

使用scp命令进行远程复制,将服务器A生成的id_rsa.pub.A拷贝到服务器B的/root/.ssh目录下。

此时使用scp命令需要输入密码,当把下面的“2.3密钥配对”执行后,以后gitlab服务器A使用scp命令复制文件到备份服务器B的话,就不需要输入密码了。

2.3密钥配对

1)创建authorized_keys文件

在备份服务器B的/root/.ssh下创建authorized_keys文件。

2)将id_rsa.pub.A文件内容追加到authorized_keys文件中

通过 cat命令把id_rsa.pub.A追写到 authorized_keys文件中。

3)修改authorized_keys文件的权限

authorized_keys文件的权限很重要,如果设置为777,那么登录的时候,还是需要提供密码的。

4)测试上传文件是否还要输入密码

不放心的话,立刻测试下gitlab服务器A使用scp命令复制文件到备份服务器B是否还要输入密码。

发现在2.3之前,由于没有设置ssh证书授权认证时,上传需要输入密码;2.3操作完后,由于授权认证,已经不需要输入密码了。

三、定时将备份文件传到备份服务器

3.1创建远程备份脚本

在gitlab服务器A上,在/root目录下创建定期备份脚本auto_backup_to_remote.sh。

添加下面的内容,并wq保存。

3.2修改远程备份脚本auto_backup_to_remote.sh的权限

要能让系统执行 auto_backup_to_remote.sh,必须修改该脚本的权限。

3.3创建日志存放目录

3.4测试远程备份脚本的功能是否可用

现在为了验证脚本是否可以正常运行,我们需要手动执行脚本。

在gitlab服务器A上执行find命令,看是否能够正常查找出我们要scp到远程服务器的Gitlab备份文件。

手动执行脚本auto_backup_to_remote.sh,看是否能够正常上传

等待1-2分钟左右,查看备份服务器B的目录/root/gitlab_backup下是否有服务器A传过来的备份文件。

在备份服务器B上能找到服务器A传过来的备份文件,说明远程备份脚本的功能OK。

如果每次上传都通过人工运行脚本的方式,人工的消耗太大,接着配置定时执行该脚本。

3.5添加定时计划

定时备份的思路建立在手动的基础上,通过crontab添加定时计划就可以解决这个问题。

一般添加定时计划可以有2种方式:

1.使用命令crontab-e,将定时任务添加后保存。

2.将定时任务添加到/etc/crontab文件中。

我这里采取第一种,使用crontab-e。

结合我之前对公司gitlab本地备份的设计,故设计在备份完10分钟后上传,故分别在每天12:10、19:10进行备份,故添加下面的内容,wq保存。

重启crontab

四、定时删除备份服务器上的备份文件

每个Gitlab备份文件都很大。因此每天备份两次,过不了多久的话,备份服务器B上的磁盘空间可能就会被Gitlab备份文件占用完。

故需要定期清理备份文件,参考备份服务器的空间,暂定保留14天的备份文件。

4.1创建删除过期备份文件的脚本

设计备份服务器B的/root/gitlab_backup作为接收远程上传备份文件的目录,故在备份服务器B上,先创建该目录。

创建删除过期备份文件的脚本auto_remove_old_backup.sh。

添加下面的内容,并wq保存。

4.2修改auto_remove_old_backup.sh脚本的权限

4.3添加定时计划

定时备份的思路建立在手动的基础上,通过crontab添加定时计划就可以解决这个问题。

一般添加定时计划可以有2种方式:

1.使用命令crontab-e,将定时任务添加后保存。

2.将定时任务添加到/etc/crontab文件中。

我这里采取第一种,使用crontab-e。

设计凌晨0点执行删除过期备份文件的脚本,故添加下面的内容,wq保存。

重启crontab

centos系统重装后,原先数据盘如何挂载数据不丢失

为了确保在重新安装 CentOS系统后原先数据盘上的数据不丢失,可以采用备份、挂载数据盘和恢复数据的方法进行操作。以下是详细的步骤:

一、备份/home/liying目录数据

为了确保数据安全,操作前请确保系统已重启,避免服务运行影响操作。

1.新建备份目录

# cd/

# mkdir backup

2.将/home/liying目录下的数据备份至/backup目录

# cd backup

# sudo cp-r/home/liying/*.

3.清空/home/liying目录下的数据

# cd/home/liying/

# ls

# sudo rm-rf*

注意:操作时需谨慎,确保数据备份成功且避免误删重要文件。

二、挂载数据盘

确保系统识别到数据盘后,按照以下步骤挂载。

1.检查数据盘

# df-h#查看已挂载的磁盘信息

# fdisk-l#查看磁盘分区情况

找到数据盘路径,如/dev/vdb

2.给硬盘分区

使用 fdisk/dev/vdb进行分区操作

输入命令:n, p, 1,回车,回车, wq

根据实际情况替换vdb为实际磁盘名称

3.格式化分区

使用 mkfs.ext3/dev/vdb1命令格式化分区

4.挂载分区

使用 mount/dev/vdb/要挂载的目录

例如:mount/dev/vdb/home/liying#设置/home/liying为可读模式

使用 mount-o remount,rw/dev/vdb/home/liying#设置/home/liying为读写模式

注意:要挂载的目录为/home/liying。

5.开机自动挂载

将挂载信息添加至/etc/fstab

使用 echo'/dev/vdb/home/liying ext3 defaults 0 0'>>/etc/fstab#设置开机自动挂载

注意:要挂载的目录为/home/liying。

至此,CentOS的数据盘成功挂载。验证时可执行df-h命令查看。

三、恢复/home/liying目录数据

确保挂载步骤成功后,执行以下步骤恢复数据。

1.将备份目录下的数据恢复到/home/liying目录

# cd backup

# sudo cp-r*/home/liying/

2.验证安装的软件是否正常运行

# java-version#检查JDK版本

# cd/home/liying/dev/tomcat-8080/bin#切换到Tomcat目录

#./startup.sh#启动Tomcat服务

访问 检查Tomcat服务是否正常运行

通过以上步骤,可以确保在 CentOS系统重新安装后,数据盘上的数据不丢失,且系统软件可以正常运行。

启动盘安装centos

启动盘安装centos(启动盘安装centos7)刚买的thinkpad t430u 64位的笔记本,发现装Linux是一件非常麻烦的事,以前装个linux系统,配置双启,1个小时就能搞定,而这一次我连装centos6.4带配置双启,花了三个星期。双启后成功后又装了Arch,现在笔记本是三系统,三周的时间里,笔记本重启不下300次。我也不知道能不能成功,所以事先,并没有做详细的笔记电脑。所以下面,只是大致的记录。

关闭secure boot

开机按F1进入bios=>security=>secure boot

笔记本不同,可能secure boot的配置不同,将其disabled掉,要不然,选择U盘启动,光盘启动都无效,报没有权限。

bios里面配置启动项,默认efi only,改为both

bios=>startup=>uefi/legacy boot

启动优先级里面有三个选择,

1,efi only(注释:默认)

2,both(注释:二种方式都可以)

3,legacy only(注释:grub1)

这里说的启动根选择U盘启动,光盘启动不一样。这里的启动是,多系统安装好了,而选择的启动模式。而U盘启动,电脑光盘启动这种情况是系统还没有装时选择的安装启动。我的本子,按F12可以选择U盘启动,或者光盘启动。

为什么要进行这一步,如果不改,默认是装在第二块硬盘上面的,也就是efi的默认启动盘,安装CentOS时:

win8装centos

根本没有“更换设置”这个按钮,并且引导程序只能安装在/dev/sda2上面,选中的情况下,centos6.4 64位,根本安装不成功,所有包安装完后,配置时提示报错,

an unhandled exception has occurred.this is most likely a bug.plese copy the full text of this exeception and file a detailed bug report.against anaconda at

让提交bug到centos,这个有点坑爹。

将efi only改成both后,重新安装,“更换设置”就会出现,并把引导程序装到centos所在的分区,这样centos可以顺利装完,怎么安装网上太多,在这儿就不哆嗦了。

用easybcd和纯grub1实现双启都不可能

用easybcd和纯grub1实现双启根本不可能,大家就不要浪费时间了。网上有说easybcd2.2可以实现,我试过无数次不行。

在启动优先级里面选择,legacy only,保存重启,久违的centos界面出现了,那叫一个激动。下方向键选择others,windows进不去。总之还是有点高兴的,centos装成功了,我信心大增,通过grub1,我想能启动win8,然后我就开始尝试用grub1启动win8,又试了不知道多少次不行。我想完全靠grub1启动是不可能了

用centos自带的efi实现双启

1,启动优先级里面,选择legacy only,进入到centos

2,下载三个文件,BOOTX64.conf BOOTX64.efi splash.xpm.gz

或者是从iso镜像中解压也行。

3,挂载efi的启动盘

mkdir/mnt/usb

mount/dev/sda2/mnt/usb

cd/mnt/usb

mkdir image

cp/boot/initramfs-2.6.32-358.el6.x86_64.img./image/initrd.img

cp/boot/vmlinuz-2.6.32-358.el6.x86_64./image/vmlinuz

在efi启动盘的根目录也就是/dev/sda2上面,建一个image文件夹,把装好的cenots内核考过来,我为什么要这么干呢,因为BOOTX64.conf这个文件就是这么干的。

[root@localhost image]# ll/mnt/usb/image/

总用量 26812

-rwxr-xr-x. 1 root root 16532286 6月 1 18:11 initrd.img

-rwxr-xr-x. 1 root root 3089184 6月 1 19:11 initrd.img-arch//这是arch的,装了三系统

-rwxr-xr-x. 1 root root 4043888 6月 1 18:10 vmlinuz

-rwxr-xr-x. 1 root root 3778496 6月 1 19:10 vmlinuz-arch//这也是arch的,

4,这一步建redhat目录是多余的,我是按照操作时候的步骤来写这篇博客的

[root@localhost EFI]# mkdir/mnt/usb/EFI/redhat

为什么要redhat,而不是centos呢,装好的centos,/boot/efi/EFI(注:这个目录在系统的boot下面,不在sda2上面),这个目录下就有redhat,后来我才知道,这个目录没用。

将上面的三个文件BOOTX64.conf BOOTX64.efi splash.xpm.gz,copy到/mnt/usb/EFI/redhat目录下面

看一下我的配置:

[root@localhost redhat]# cat BOOTX64.conf

#debug--graphics

default=1

#splashimage=/EFI/BOOT/splash.xpm.gz

timeout=5

#hiddenmenu

title CentOS 6.4

kernel/image/vmlinuz ro root=/dev/sda7

initrd/image/initrd.img

title Windows8

chainloader/EFI/Microsoft/Boot/win8.efi

title Archlinux

kernel/image/vmlinuz-arch ro root=/dev/sda9

initrd/image/initrd.img-arch

上面的win8.efi是bootmgfw.efi的备份,后来我把bootmgfw.efi也替换了,下面会提到的,这东西启动win8用的。

重启测试

重启F1,进bios,把启动优先级设为efi only,保存重起进grub

grub> configfile/efi/redhat/BOOTX64.conf

注意:grub下面是小定的,linux系统下是大写的,最好是用tab键提示。然后三个启动选项就出现了,我选了一下,都是可以进的,那叫一个激动啊,离成功不远了。

grub> chainloader/efi/Microsoft/Boot/win8.efi

win8也是可以进的

只要启动时能让EFI识别BOOTX64.conf这个文件,并读取,就搞这定了。

然后我就开始把redhat这个目录到处copy,发现不行,我又把BOOTX64.conf BOOTX64.efi splash.xpm.gz,这三个文件到处copy,EFI下面的每个目录我都试了。不行。

refind efi启动器

没办法啊,就上google上面找efi启动工具,看了好多,发现The rEFInd Boot Manager还是比较靠谱的。

下载地址:,这个是二进制版的。

该工具官方地址:,下载,安装,以及使用说明都有。

安装配置地址:

下面是我的操作:

cp-r refind/mnt/usb/EFI/

cd/mnt/usb/EFI/refind

rm-rf drivers_ia32

rm-f refind_ia32.efi

rm-rf tools_ia32

[root@localhost boot]# ll/mnt/usb/EFI/refind///删除后就是这样子

总用量 224

drwxr-xr-x. 2 root root 4096 6月 1 17:52 drivers_x64

drwxr-xr-x. 2 root root 8192 6月 1 17:52 icons

-rwxr-xr-x. 1 root root 17774 6月 1 20:55 refind.conf

-rwxr-xr-x. 1 root root 17911 6月 1 17:52 refind.conf-sample

-rwxr-xr-x. 1 root root 170824 6月 1 17:52 refind_x64.efi

drwxr-xr-x. 2 root root 4096 6月 1 17:52 tools_x64

如果你是64的系统,就把32的删除掉,反之就删64的。

mv refind.conf-sample refind.conf

然后配置refind.conf,我的配置肯定不对,如果要对的话,直接是可以用refind进入centos,win8,arch的。而不是refind去调用grub来启动

中的Installing rEFInd Manually Using Linux,安装方法中,6,7这二步,没敢做,我实在无法预测,efibootmgr-c-l\EFI\refind\refind_x64.efi-L rEFInd,执行这个命令到底会有什么后果。

重启后,无法进入refind界面

然后就在仔细阅读文件

rename EFI/BOOT/refind_x64.efi to the name of the boot loader it's replacing—it should become EFI/BOOT/bootx64.efi or EFI/Microsoft/Boot/bootmgfw.efi.

发现有上面的东西,操作如下:

[root@localhost EFI]# cp-r./Microsoft/Boot/./Microsoft/Boot_bak

[root@localhost EFI]# cp-r./refind/*./Microsoft/Boot/

[root@localhost EFI]# cd./Microsoft/Boot/

[root@localhost Boot]# cp bootmgfw.efi win8.efi//上面提到的win8.efi就是在这儿来的

[root@localhost Boot]# mv refind_x64.efi bootmgfw.efi

先把EFI/Microsoft/Boot/这个目录备份,这样我不管怎么配置Boot的目录,我可以还原,进WIN8绝对没问题。efi启动,会默认读取/EFI/Microsoft/Boot/bootmgfw.efi,我的机子是这样子的,规定死了。

重启后,可以进入refind的引导界面,但是没有一个系统能进

refind配置不正确,无法进入任何一个系统,但是我发现refind的第二个引导项读取到了/grub/BOOTX64.conf,并且是默认的centos的BOOTX64.conf,grub是什么时候建的我都忘了,里面是下载的原始的centos的BOOTX64.conf BOOTX64.efi splash.xpm.gz

[root@localhost refind]# cp/mnt/usb/EFI/redhat/*/mnt/usb/EFI/grub

[root@localhost refind]# cd/mnt/usb/EFI/Microsoft/Boot/

[root@localhost Boot]# vim refind.conf

timeout 2

default_selection 2//将第二引导项调为默认

知道refind读取哪个启动文件就好办了,把redhat下面已经配置好的文件copy到grub目录下就搞定了。

就这样我的三系统启动搞定了,不过还有缺点,

第一,引导是分二步的,首先是refind引导,然后refind调用BOOTX64.conf,在通过grub来引导,之后才能进入系统。

第二,内核版本,是copy到了,efi的启动盘上面,升级内核,也用不了,除非在重新将内核copy到sda2上面。

阅读剩余
THE END