如何删除GitLab中的Git大文件夹

2023年 8月 2日 47.6k 0

在使用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 = ;

登录后复制

此命令会在repositories表中找到在指定项目中的repository记录。我们需要记下这个记录的ID,以便后续操作。

接下来,我们需要进入该repository记录所对应的repository_storages表中。

SELECT * FROM repository_storages WHERE repository_id = ;

登录后复制

在上述命令中,指代我们刚刚记录下的repository记录的ID。

现在,我们需要确定我们需要删除的大文件夹所在的存储路径。如果你不确定这个路径是什么,可以打开GitLab的页面,到存储空间管理页面,找到对应项目的存储路径。

最后,我们就可以通过以下命令从数据库中删除指定的大文件夹了:

DELETE FROM repository_uploads WHERE path LIKE '/%';

登录后复制

在上述命令中,指代我们刚刚确定的大文件夹所在的存储路径。这个命令会将该路径下的所有文件都删除掉。

3、删除服务器上的Git大文件夹

在数据库中删除Git大文件夹后,我们还需要在服务器上将这些文件从磁盘上彻底删除。你可以直接通过rm命令删除大文件夹,例如:

sudo rm -rf

登录后复制

在上述命令中,指代我们刚刚确定的大文件夹所在的存储路径。但是,如果你在执行该命令时遇到问题,请先停止GitLab和Nginx的服务。在删除文件夹后,我们还需要重新启动这两个服务。

完毕!你已经成功地在GitLab上删除了Git大文件夹。

总结

本文介绍了如何在GitLab上删除Git大文件夹。要删除文件夹主要需要进行两个步骤:从数据库中删除文件夹记录,然后从磁盘上彻底删除文件夹。删掉Git大文件夹之后,我们可以为GitLab腾出更多的空间来存储其他文件。

以上就是如何删除GitLab中的Git大文件夹的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论