如何刪除GitLab中的Git大文件夾

在使用gitlab進行版本管理的過程中,我們可能會遇到一個問題:git庫中存儲了太多大文件,導致gitlab的儲存空間不足。此時,我們就需要刪除git中的git大文件夾來騰出一些空間。但是,由于git的特殊性質,刪除文件夾不是和其他文件一樣刪除,而是需要一些額外操作。本文將介紹如何在gitlab上刪除git大文件夾的方法。

1、確認Git大文件夾

首先,我們需要確認在GitLab上庫中的哪個文件夾占用了最多的空間,進而決定哪個文件夾是Git大文件夾。我們可以通過以下命令來確定:

git rev-list --objects --all |    git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' |    sed -n 's/^blob //p' |    sort --numeric-sort --key=2 |    cut -c 1-12,41- |   # 此時應該得到一個類似如下的輸出   # 6fb171?9336398 vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js   # 8cf6f9?9430549 vendor/assets/bower_components/jquery/jquery.js   # 45babf?11219868 vendor/assets/bower_components/angular/angular.js   # …   awk '$2 >= 1000000 { print }'

此命令的作用是列舉出當前庫中所有所有提交中的 blob 對象,并按照 size 從小到大排序。最后的 awk ‘$2 >= 1000000 { print }’ 表示只輸出文件大小大于等于 1000000 字節的文件。這個命令中的數字可以自行更改成你所需要的大小。

2、從GitLab數據庫中刪除Git大文件夾

在確認了Git大文件夾之后,我們可以通過以下命令從GitLab的數據庫中刪除該文件夾:

sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -d gitlabhq_production

此命令會進入GitLab的數據庫中。在這里,我們需要注意以下幾點:

  • 在執行這條命令之前,請確保你已經備份了整個gitlabhq_production數據庫;
  • 進入數據庫后,你需要輸入明確的SQL指令,請謹慎操作;
  • 請確認你所登錄的用戶有權限進行數據庫的操作。

在進入數據庫之后,我們可以通過以下命令進入出我們所需要刪除的文件夾所在的項目:

x SELECT * FROM projects;

此命令會列舉出數據庫中所包含的所有項目,我們可以用這個命令找到我們需要刪除的Git大文件夾所在的項目。

接下來,我們需要根據項目的ID,進入該項目的repositories表中。

SELECT * FROM repositories WHERE project_id = <project_id>;

此命令會在repositories表中找到在指定項目中的repository記錄。我們需要記下這個記錄的ID,以便后續操作。

接下來,我們需要進入該repository記錄所對應的repository_storages表中。

SELECT * FROM repository_storages WHERE repository_id = <repository_id>;

在上述命令中,指代我們剛剛記錄下的repository記錄的ID。

現在,我們需要確定我們需要刪除的大文件夾所在的存儲路徑。如果你不確定這個路徑是什么,可以打開GitLab的頁面,到存儲空間管理頁面,找到對應項目的存儲路徑。

最后,我們就可以通過以下命令從數據庫中刪除指定的大文件夾了:

DELETE FROM repository_uploads WHERE path LIKE '<path>/%';

在上述命令中,指代我們剛剛確定的大文件夾所在的存儲路徑。這個命令會將該路徑下的所有文件都刪除掉。

3、刪除服務器上的Git大文件夾

在數據庫中刪除Git大文件夾后,我們還需要在服務器上將這些文件從磁盤上徹底刪除。你可以直接通過rm命令刪除大文件夾,例如:

sudo rm -rf <path>

在上述命令中,指代我們剛剛確定的大文件夾所在的存儲路徑。但是,如果你在執行該命令時遇到問題,請先停止GitLab和Nginx的服務。在刪除文件夾后,我們還需要重新啟動這兩個服務。

完畢!你已經成功地在GitLab上刪除了Git大文件夾。

總結

本文介紹了如何在GitLab上刪除Git大文件夾。要刪除文件夾主要需要進行兩個步驟:從數據庫中刪除文件夾記錄,然后從磁盤上徹底刪除文件夾。刪掉Git大文件夾之后,我們可以為GitLab騰出更多的空間來存儲其他文件。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享