若誤砍 pypi 時要如何復原

有時若上傳到錯誤的 package 時可在有 devpi 的環境下使用此指令刪除該 package:devpi remove [package name] 但萬一一不小心沒指定版本好,又沒仔細看刪除的確認訊息就直接刪,就會發生把 pypi 砍掉的悲劇。

以下將以誤砍 Pandora 為例,說明如何復原 pypi。

步驟如下:

  1. ssh 到 mecury.nuwainfo.com 切成 root

  2. borgmatic list: 列出目前已經備份的所有 archive 結果會像這樣: Imgur

  3. cd /root && mkdir mnt: 在 /root 建立想要掛載轉回資料夾的資料夾(要在哪裡建立資料夾、資料夾要叫什麼都可以,沒有一定)

    borgmatic mount --archive mercury-2023-04-29T03:17:31.449686 --mount-point /root/mnt --path /root/containers/services/devpi/volumes/root/.devpi/server: 將備份後的 archive 轉回唯讀型態的資料夾掛載在創建的資料夾下

    • –archive: 要轉回資料夾的 archive 名稱,即上方 list 出來後的第一欄
    • –mount-point: 要掛載的資料夾
    • –path: 需要備份回來的檔案路徑
  4. systemctl stop monit

    systemctl stop devpi

  5. cd /root && mkdir backup: 在 /root 建立備份資料夾(同樣,命名和位置沒有一定)

    mv /root/containers/services/devpi/volumes/root/.devpi/server: 備份舊的檔案

  6. cd /root/mnt/root/containers/services/devpi/volumes/root/.devpi/server

    cp -r nuwa /root/containers/services/devpi/volumes/root/.devpi/server/+files/nuwa 將 mount 的資料複製回 /root/containers/services/devpi/volumes/root/.devpi/server/+files/nuwa

  7. systemctl start devpi

    systemctl start monit

  8. 查看 pypi 有沒有恢復,成功後記得要 borgmatic umount --mount-point /root/mnt 解除掛載資料夾

Was this article helpful? Votes: 0
Article details:
Published date: 10/05/2023 3:50AM
Last updated: 10/05/2023 2:33PM (Jolin - jolin.yang@nuwainfo.com)
Share article: 
Author: Jolin (jolin.yang@nuwainfo.com)