在CentOS中对GitLab进行备份(Backup)与还原(Restore)时,分别遇到了权限相关的问题。
系统版本:CentOS 6.5
GitLab版本:gitlab-ce-8.0.2-ce.1.el6.x86_64
备份时,执行
gitlab-rake gitlab:backup:create
得到错误提示
Errno::EACCES: Permission denied @ dir_s_mkdir - /var/opt/gitlab/backups
没有执行mkdir的权限。
而在Restore时,执行
gitlab-rake gitlab:backup:restore BACKUP=1393513186
其中1393513186为backup的时间戳编号,会在gitlab_backup.tar文件的文件名体现。
又遇到大量的mkdir、找不到文件/文件夹错误。
而我是用root用户登录的,联想可能是相关的文件夹权限有问题。
backups是我使用mkdir命令创建的,并没有特别分配权限,于是使用 ls -al 命令查看backups文件夹的权限。
发现值为
drwxr-xr-x. 2 root root 4096 2月 16 10:08 backups
判断是执行实际操作的gitlab相关用户:git,没有得到足够的权限。依次执行命令:
root@myserver:~# mkdir /var/opt/gitlab/backups
root@myserver:~# chown git /var/opt/gitlab/backups
root@myserver:~# chmod 700 /var/opt/gitlab/backups
笔者之前使用了 rm -rf backups 命令移除整个backups文件夹,所以需要再次mkdir。如果该文件夹已经存在,就不需要mkdir了。
以上命令执行完成后,再次 ls -al
发现backups的权限已经发生改变了:
drwx------. 2 git root 4096 2月 16 10:18 backups
再次执行backup或者restore,已经可以正常运行,问题解决。
Reference:issue644 - Permissions issue when creating backups