随着 SemaphoreUI 的 snap 安装方法逐渐被弃用,我最近开始了迁移到另一种托管方法的过程。我选择在同一系统上安装 Semaphore 的软件包版本。我最初打算在全新安装上使用备份和恢复功能,但遇到了多个问题,这些问题似乎都是已经修复的错误,但影响了 snap 中的最新版本的 Semaphore。于是我采取了不同的路线,建议在此将其作为文档路径添加,以便其他人迁移。
将 Semaphore Snap 文件迁移到包管理器或二进制安装的步骤: 注意:此方法将 boltdb 作为 SemaphoreUI 的数据库
- 通过
sudo su -
或其他有效方法以root
身份登录 - 停止 SemaphoreUI 的 snap 版本
snap stop semaphore.semaphored
- 将 snap 中的文件复制到新目录,该目录将是名为
semaphore
的新系统用户的主目录cp -rf /root/snap/semaphore/common /home/semaphore
- 将
repositories
文件夹移动到新的临时文件夹位置mv -f /home/semaphore/repositories /tmp/semaphore
- 更新
config.json
中的数据库和临时文件夹的新路径sed -i 's/\/root\/snap\/semaphore\/common\/database.boltdb/\/home\/semaphore\/database.boltdb/' /home/semaphore/config.json
sed -i 's/\/root\/snap\/semaphore\/common\/repositories/\/tmp\/semaphore/' /home/semaphore/config.json
- 创建一个名为
semaphore
的新系统用户和组,主文件夹为/home/semaphore
adduser --system --group --home /home/semaphore --no-create-home --shell /bin/bash semaphore
- 将
/home/semaphore
及其所有文件的所有权转移给新系统用户chown -R semaphore:semaphore /tmp/semaphore
chmod o-rwx /home/semaphore
chown -R semaphore:semaphore /home/semaphore
完成这些步骤后,通过包管理器安装和设置 Semaphore,使用 semaphore
作为服务用户或组。所有设置和之前的运行应该会在新的 SemaphoreUI 实例中显示。一旦满意,可以通过 sudo snap remove semaphore
删除 snap 实例。
我最终通过这个 bash 文件自动化了所有这些步骤:
migrate-semaphore-snap.sh
#/bin/bash
#File: migrate-semaphore-snap.sh
#Migrate SemaphoreUI from snap as root to package/binary as semaphore
sudo su -l root <<EOF
set -x
snap stop semaphore.semaphored
cp -rf /root/snap/semaphore/common /home/semaphore
mv -f /home/semaphore/repositories /tmp/semaphore
sed -i 's/\/root\/snap\/semaphore\/common\/database.boltdb/\/home\/semaphore\/database.boltdb/' /home/semaphore/config.json
sed -i 's/\/root\/snap\/semaphore\/common\/repositories/\/tmp\/semaphore/' /home/semaphore/config.json
adduser --system --group --home /home/semaphore --no-create-home --shell /bin/bash semaphore
cp /etc/skel/.* /home/semaphore/
chown -R semaphore:semaphore /tmp/semaphore
chmod o-rwx /home/semaphore
chown -R semaphore:semaphore /home/semaphore
EOF