【Maven学习】Nexus OSS私服仓库的备份与迁移

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 背景 在上一篇博客 【Maven学习】Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库。下面是两个版本的Nexus OSS私服仓库的对比图。 老的Nexus OSS私服仓库 新的Nexus OSS私服仓库 明显老的Nexus OSS私服仓库的内容比新的Nexus OSS私服仓库的内容多。

背景

在上一篇博客 【Maven学习】Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库。下面是两个版本的Nexus OSS私服仓库的对比图。

老的Nexus OSS私服仓库
这里写图片描述

新的Nexus OSS私服仓库

这里写图片描述

明显老的Nexus OSS私服仓库的内容比新的Nexus OSS私服仓库的内容多。因此我们现在的工作就是将办公室上的老的Nexus服务器上的所有的数据迁移到机房的Nexus服务器。这一篇博客记录下整个Nexus OSS私服仓库的备份与迁移的过程。

一、老的Nexus OSS私服仓库备份

迁移中会遇到三个文件夹 , 打包、拉走 启动即可。

名称 目录名 重要配置文件
nexus主目录 nexus-2.6.4-02 conf/nexus.properties里面有sonatype-work的地址
sonatype-work目录 sonatype-work nexus/conf/nexus.xml里面有storage的地址
storage目录 storage 里面主要是各种程序的jar包等

迁移流程如下

这里写图片描述

首先我们在老的Nexus OSS私服仓库的这台Linux服务器上,查看相关的目录信息。

这里写图片描述

如上图所示,在老的Nexus OSS私服仓库的这台Linux服务器上,

nexus主目录的地址为:/usr/local/nexus-2.12.1-01

这里写图片描述

/usr/local/nexus-2.12.1-01/config/nexus.properties 文件中,指定了sonatype-work的地址

现在我们进入 /usr/local/sonatype-work/nexus/storage目录,查看里面的目录结构

[root@kf1appsvr storage]# pwd
/usr/local/sonatype-work/nexus/storage
[root@kf1appsvr storage]# ll
total 52
drwxr-xr-x   6 root root 4096 Dec  4 08:49 android-beta
drwxr-xr-x   6 root root 4096 Dec  4 08:49 android-dev
drwxr-xr-x   6 root root 4096 Dec  4 08:49 android-release
drwxr-xr-x   6 root root 4096 Dec  4 08:49 android-snapshots
drwxr-xr-x  10 root root 4096 Dec  4 08:49 android_public
drwxr-xr-x   4 root root 4096 Dec  4 08:49 apache-snapshots
drwxr-xr-x  30 root root 4096 Dec  4 08:49 central
drwxr-xr-x 125 root root 4096 Nov 30 17:08 central-m1
drwxr-xr-x   6 root root 4096 Dec  4 08:49 public
drwxr-xr-x   4 root root 4096 Dec  4 08:49 releases
drwxr-xr-x   4 root root 4096 Dec  4 08:49 snapshots
drwxr-xr-x   5 root root 4096 Dec  4 08:49 thirdparty
drwxr-xr-x   2 root root 4096 Jan 11  2017 xtc_devs

这里写图片描述

将此目录结构和Nexus管理界面对比,可以一一对应,如下所示。
这里写图片描述

从上面分析来看,我们只需要将nexus主目录和sonatype-work目录都备份好即可。但是两个Linux服务器的nexus配置的java路径之类的可能不同,我就不备份nexus主目录了。

我只备份sonatype-work目录,Nexus的构件仓库都保存在sonatype-work目录中,该目录的位置由nexus/conf/nexus.properties配置文件指定。

使用 tar命令将 sonatype-work目录 打包压缩为一个 tar.gz文件,命令如下所示

[root@kf1appsvr local]# tar -zcvf sonatype-work-2017-12-14.tar.gz ./sonatype-work/

备份中,整个备份过程比较缓慢,因为两年传上去的的文件和文件夹太多了。

这里写图片描述

打包完毕

这里写图片描述
生成了 sonatype-work-2017-12-14.tar.gz 文件,占用了2770940709 字节,差不多2.6G
这里写代码片

二、将老的Nexus OSS私服仓库的备份文件复制到新的Nexus OSS私服仓库

上一步我们将整个 sonatype-work 目录打包成一个压缩包 sonatype-work-2017-12-14.tar.gz,现在我们要将这个压缩包复制到新的Nexus OSS私服仓库的Linux服务器上。

我们是有 scp命令来进行复制操作,关于scp命令的操作可以参考之前的文章 git学习------> Gitlab如何进行备份恢复与迁移?

使用scp命令从远程服务器copy文件或者目录到本地

scp 用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2

[用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 .

可能有用的几个参数 :

  • -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .
  • -C 使能压缩选项 .
  • -P 选择端口 . 注意 -p 已经被 rcp 使用 .
  • -4 强行使用 IPV4 地址 .
  • -6 强行使用 IPV6 地址 .

例如我使用如下命令,从远程服务器copy刚才的备份文件sonatype-work-2017-12-14.tar.gz到了新服务器的/usr/local 目录下

scp root@老的linux的ip地址:/usr/local/sonatype-work-2017-12-14.tar.gz /usr/local/

我们登录到新的Nexus OSS私服仓库那台linux服务器,然后执行上面的命令

这里写图片描述

敲了命令之后,需要我们确认是否connecting,我们敲一个yes,接着需要我们输入老的Nexus OSS私服仓库那台linux服务器的密码,如下所示

这里写图片描述

敲完之后,如果密码正确的话,则将刚才的备份文件copy到这台新的linux服务器。稍等一段时间之后则可以copy完毕,如下图所示:

这里写图片描述

真心尴尬,根目录 / 的磁盘空间用完了,导致复制过程终止,我们将这个复制到一半的文件删除掉。

我发现 /data2 的磁盘空间很充裕,因此我将文件复制到 /data2目录下,如下图所示

这里写图片描述

复制完毕之后,查看 /data2 目录,发现 复制过来的 sonatype-work-2017-12-14.tar.gz 文件也是 2770940709个字节,完整复制过来了。

这里写图片描述

三、解压备份文件

因为 根目录 / 下的磁盘空间不足,因此我们将刚才的压缩包解压到 /data2目录下。如下所示:

tar -zxvf sonatype-work-2017-12-14.tar.gz

这里写图片描述

解压过程

这里写图片描述

解压好后,会生成一个 sonatype-work目录。如下图所示:

这里写图片描述

四、还原仓库

因为我们新的Nexus OSS私服仓库之前制定的仓库地址为

[root@localhost local]# cd nexus-2.12.1-01/
[root@localhost nexus-2.12.1-01]# ll
总用量 40
drwxr-xr-x 3 1001 1001  4096 12月 13 16:27 bin
drwxr-xr-x 2 1001 1001  4096 12月 13 18:06 conf
drwxr-xr-x 2 1001 1001  4096 12月 13 16:27 lib
-rw-r--r-- 1 1001 1001 11006 3月   3 2016 LICENSE.txt
drwxr-xr-x 2 1001 1001  4096 12月 13 18:08 logs
drwxr-xr-x 4 1001 1001  4096 12月 13 16:27 nexus
-rw-r--r-- 1 1001 1001   782 3月   3 2016 NOTICE.txt
drwxr-xr-x 5 1001 1001  4096 12月 13 18:08 tmp
[root@localhost nexus-2.12.1-01]# pwd
/usr/local/nexus-2.12.1-01
[root@localhost nexus-2.12.1-01]# cat conf/nexus.properties 
#
# Sonatype Nexus (TM) Open Source Version
# Copyright (c) 2008-present Sonatype, Inc.
# All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
#
# This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
# which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
#
# Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
# of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
# Eclipse Foundation. All other trademarks are the property of their respective owners.
#

# Sonatype Nexus
# ==============
# This is the most basic configuration of Nexus.

# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus

# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF
[root@localhost nexus-2.12.1-01]# 

这里写图片描述

现在我们将老的Nexus OSS私服仓库的备份仓库 解压到了 /data2目录下,因此我们需要修改nexus/conf/nexus.properties配置文件,重新指定仓库的目录为 /data2/sonatype-work/nexus

这里写图片描述

我们修改 /usr/local/nexus-2.12.1-01/conf/nexus.properties 文件

[root@localhost nexus]# vim /usr/local/nexus-2.12.1-01/conf/nexus.properties

修改后的配置文件如下所示

#
# Sonatype Nexus (TM) Open Source Version
# Copyright (c) 2008-present Sonatype, Inc.
# All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
#
# This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
# which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
#
# Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
# of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
# Eclipse Foundation. All other trademarks are the property of their respective owners.
#

# Sonatype Nexus
# ==============
# This is the most basic configuration of Nexus.

# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus

# Nexus section
#nexus-work=${bundleBasedir}/../sonatype-work/nexus
#新的地址为
nexus-work=/data2/sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF

这里写图片描述

五、重启Nexus

使用 /etc/init.d/nexus2 restart 命令 重启Nexus服务

[root@localhost nexus]# /etc/init.d/nexus2 
Usage: /etc/init.d/nexus2 { console | start | stop | restart | status | dump }
[root@localhost nexus]# /etc/init.d/nexus2 restart
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
Stopping Nexus OSS...
Stopped Nexus OSS.
Starting Nexus OSS...
Started Nexus OSS.
[root@localhost nexus]# 

这里写图片描述

重启完后,刷新浏览器查看新的Nexus服务器,如下所示

这里写图片描述

对比下,老的Nexus服务器

这里写图片描述

除了IP地址不一样之外,其他的都一样,迁移成功!

测试了下之前在博客 【我的Android进阶之旅】快速创建和根据不同的版本类型(Dev、Beta、Release)发布Android 开发库到Maven私服 中写的Gradle脚本上传到新的Nexus服务器也是正常的!


参考链接

这里写图片描述

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!

转载请保留原文地址:http://blog.csdn.net/ouyang_peng/article/details/78796215
本文同步发表在阿里云栖:https://yq.aliyun.com/articles/283565?spm=5176.blogshare283565.0.0.31jPfx

如果觉得本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行随意打赏。您的支持将鼓励我继续创作!

这里写图片描述

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
Java 应用服务中间件 测试技术
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。 本文主要了解Maven基础知识及基础应用,旨在为之后的进一步学习奠定基础。 内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。 仅供参考。
240 80
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
|
3月前
|
敏捷开发 Java 持续交付
阿里云云效产品使用合集之maven仓库是否可以代替自建的Nexus
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
Java Linux Maven
Maven 仓库
Maven仓库管理构件(如JARs):本地仓库在首次执行时创建,默认位于`%USER_HOME%/.m2/repository/`;远程仓库包括中央仓库,存放大量开源Java构件,可在线浏览<http://search.maven.org/>。若本地缺失构件,Maven会从远程下载至本地。可通过settings.xml配置本地仓库路径。
|
1月前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
508 3
|
3月前
|
前端开发 Java 编译器
【前端学java】如何从前端视角快速学习Maven
【8月更文挑战第12天】如何从前端视角快速学习Maven
53 2
【前端学java】如何从前端视角快速学习Maven
|
3月前
|
敏捷开发 JavaScript Java
阿里云云效产品使用合集之如何进行Maven私有仓库迁移
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
Java Maven
maven开源仓库
maven开源仓库
107 6
|
4月前
|
Java Linux Maven
Maven 仓库
Maven仓库管理构件,包括依赖和插件。有本地、中央和远程三种类型。本地仓库在首次运行时创建,默认在用户目录的`.m2/repository`。Maven首先查找本地仓库,若无则从远程仓库(如中央仓库)下载。中央仓库包含大量开源Java构件,可在线浏览于http://search.maven.org/。
|
3月前
|
设计模式 IDE Java
|
9天前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
62 8

推荐镜像

更多