{"id":3237,"date":"2022-09-12T07:44:57","date_gmt":"2022-09-12T07:44:57","guid":{"rendered":"https:\/\/gitprotect.io\/blog\/?p=3237"},"modified":"2025-06-05T06:01:58","modified_gmt":"2025-06-05T06:01:58","slug":"gitlab-backup-to-s3","status":"publish","type":"post","link":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/","title":{"rendered":"GitLab Backup to S3"},"content":{"rendered":"\n<p><strong>Businesses increasingly rely on S3 object storage for GitLab backups. Firms leverage the flexibility of the<\/strong><a href=\"https:\/\/xopero.com\/blog\/en\/the-evolution-of-data-backup-is-the-3-2-1-backup-rule-a-thing-of-the-past\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong> 3-2-1<\/strong><\/a><strong>, 3-2-1-0, or even 4-3-2 strategy (or others) and improve disaster recovery options. At the same time, S3s lower the risk of potential data loss, contributing to operational cost optimization.<\/strong><\/p>\n\n\n\n<!--more-->\n\n\n\n<p>GitLab&#8217;s own<a href=\"https:\/\/docs.gitlab.com\/ee\/administration\/object_storage.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> guidance recommends<\/a> S3 storage (e.g., over NFS) for its performance and ease of integration.<\/p>\n\n\n\n<p>Given the rapid growth of GitLab repositories \u2013 containing source code, CI\/CD artifacts, and application data \u2013 S3 becomes a more logical and reliable choice. Its native features, such as cross-region replication (CRR) and object versioning, further bolster recovery options and ensure redundancy.<\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\"><strong>S3 as a Shared Responsibility Model (SRM) support<\/strong><\/h2>\n\n\n\n<p>It&#8217;s worth remembering that cloud providers secure the underlying infrastructure, but <a href=\"https:\/\/gitprotect.io\/blog\/gitlab-shared-responsibility-model-a-guide-to-collaborative-security\/\" target=\"_blank\" rel=\"noreferrer noopener\">the user<br>is responsible for securing and managing backups<\/a>. That involves enforcing encryption (including two-factor authentication, database encryption key), versioning, and policies for restricted access rights. And it&#8217;s hard to find an exception.<\/p>\n\n\n\n<p>Such an approach puts control over sensitive information directly in the hands of organizations. While this may sound challenging, it provides compliance and security strategies flexibility.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"796\" height=\"243\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-1.png\" alt=\"GitLab backup to S3 - Picture 1\" class=\"wp-image-5949\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-1.png 796w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-1-300x92.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-1-768x234.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-1-400x122.png 400w\" sizes=\"(max-width: 796px) 100vw, 796px\" \/><\/figure><\/div>\n\n\n<p>Besides, scalability is the new black nowadays. Eliminating file-system complexity and supporting highly available storage solutions make S3 a natural fit for enterprise-level GitLab backup requirements and obligations.<br><br>It&#8217;s even more critical as weekly full and daily incremental backups are a common practice to balance storage costs and backup efficiency.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The storage for your GitLab data backups<\/strong><\/h2>\n\n\n\n<p>The number of S3-compatible storage providers has grown in recent years. Along with increasing demand for scalable and cost-effective tools of this type, the growth of cloud adaptation and security needs follow.<\/p>\n\n\n\n<p>In addition to the major players listed below, niche cloud storage providers focus on specific business needs, such as data lakes or archival storage.<\/p>\n\n\n\n<p>Nonetheless, among the best-known S3 services, we can consider 5 top solutions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>AWS S3<\/strong><\/h3>\n\n\n\n<p><a href=\"https:\/\/aws.amazon.com\/s3\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">AWS S3<\/a> is a highly scalable and secure object storage service by default. It integrates seamlessly with GitLab for backup and archival purposes. The storage offers lifecycle management, versioning, and cross-region replication for disaster recovery. Every Git user finds it easy to operate on.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Azure Blob Storage<\/strong><\/h3>\n\n\n\n<p><a href=\"https:\/\/azure.microsoft.com\/en-us\/products\/storage\/blobs\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Azure Blob<\/a> is ideal for GitLab users who are already working in the Microsoft ecosystem. It provides scalable storage and swift integration into Azure services. The Blob&#8217;s strong points are immutable storage for compliance and automated tiering for cost optimization.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Google Cloud Storage<\/strong><\/h3>\n\n\n\n<p>With solid analytics and AI integrations, <a href=\"https:\/\/cloud.google.com\/storage\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Google Cloud Storage<\/a> is great for high-performance GitLab backups. It supports automatic storage class transitions and multi-region redundancy for enhanced reliability. It&#8217;s worth noting that GCS is not an S3 solution in a sense but has very similar capabilities.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wasabi<\/strong><\/h3>\n\n\n\n<p><a href=\"https:\/\/wasabi.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Wasabi<\/a> is a cost-effective S3-compatible storage option that offers predictable pricing with no egress or API fees. It&#8217;s a strong choice for GitLab users needing affordable long-term storage with high durability.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Backblaze B2<\/strong><\/h3>\n\n\n\n<p><a href=\"https:\/\/www.backblaze.com\/cloud-storage\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">B2<\/a> is known for its simplicity and low cost. That&#8217;s a S3-compatible&nbsp; storage with no egress fees. It&#8217;s well-suited for GitLab users needing inexpensive, reliable backup solutions with easy cloud service.<\/p>\n\n\n\n<p>After determining where and how you plan to utilize the S3 object storage capabilities, you must choose the right S3 provider for your GitLab-specific information.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>A quick overview of GitLab backup to S3<\/strong><\/h2>\n\n\n\n<p>In GitLab, the running backup process is based on the sudo gitlab-backup create command (the central part of the backup script).<\/p>\n\n\n\n<p>As a reminder, let us mention that it includes the following components:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"790\" height=\"331\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-2.png\" alt=\"GitLab backup to S3 - Picture 2\" class=\"wp-image-5950\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-2.png 790w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-2-300x126.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-2-768x322.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-2-400x168.png 400w\" sizes=\"(max-width: 790px) 100vw, 790px\" \/><\/figure><\/div>\n\n\n<p>These are crucial for GitLab instance backup, enabling easy restoration from the backup directory.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Backup archive in S3<\/strong><\/h3>\n\n\n\n<p>At a GitLab level, to configure (reconfigure) S3 requires accessing and editing the configuration file:&nbsp;<\/p>\n\n\n\n<p><strong>\/etc\/gitlab\/gitlab.rb<\/strong><\/p>\n\n\n\n<p>The configuration may look like the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab_rails &#091;'backup_upload_connection'] = {\n\n\"provider\" =&gt; \"AWS\",\n\n\"region\" =&gt; \"your-region\", # e.g., \"us-west-1\"\n\n\"aws_access_key_id\" =&gt; \"your-access-key-id\",\n\n\"aws_secret_access_key\" =&gt; \"your-secret-access-key\"\n\n}\n\ngitlab_rails&#091;'backup_upload_remote_directory'] = 'your-s3-bucket-name'<\/code><\/pre>\n\n\n\n<p>Thinking about an upload, you can choose a slightly different approach. Here is an example script:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab_rails&#091;'backup_upload_enabled'] = true\n\ngitlab_rails&#091;'backup_upload_connection'] = {\n\n\"provider\" =&gt; \"AWS\", \"aws_access_key_id\" =&gt; \"YOUR_ACCESS_KEY\",&nbsp;\n\n\"aws_secret_access_key\" =&gt; \"YOUR_SECRET_KEY\",\n\n\"region\" =&gt; \"YOUR_REGION\"\n\n}\n\ngitlab_rails&#091;'backup_upload_remote_directory'] = 'your-backup-bucket'<\/code><\/pre>\n\n\n\n<p>After each backup, you should check your S3 bucket to confirm that you uploaded the backup successfully.<\/p>\n\n\n\n<p>You can also configure the backup path and retention by setting the policy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab_rails&#091;'backup_path'] = \"\/var\/opt\/gitlab\/backups\"&nbsp;&nbsp;\n\n# Local directory to store backups before upload\n\ngitlab_rails&#091;'backup_keep_time'] = 604800 &nbsp; # Time in seconds (1 week)<\/code><\/pre>\n\n\n\n<p>Then, you use a simple command to create a backup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo gitlab-backup create<\/code><\/pre>\n\n\n\n<p>Of course, there is an option to automate backup with cron jobs. For example, to back up GitLab at 5 AM daily and upload it to S3, use the following line:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 5&nbsp; * \/opt\/gitlab\/bin\/gitlab-backup create CRON=1<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Restoring GitLab backups from S3<\/strong><\/h3>\n\n\n\n<p>You need three default steps to bring back your GitLab backup stored in S3 storage.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to your S3 bucket, select the required tar file (*.tar), and download it for your GitLab server.<br><\/li>\n\n\n\n<li>Restore the backup.<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ensure you halted\/stopped GitLab to avoid conflicts (no error message):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo gitlab-ctl stop<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Move the downloaded backup file (*.tar) to the GitLab backup directory:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mv backup.tar \/var\/opt\/gitlab\/backups\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Now, use the backup restore command:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo gitlab-backup restore BACKUP=timestamp<\/code><\/pre>\n\n\n\n<p>In this case, replace the timestamp attribute with the timestamp of your backup tar file (otherwise, an error will occur).<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Restart your GitLab:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo gitlab-ctl start<\/code><\/pre>\n\n\n\n<p>If the restore command aborts, check for a GitLab version mismatch or an error message related to possible missing dependencies. You may also need to verify that the backup tar file is not corrupted.<\/p>\n\n\n\n<p>In addition, ensure the backup&#8217;s installed version matches the version of GitLab running on your GitLab server.<\/p>\n\n\n\n<p>When using S3 storage, it is a good practice to verify that the IAM role and IAM profile permissions are correctly set. <br><br>Schedule regular backups using cron job(s) to keep all the information consistent.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Files synchronization for GitLab data<\/strong><\/h3>\n\n\n\n<p>Users often try to check their backup and conduct the integrity check using the rsync command. However, you should remember that S3 does not support this command directly in the traditional way (local disks or NFS servers).<\/p>\n\n\n\n<p>Moreover, using the command to migrate Git repositories may result in information loss or repository corruption.<\/p>\n\n\n\n<p>If you plan to synchronize the local data with S3 resources, you can do it via AWS CLI with the sync command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aws s3 sync \/local_directory\/ s3:\/\/bucket_name\/directory\/<\/code><\/pre>\n\n\n\n<p>As an alternative and in the same way, utilize rclone and s3cmd commands. Both work similarly to rsync:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>s3cmd sync \/local_directory\/ s3:\/\/bucket_name\/directory\/\n\nrclone sync \/local_directory\/ s3:\/\/bucket_name\/directory\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>A more convenient and time-savvy backup approach<\/strong><\/h2>\n\n\n\n<p>To increase safety and convenience, you can use<a href=\"http:\/\/gitprotect.io\/\" target=\"_blank\" rel=\"noreferrer noopener\"> GitProtect<\/a> to manage the whole process faster. It&#8217;s a far more convenient, error-free approach with security measures ready for every scenario.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>GitProtect<\/strong><\/h3>\n\n\n\n<p>GitProtect is the world&#8217;s only disaster recovery tool for DevOps environments. Utilizing its features effectively supports continuous operations and helps to prevent information and productivity loss.&nbsp;<\/p>\n\n\n\n<p>The latter applies to accidental issues and commit deletions. To resolve such problems, you can restore data granularly at any time.<\/p>\n\n\n\n<p>In addition, you can migrate data between vendor accounts or deployments (C2C, C2P, etc.) with little effort.<\/p>\n\n\n\n<p>With GitProtect, you can perform all the above commands and instructions for backing up (backup script) and restoring repos by clicking all the steps through a convenient GUI. In the meantime, you are free to dive into all the details you need.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>All DevOps stack backup automation<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>set up your backup strategy, using 3-2-1, 3-2-1-1-0, 4-3-2, or other rules<\/li>\n\n\n\n<li>schedule (even every 10 mins)<\/li>\n\n\n\n<li>use AES 256-bit encryption and the customer&#8217;s own key<\/li>\n\n\n\n<li>utilize up to unlimited retention (others offer up to 365 days)<\/li>\n\n\n\n<li>rely on robust security options:\n<ul class=\"wp-block-list\">\n<li>Data Residency of Choice<\/li>\n\n\n\n<li>SSO and SAML integration<\/li>\n\n\n\n<li>role-based Access Control<\/li>\n\n\n\n<li>broad Ransomware Protection setup&nbsp;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Store and connect any storage<\/strong><\/h4>\n\n\n\n<p>Depending on your needs, you can use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>the already-included and unlimited cloud storage (S3)<\/li>\n\n\n\n<li>your own cloud\/on-prem storage (e.g., AWS S3, Azure, and more).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Instant Remediation Center<\/strong><\/h4>\n\n\n\n<p>You are provided with:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>backup assurance and notifications<\/li>\n\n\n\n<li>audit-ready SLA reporting and visual stats for immediate remediation and data availability.<\/li>\n<\/ul>\n\n\n\n<p>The tool allows you to backup and restore all chosen information \u2013 repositories and metadata (e.g., from GitLab database: issues and merge requests) \u2013 via a single management console. It was designed to connect with any storage, providing a fast and convenient GUI interface.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"516\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-3-1024x516.png\" alt=\"GitProtect Management console\" class=\"wp-image-5951\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-3-1024x516.png 1024w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-3-300x151.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-3-768x387.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-3-1536x775.png 1536w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-3-400x202.png 400w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-3.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Let&#8217;s demonstrate by moving the local GitLab backup directory to the AWS S3 buckets. As mentioned, the Amazon S3 solution offers easy integration with GitLab for backup and archival purposes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>GitLab information in the AWS S3 buckets<\/strong><\/h3>\n\n\n\n<p>A great and practical example is moving GitLab backups to the AWS S3 buckets, e.g., from local storage, another cloud provider, or even network-attached NAS\/SAN storage.<\/p>\n\n\n\n<p>After assigning your GitLab instance to the tool, you can add an AWS S3 target storage. To do so, expand the <strong><em>Storage type<\/em><\/strong> list and select <em>AWS storage<\/em>.<\/p>\n\n\n\n<p>Now it&#8217;s time to fill out the Access Key and assign a<a href=\"https:\/\/docs.aws.amazon.com\/powershell\/latest\/userguide\/creds-idc.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> received<\/a> secret access key using<strong> <em>Password Manager<\/em><\/strong>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"309\" height=\"178\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-4.png\" alt=\"GitProtect Password Manager\" class=\"wp-image-5952\" style=\"width:381px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-4.png 309w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-4-300x173.png 300w\" sizes=\"(max-width: 309px) 100vw, 309px\" \/><\/figure><\/div>\n\n\n<p>Next, choose the <em>Region<\/em> where your buckets are created and enter the unique <strong><em>Bucket name<\/em><\/strong>. The latter describes the unique name of the container in which you&#8217;ll store your repositories.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"310\" height=\"353\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-5.png\" alt=\"Select region for backup\" class=\"wp-image-5953\" style=\"width:378px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-5.png 310w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/S3-5-263x300.png 263w\" sizes=\"(max-width: 310px) 100vw, 310px\" \/><\/figure><\/div>\n\n\n<p>Before saving the configuration, select the <strong><em>Browsing machine<\/em><\/strong><em> <\/em>with storage allowance (for example, a device with an Internet connection). Use the <em>Change <\/em>button to choose one of the devices assigned to GitProtect that will connect the storage to the system.<\/p>\n\n\n\n<p>Click the <strong><em>Save button<\/em><\/strong> once everything is configured.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Bucket and IAM user permissions (upload user access)<\/strong><\/h3>\n\n\n\n<p>Of course, each Amazon AWS S3 bucket must have at least minimal permissions to be used as backup storage in the GitProtect service.<\/p>\n\n\n\n<p>Such a container, designated for storing data, requires the following policy assigned in JSON format:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\n\"Version\": \"2012-10-17\",\n\n\"Statement\": &#091;\n\n   {\n\n   \"Effect\": \"Allow\",\n\n   \"Principal\":&nbsp;&nbsp;\n\n      {\"AWS\": \"arn:aws:iam::{account}:user\/backup-user\"\n\n},\n\n   \"Action\"&#091;\n\n   \"s3:ListBucket\",\n\n   \"s3:GetObject\",\n\n   \"s3:PutObject\",\n\n   \"s3:DeleteObject\"&nbsp;&nbsp;&nbsp;\n\n  ],\n\n   \"Resource\": &#091;\n\n      \"arn:aws:s3:::bucket-name\",\n\n      \"arn:aws:s3:::bucket-name\/*\"\n\n      ]\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;]\n\n}<\/code><\/pre>\n\n\n\n<p>When creating a new instance, you can use the <em>Immutable Storage<\/em> configuration to protect your information against accidental (or malicious) deletion or modification.<\/p>\n\n\n\n<p>For that, additional permissions are necessary:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>s3:GetBucketObjectLockConfiguration \u2013 needed to read Object Lock<\/li>\n\n\n\n<li>configuration.s3:GetBucketVersioning \u2013 used to read the versioning configuration.<\/li>\n<\/ul>\n\n\n\n<p>Both permissions should find their place in the Action section, which needs to look like in the example below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"Action\": &#091;\n\n   \"s3:ListBucket\",&nbsp;\n\n   \"s3:GetObject\",\n\n   \"s3:PutObject\",\n\n   \"s3:DeleteObject\",\n\n   \"s3:GetBucketVersioning\",\n\n   \"s3:GetBucketObjectLockConfiguration\"\n\n],<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>GitLab backup files replication in GitProtect<\/strong><\/h3>\n\n\n\n<p>Replication is a capability that further distinguishes GitProtect. It allows you to create multiple copies of your backups stored in different locations \u2013 cloud providers (like AWS S3, Azure Blob, etc.) or on-premises storage.<br>That significantly increases your business&#8217;s data availability and disaster recovery potential.<\/p>\n\n\n\n<p>Replication enhances data durability and fault tolerance. Even if one storage location fails, your backup copy is accessible elsewhere.<\/p>\n\n\n\n<p>To put it briefly, utilizing the replication feature minimizes the risk of information loss by implementing the 3+2+1 or 3-2-1-1-0 rule, thus enhancing business continuity.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-1024x512.png\" alt=\"GitLab backup to S3 - Picture 3\" class=\"wp-image-5966\" style=\"width:500px\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-1024x512.png 1024w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-300x150.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-768x384.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-1536x768.png 1536w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-2048x1024.png 2048w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-400x200.png 400w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-600x300.png 600w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-800x400.png 800w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-1200x600.png 1200w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/3-2-1-1-0-1600x800.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>To create a<a href=\"https:\/\/helpcenter.gitprotect.io\/deployment-and-the-storage-overview\/storage-backup-destination\/replication\/planning-and-setting-up-replication-plan\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> replication plan<\/a>, you just set the storage and configure a simple scheduler. Creating a replication plan involves at least two storages:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Source storage<\/strong><\/h4>\n\n\n\n<p>It contains data for the replication process.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Target storage<\/strong><\/h4>\n\n\n\n<p>It&#8217;s a space (place) where you plan to replicate the data.<\/p>\n\n\n\n<p>The target storage must be empty to be available in the replication window. If some data exists on the storage (which you want to use as a target storage), it will be unavailable in the <em>Target storage<\/em> list.<\/p>\n\n\n\n<p>When planning a replication strategy, consider storage location, schedule, frequency, and available resources. Schedule replication during periods without active backups and ensure adequate resources, as replication copies more information than a regular backup.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-1024x512.png\" alt=\"GitLab backup to S3 - Picture 4\" class=\"wp-image-5957\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-1024x512.png 1024w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-300x150.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-768x384.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-1536x768.png 1536w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-2048x1024.png 2048w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-400x200.png 400w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-600x300.png 600w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-800x400.png 800w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-1200x600.png 1200w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/blog_post-5-1600x800.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>The replication frequency depends on your backup process frequency, but performing it at least once a week is recommended if backups are frequent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Specific data for conclusion<\/strong><\/h2>\n\n\n\n<p>S3-compatible storage efficiently supports GitLab backups due to its default flexibility, disaster recovery capabilities, and cost-effectiveness.<\/p>\n\n\n\n<p>With the rapid growth of repositories containing source code, <a href=\"https:\/\/gitprotect.io\/blog\/exploring-best-practices-and-modern-trends-in-ci-cd\/\" target=\"_blank\" rel=\"noreferrer noopener\">CI\/CD<\/a> artifacts, and critical information, S3 ensures high availability and redundancy. Key features, like cross-region replication and object versioning, provide additional protection against data loss.<\/p>\n\n\n\n<p>While cloud providers secure the underlying infrastructure, it&#8217;s up to users to manage their backups, including encryption, versioning, or entry control. That gives organizations more control over compliance and security strategies.<\/p>\n\n\n\n<p>S3 is a highly secure and industry-recommended solution for storing data, offering robust protection features such as encryption, access control, and compliance capabilities. However, when backing up GitLab environments to S3, it&#8217;s vital to consider third-party backup tools like GitProtect.<\/p>\n\n\n\n<p>GitLab recommends using external S3 backup solutions, as they do not natively handle them. GitLab has explicitly pointed to GitProtect as a reliable<a href=\"https:\/\/about.gitlab.com\/direction\/geo\/backup_restore\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"> standalone solution.<\/a><\/p>\n\n\n\n<p>That emphasizes the need to ensure comprehensive data protection and ease of recovery when using S3 for GitLab information copies. Practical options for disaster recovery and scalability are a few examples of what uploading backups can create. Managing GitLab backup in S3 with GitProtect increases the process&#8217;s security, convenience, and replication options \u2013 unique on the market-related metadata.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#f4fafe\"><a href=\"https:\/\/gitprotect.io\/sign-up.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>[FREE TRIAL] Ensure compliant GitLab backup and recovery with a 14-day trial<\/strong><\/a><strong>\ud83d\ude80<\/strong><br><a href=\"https:\/\/calendly.com\/d\/3s9-n9z-pgc\/gitprotect-live-demo?month=2024-11\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>[CUSTOM DEMO] Let&#8217;s talk about how backup &amp; DR software for GitLab can help you mitigate the risks<\/strong><\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Businesses increasingly rely on S3 object storage for GitLab backups. Firms leverage the flexibility of the 3-2-1, 3-2-1-0, or even 4-3-2 strategy (or others) and improve disaster recovery options. At the same time, S3s lower the risk of potential data loss, contributing to operational cost optimization.<\/p>\n","protected":false},"author":16,"featured_media":3243,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[],"class_list":["post-3237","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gitlab","post--single"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>GitLab Backup to S3 - Blog | GitProtect.io<\/title>\n<meta name=\"description\" content=\"How S3 storage can help you safely backup your GitLab repositories in the Cloud, keeping your security and business needs intact.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GitLab Backup to S3 - Blog | GitProtect.io\" \/>\n<meta property=\"og:description\" content=\"How S3 storage can help you safely backup your GitLab repositories in the Cloud, keeping your security and business needs intact.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog | GitProtect.io\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/XoperoSoftware\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-12T07:44:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-05T06:01:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Wojciech Andryszek, Technical Content Writer at GitProtect.io\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GitProtectio\" \/>\n<meta name=\"twitter:site\" content=\"@GitProtectio\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wojciech Andryszek, Technical Content Writer at GitProtect.io\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/\"},\"author\":{\"name\":\"Wojciech Andryszek, Technical Content Writer at GitProtect.io\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/967901c0176390b9c3fa15c5da47f37b\"},\"headline\":\"GitLab Backup to S3\",\"datePublished\":\"2022-09-12T07:44:57+00:00\",\"dateModified\":\"2025-06-05T06:01:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/\"},\"wordCount\":2080,\"publisher\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png\",\"articleSection\":[\"GitLab\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/\",\"name\":\"GitLab Backup to S3 - Blog | GitProtect.io\",\"isPartOf\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png\",\"datePublished\":\"2022-09-12T07:44:57+00:00\",\"dateModified\":\"2025-06-05T06:01:58+00:00\",\"description\":\"How S3 storage can help you safely backup your GitLab repositories in the Cloud, keeping your security and business needs intact.\",\"breadcrumb\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#primaryimage\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png\",\"width\":1200,\"height\":600,\"caption\":\"GitLab backup to S3\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/gitprotect.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GitLab Backup to S3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#website\",\"url\":\"https:\/\/gitprotect.io\/blog\/\",\"name\":\"GitProtect.io Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/gitprotect.io\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#organization\",\"name\":\"GitProtect.io\",\"url\":\"https:\/\/gitprotect.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/favicon-528x528-1.png\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/favicon-528x528-1.png\",\"width\":528,\"height\":528,\"caption\":\"GitProtect.io\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/XoperoSoftware\/\",\"https:\/\/x.com\/GitProtectio\",\"https:\/\/www.linkedin.com\/company\/xopero-software\/\",\"https:\/\/www.youtube.com\/channel\/UCiEnl6n0mIO6w7twccz-l2w\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/967901c0176390b9c3fa15c5da47f37b\",\"name\":\"Wojciech Andryszek, Technical Content Writer at GitProtect.io\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/10\/wojciech-andryszek-technical-content-writer-at-gitprotect.io_avatar-96x96.jpg\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/10\/wojciech-andryszek-technical-content-writer-at-gitprotect.io_avatar-96x96.jpg\",\"caption\":\"Wojciech Andryszek, Technical Content Writer at GitProtect.io\"},\"description\":\"Wojtek is a Technical Content Writer at GitProtect. As a science journalist under his belt, he enjoys all kinds of knowledge. When writing about tech, Wojtek plays the role of an IT professional as well as his opposite - like Dr. Jekyll and Mr. Hyde. ;)\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/wojciech-andryszek\/\"],\"url\":\"https:\/\/gitprotect.io\/blog\/author\/wojciech-andryszek\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GitLab Backup to S3 - Blog | GitProtect.io","description":"How S3 storage can help you safely backup your GitLab repositories in the Cloud, keeping your security and business needs intact.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/","og_locale":"en_US","og_type":"article","og_title":"GitLab Backup to S3 - Blog | GitProtect.io","og_description":"How S3 storage can help you safely backup your GitLab repositories in the Cloud, keeping your security and business needs intact.","og_url":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/","og_site_name":"Blog | GitProtect.io","article_publisher":"https:\/\/www.facebook.com\/XoperoSoftware\/","article_published_time":"2022-09-12T07:44:57+00:00","article_modified_time":"2025-06-05T06:01:58+00:00","og_image":[{"width":1200,"height":600,"url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png","type":"image\/png"}],"author":"Wojciech Andryszek, Technical Content Writer at GitProtect.io","twitter_card":"summary_large_image","twitter_creator":"@GitProtectio","twitter_site":"@GitProtectio","twitter_misc":{"Written by":"Wojciech Andryszek, Technical Content Writer at GitProtect.io","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#article","isPartOf":{"@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/"},"author":{"name":"Wojciech Andryszek, Technical Content Writer at GitProtect.io","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/967901c0176390b9c3fa15c5da47f37b"},"headline":"GitLab Backup to S3","datePublished":"2022-09-12T07:44:57+00:00","dateModified":"2025-06-05T06:01:58+00:00","mainEntityOfPage":{"@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/"},"wordCount":2080,"publisher":{"@id":"https:\/\/gitprotect.io\/blog\/#organization"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#primaryimage"},"thumbnailUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png","articleSection":["GitLab"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/","url":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/","name":"GitLab Backup to S3 - Blog | GitProtect.io","isPartOf":{"@id":"https:\/\/gitprotect.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#primaryimage"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#primaryimage"},"thumbnailUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png","datePublished":"2022-09-12T07:44:57+00:00","dateModified":"2025-06-05T06:01:58+00:00","description":"How S3 storage can help you safely backup your GitLab repositories in the Cloud, keeping your security and business needs intact.","breadcrumb":{"@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#primaryimage","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2022\/09\/gitlab_backup_to_s3.png","width":1200,"height":600,"caption":"GitLab backup to S3"},{"@type":"BreadcrumbList","@id":"https:\/\/gitprotect.io\/blog\/gitlab-backup-to-s3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/gitprotect.io\/blog\/"},{"@type":"ListItem","position":2,"name":"GitLab Backup to S3"}]},{"@type":"WebSite","@id":"https:\/\/gitprotect.io\/blog\/#website","url":"https:\/\/gitprotect.io\/blog\/","name":"GitProtect.io Blog","description":"","publisher":{"@id":"https:\/\/gitprotect.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gitprotect.io\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/gitprotect.io\/blog\/#organization","name":"GitProtect.io","url":"https:\/\/gitprotect.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/favicon-528x528-1.png","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2023\/05\/favicon-528x528-1.png","width":528,"height":528,"caption":"GitProtect.io"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/XoperoSoftware\/","https:\/\/x.com\/GitProtectio","https:\/\/www.linkedin.com\/company\/xopero-software\/","https:\/\/www.youtube.com\/channel\/UCiEnl6n0mIO6w7twccz-l2w"]},{"@type":"Person","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/967901c0176390b9c3fa15c5da47f37b","name":"Wojciech Andryszek, Technical Content Writer at GitProtect.io","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/10\/wojciech-andryszek-technical-content-writer-at-gitprotect.io_avatar-96x96.jpg","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2024\/10\/wojciech-andryszek-technical-content-writer-at-gitprotect.io_avatar-96x96.jpg","caption":"Wojciech Andryszek, Technical Content Writer at GitProtect.io"},"description":"Wojtek is a Technical Content Writer at GitProtect. As a science journalist under his belt, he enjoys all kinds of knowledge. When writing about tech, Wojtek plays the role of an IT professional as well as his opposite - like Dr. Jekyll and Mr. Hyde. ;)","sameAs":["https:\/\/www.linkedin.com\/in\/wojciech-andryszek\/"],"url":"https:\/\/gitprotect.io\/blog\/author\/wojciech-andryszek\/"}]}},"_links":{"self":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/3237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/comments?post=3237"}],"version-history":[{"count":14,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/3237\/revisions"}],"predecessor-version":[{"id":6641,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/3237\/revisions\/6641"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/media\/3243"}],"wp:attachment":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/media?parent=3237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/categories?post=3237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/tags?post=3237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}