Add backup option to filter for specific projects
What does this MR do and why?
The repositories for specific projects can be backed up or restored using the env var REPOSITORIES_PATHS which takes a comma separated list of project paths.
In the future this feature may be expanded to backup all the repositories for groups.
How to set up and validate locally
Backup a specific project
- Create a backup specifying a project
$ bundle exec rake gitlab:backup:create BACKUP=flight REPOSITORIES_PATHS=flightjs/Flight 2022-05-24 16:03:54 +1200 -- Dumping database ... Dumping PostgreSQL database gitlabhq_development ... [DONE] 2022-05-24 16:03:56 +1200 -- Dumping database ... done 2022-05-24 16:03:56 +1200 -- Dumping repositories ... {"command":"create","gl_project_path":"flightjs/Flight","level":"info","msg":"started create","relative_path":"@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.git","storage_name":"default","time":"2022-05-24T04:03:56.744Z"} {"command":"create","gl_project_path":"flightjs/Flight","level":"info","msg":"completed create","relative_path":"@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.git","storage_name":"default","time":"2022-05-24T04:03:56.767Z"} {"command":"create","gl_project_path":"flightjs/Flight.wiki","level":"info","msg":"started create","relative_path":"@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.wiki.git","storage_name":"default","time":"2022-05-24T04:03:56.802Z"} {"command":"create","gl_project_path":"flightjs/Flight","level":"info","msg":"started create","relative_path":"@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.design.git","storage_name":"default","time":"2022-05-24T04:03:56.803Z"} {"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"flightjs/Flight","level":"warning","msg":"skipped create","relative_path":"@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.design.git","storage_name":"default","time":"2022-05-24T04:03:56.804Z"} {"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"flightjs/Flight.wiki","level":"warning","msg":"skipped create","relative_path":"@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.wiki.git","storage_name":"default","time":"2022-05-24T04:03:56.804Z"} 2022-05-24 16:03:56 +1200 -- Dumping repositories ... done ... 2022-05-24 16:03:57 +1200 -- Backup flight is done.
- Check that only this project got added to the backup archive.
$ tar -tf tmp/backups/flight_gitlab_backup.tar backup_information.yml db/database.sql.gz repositories/ repositories/@hashed/ repositories/@hashed/e7/ repositories/@hashed/e7/f6/ repositories/@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683/ repositories/@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683/flight/ repositories/@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683/flight/001.refs repositories/@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683/flight/001.bundle repositories/@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683/flight/LATEST repositories/@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683/LATEST uploads.tar.gz builds.tar.gz artifacts.tar.gz pages.tar.gz lfs.tar.gz terraform_state.tar.gz packages.tar.gz
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by James Fargher