We wish to create a backup tool that will save only the last modified files of a storage unit.
In our example, the storage unit is not a bucket.
The storage unit is the DD-MM-YYYY-test
branch of the current descartes-underwriting/devops-technical-test-data
git repository.
The descartes-underwriting/devops-technical-test-data
repository is not frozen and will have new commits.
Commits will be added to the DD-MM-YYYY-test
branch multiple times every day.
The DD-MM-YYYY-test
branch name will be adapted using standard datetime convention eg: 01-01-2022-test
for the 1st of January 2022.
Develop a backup tool to save the modified files at each commit.
If something is not clear, you can ask questions to the recruiter.
When submitting your project, your version should not be draft but complete and following best practices.
The solution should be saved on a private descartes-devops
repository on your github account.
The solution should include:
- source code
- test code
When the final version is ready:
- Send an email to the recruiter indicating that you finished the project and sharing the url of the project
- Grant access to:
Create a script to automate the backup process using open source software.
The script should track the changes fo the branch DD-MM-YYYY-test
of the descartes-underwriting/devops-technical-test-data
repository.
The execution of the script should be carried out with a github-action / gitlab-pipeline or any other tool automating git workflow on your git project.
It is highly recommended to use a scheduling tool to execute the back up process.
The backup should store files in separate folders.
The backup file structure should be based on the sha1 of the descartes-underwriting/devops-technical-test-data
.
Starting from the initial commit 282180fe7e5d9cbf297f2f0ef813cffe60ce2328, all the history should be backup.
For the following commits on the descartes-underwriting/devops-technical-test-data
:
SHA | OPERATION |
---|---|
Commit_N | create readme.md |
Commit_N+1 | create doc.txt |
Commit_N+2 | create data/test/test.txt |
Commit_N+3 | append text to ./doc.txt |
Commit_N+4 | create test/project/project1.txt |
The candidate/descartes-backup-project
repository should have
$ tree .
.
├── .gitworkflow
│ └── workflows
│ └── my-lovely-workflow.yml
├── data
│ ├── N
│ │ └── readme.md
│ ├── N+1
│ │ └── doc.txt
│ ├── N+2
│ │ └── data
│ │ └── test
│ │ └── test.txt
│ ├── N+3
│ │ └── doc.txt
│ └── N+4
│ └── test
│ └── project
│ └── project1.txt
└── script
└── my-beautiful-script.best-language