{"id":7563,"date":"2025-10-08T05:56:43","date_gmt":"2025-10-08T05:56:43","guid":{"rendered":"https:\/\/gitprotect.io\/blog\/?p=7563"},"modified":"2025-12-01T15:43:42","modified_gmt":"2025-12-01T15:43:42","slug":"how-to-protect-jira-assets-ways-to-protect-jira-assets","status":"publish","type":"post","link":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/","title":{"rendered":"How to Protect Jira Assets: Best Practices For Backup And Recovery"},"content":{"rendered":"\n<p><strong>It\u2019s hard to imagine a modern ITSM (IT Service Management) and general configuration management in Jira without Jira Assets. All the more so, it allows IT teams to model physical infrastructure, logical dependencies, user ownership, licensing, and even financial amortization of resources. The possible challenge is its hybrid architecture, followed by tight schema and application logic coupling. Any automation error or misconfigured import may corrupt your CMDB.<\/strong><\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Forget about hypothetical situations. The market knows numerous multi-hour outages in ITSM operations. Mainly due to schema-wide cascading deletions and overwritten attribute sets (caused by faulty API scripts).<\/p>\n\n\n\n<p>Certainly, protecting this layer requires you to deeply understand how data is stored and where the critical paths lie. You also need to get familiar with how to build a backup and recovery pipeline that aligns with:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RTOs under 1 hour,<\/li>\n\n\n\n<li>RPOs under 15 minutes,<\/li>\n\n\n\n<li>ability to pass integrity validation under load.<\/li>\n<\/ul>\n\n\n\n<p>According to the <a href=\"https:\/\/gitprotect.io\/docs\/gitprotect-ciso-guide-to-devops-threats-2025.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">CISO\u2019s guide to DevOps threats<\/a>, Atlassian\u2019s Jira experienced 132 incidents of different impact in 2024, which shows a 44% growth compared to 2023.<\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Assets storage model. What you\u2019re backing up<\/strong><\/h2>\n\n\n\n<p>Jira Assets data is stored across specific ActiveObjects tables in the Jira database (<strong>Data Center<\/strong>). The most vital include (among others):<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"686\" height=\"313\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/Jira-automation-rules.png\" alt=\"Jira Assets\" class=\"wp-image-7573\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/Jira-automation-rules.png 686w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/Jira-automation-rules-300x137.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/Jira-automation-rules-400x183.png 400w\" sizes=\"(max-width: 686px) 100vw, 686px\" \/><\/figure><\/div>\n\n\n<p>The tables mentioned use foreign keys and serialized JSON structures. They require precise relational consistency to avoid orphaned data or circular dependencies.<\/p>\n\n\n\n<p>However, elements like attachments reside in the filesystem. They\u2019re placed within the <strong>\/data\/attachments<\/strong> directory in Jira Home by default. If you exclude attachments from backup, object attributes pointing to these files will break (unnoticed) during recovery. The Jira system will fail to render previews or links.<\/p>\n\n\n\n<p>In the case of a <strong>Cloud<\/strong> instance, the approach is different. You can say Atlassian abstracts this layer entirely. Jira Assets data resides in a proprietary backend atop an AWS stack. That means there is no direct database access. Backups must be handled via the <strong>Jira Assets REST API<\/strong> \u2013 with or without third-party tooling.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Part 1. Solutions for Jira Assets DC<\/strong><\/h2>\n\n\n\n<p>Though Atlassian has already announced the end of support for its Data Center by March 28, 2029, let&#8217;s still look at some of the options. A full backup of Assets on Jira Data Center starts with consistent database snapshots. For PostgreSQL, a point-in-time consistent export of relevant tables may be set using:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pg_dump -Fc \\\n&nbsp;&nbsp;-t \"AO_8542F1_IFJ_OBJ\" \\\n&nbsp;&nbsp;-t \"AO_8542F1_IFJ_OBJ_TYPE\" \\\n&nbsp;&nbsp;-t \"AO_8542F1_IFJ_ATTRIBUTE\" \\\n&nbsp;&nbsp;-t \"AO_8542F1_IFJ_SCHEMA\" \\\njira_prod &gt; assets_only.dump<\/code><\/pre>\n\n\n\n<p>You have to execute such an export with complete transaction consistency. So, <strong>&#8211;no-synchronized-snapshots<\/strong> is not advised. Significantly, if the schema changes due to ongoing imports or automation.<\/p>\n\n\n\n<p>At the same time, the attachments must be captured:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tar -czf attachments_$(date +%F).tgz\n\/var\/atlassian\/application-data\/jira\/data\/attachments<\/code><\/pre>\n\n\n\n<p>However, in <a href=\"https:\/\/gitprotect.io\/industries\/regulated-industries.html\" target=\"_blank\" rel=\"noreferrer noopener\">regulated industries<\/a>, best practices include generating <strong>SHA256<\/strong> hashes post-backup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>sha256sum<\/strong> assets_only.dump attachments_*.tgz &gt; backup_hashes.sha256<\/code><\/pre>\n\n\n\n<p>During recovery, this approach validates that no tampering or corruption has occurred.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A bit deeper dive into database backups in Jira&nbsp;<\/strong><\/h3>\n\n\n\n<p>It\u2019s worth noting that Atlassian recommends native database tools for backups due to their reliability and performance. For <strong>PostgreSQL<\/strong>, the usual choice for logical backups in Jira is the pg_dump utility. For physical backups for larger instances, pg_basebackup is best.<\/p>\n\n\n\n<p>For example, configure a cron job on the Jira Data Center to create a <strong>daily logical backup<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nBACKUP_DIR=\"\/backups\/jira\/db\"\nTIMESTAMP=$(date +%Y%m%d_%H%M%S)\nDB_USER=\"jirauser\"\nDB_NAME=\"jiradb\"\nBACKUP_FILE=\"$BACKUP_DIR\/jira_db_$TIMESTAMP.sql.gz\"\n\nmkdir -p $BACKUP_DIR\npg_dump -U $DB_USER $DB_NAME | gzip &gt; $BACKUP_FILE\n\n# Rotate backups (keep 7 days)\nfind $BACKUP_DIR -name \"jira_db_*.sql.gz\" -mtime +7 -delete<\/code><\/pre>\n\n\n\n<p>The script above dumps the database, compresses it, and rotates backups to manage disk space. Of course, you need to ensure the DB_USER has sufficient permissions. Then, it\u2019s time to test the backup integrity using gunzip and psql to restore it to a test environment.<\/p>\n\n\n\n<p>Another example of a daily dump in <strong>PostgreSQL<\/strong> may look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pg_dump -U jira_user -h localhost -F c -b -f \/backups\/jira_db_$(date +%Y%m%d).backup jira_db<\/code><\/pre>\n\n\n\n<p>For comparison, the same step, but with rotation, in <strong>MySQL<\/strong> can be shaped as shown below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mysqldump -u jira_user -p$PASSWORD jira_db | gzip &gt; \/backups\/jira_db_$(date +%Y%m%d).sql.gz find \/backups -type f -name '*.gz' -mtime +30 -delete<\/code><\/pre>\n\n\n\n<p>Considering <strong>physical backups <\/strong>in PostgreSQL, pg_basebackup provides a faster option for large databases (&gt;50GB). For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>pg_basebackup<\/strong> -U $DB_USER -D \/backups\/jira\/pg_basebackup_$TIMESTAMP -Fp -Xs -P<\/code><\/pre>\n\n\n\n<p>The command creates a full backup of the PostgreSQL data directory. Combined with write-ahead logs (WAL), it\u2019s suitable for point-in-time recovery (PITR). To enable WAL archiving, configure archive_mode and archive_command in postgres.conf.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>archive_mode = on\narchive_command = \u2018cp %p \/backup\/jira\/wal\/%f\u2019<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What about filesystem backups?<\/strong><\/h3>\n\n\n\n<p>As you already know, the<strong> <\/strong>JIRA_HOME directory, typically located at ~\/.jira-home, contains critical files like attachments (data\/attachments), indexes (caches\/indexes), and configuration files.&nbsp;<\/p>\n\n\n\n<p>To back up the described directory, you need careful synchronization to avoid corrupting Lucene indexes, which Jira utilizes for search. So, if you aim for a robust solution, then the rsync method with a pre-backup script to pause indexing is a good choice.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nJIRA_HOME=\"\/var\/atlassian\/application-data\/jira\"\nBACKUP_DIR=\"\/backups\/jira\/fs\"\nTIMESTAMP=$(date +%Y%m%d_%H%M%S)\nBACKUP_FILE=\"$BACKUP_DIR\/jira_home_$TIMESTAMP.tar.gz\"\n\n# Pause indexing\ncurl -u admin:admin -X POST http:\/\/jira.example.com\/rest\/api\/2\/indexing\/pause\n\n# Sync and archive\nrsync -av --delete $JIRA_HOME \/tmp\/jira_home_backup\ntar -czf $BACKUP_FILE -C \/tmp jira_home_backup\n\n# Resume indexing\ncurl -u admin:admin -X POST http:\/\/jira.example.com\/rest\/api\/2\/indexing\/resume\n\n# Rotate backups\nfind $BACKUP_DIR -name \"jira_home_*.tar.gz\" -mtime +7 -delete<\/code><\/pre>\n\n\n\n<p>The script:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>pauses indexing through Jira\u2019s REST API,&nbsp;<\/li>\n\n\n\n<li>syncs the JIRA_HOME directory<\/li>\n\n\n\n<li>archives it<\/li>\n\n\n\n<li>resumes indexing.<\/li>\n<\/ul>\n\n\n\n<p>You need to replace admin: admin with a service account. In the next step, secure the credentials using a .netrc file or environmental variables.<\/p>\n\n\n\n<p>In general, the rsync command for attachments and indexes may be utilized as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>rsync<\/strong> -avz \/var\/atlassian\/application-data\/jira\/ backup-server:\/jira_backups\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><br><strong>Jira\u2019s built-in backup service<\/strong><\/h3>\n\n\n\n<p>Like any self-respecting software developer, Atlassian has implemented <a href=\"https:\/\/gitprotect.io\/blog\/gitprotect-jira-backup-vs-atlassians-built-in-backup-abilities\/\">a native data backup mechanism<\/a> in Jira. The platform\u2019s admins utilize an XML backup utility, accessible via:<\/p>\n\n\n\n<p><strong>Administration <\/strong>\u2192<strong> System <\/strong>\u2192<strong> Backup System<\/strong><\/p>\n\n\n\n<p>It generates a single ZIP file containing issues, configurations, and selected JIRA_HOME data. The solution is convenient yet very limited. The mechanism excludes attachments and is resource-intensive, often causing performance degradation on large instances with more than 500,000 issues.&nbsp;<\/p>\n\n\n\n<p>For smaller instances, you can schedule XML backups using a script involving the REST API. For instance:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nJIRA_URL=\"http:\/\/jira.example.com\"\nUSERNAME=\"admin\"\nPASSWORD=\"admin\"\nBACKUP_DIR=\"\/backups\/jira\/xml\"\nTIMESTAMP=$(date +%Y%m%d_%H%M%S)\n\n# Trigger backup\ncurl -u $USERNAME:$PASSWORD -X POST \"$JIRA_URL\/rest\/backup\/1\/export\/runbackup\" -H \"Content-Type: application\/json\" -d '{\"cbAttachments\": false}'\n\n# Wait for backup completion and download\n# Note: Implement polling logic to check backup status<\/code><\/pre>\n\n\n\n<p>However, automating XML backups is less reliable compared to database and file system backups. The method can cause potential timeouts. If so, it should be reserved as a secondary option (or for configuration exports).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Testing point-in-time restore: granular recovery and referential pitfalls<\/strong><\/h3>\n\n\n\n<p>Exceeding acceptable downtime windows while restoring full backups isn\u2019t rare. Many or even most teams aim for <a href=\"https:\/\/gitprotect.io\/features\/data-restore-disaster-recovery\/granular-restore.html#article-content\" target=\"_blank\" rel=\"noreferrer noopener\">granular restores<\/a>. Especially during incidents initiated by automation or import errors.&nbsp;<\/p>\n\n\n\n<p>However, such a step is far more complex than it appears.<\/p>\n\n\n\n<p>Let\u2019s take rolling back a single object as an example. It requires identifying all dependencies (e.g., attributes that refer to other object types, automation rules using such attributes), truncating the specific object set, and reinserting from a filtered pg_restore.<\/p>\n\n\n\n<p>For instance (SQL):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DELETE FROM AO_8542F1_IFJ_OBJ WHERE OBJECT_TYPE_ID = 11203;\n\npg_restore --data-only --table=AO_8542F1_IFJ_OBJ --file=filtered_obj.dump assets_only.dump<\/code><\/pre>\n\n\n\n<p>However, making such changes without setting up the necessary rules for your data (attribute constraints) and the unique identifiers linking things together (UUID bindings) can lead to problems. You might have broken connections between the data (dangling objects).&nbsp;<\/p>\n\n\n\n<p>Other issues might be inconsistencies in your system&#8217;s overall structure, such as breaking schema consistency. Therefore, you must test restores on staging. You should be using the exact version of Jira and the plugin state. Equally important is utilizing checksum-based post-restore validation against a dataset.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Part 2. Solutions for Jira Assest Cloud<\/strong><\/h2>\n\n\n\n<p>It\u2019s worth reminding that Atlassian Cloud doesn\u2019t officially support full schema-level exports in JSON format via the REST API. They were part of older Insight Server versions. The recommended way to export (backup) large sets of objects is to use the CSV export with the Jira (Service Management) UI.&nbsp;<\/p>\n\n\n\n<p>If you plan to automate exports (backups), you usually:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>export CSV files manually or utilize scripting UI automation<\/li>\n\n\n\n<li>or use the REST API to retrieve objects individually or in pages (pagination), which requires custom scripts.<\/li>\n<\/ul>\n\n\n\n<p>For example, let\u2019s retrieve the workspace ID required for API calls. Before making the latter, you need your workspace ID (bash):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -u email@example.com:API_TOKEN \\\n  -H \"Accept: application\/json\"\\\n  \"https:\/\/yourdomain.atlassian.net\/rest\/servicedeskapi\/insight\/workspace\"<\/code><\/pre>\n\n\n\n<p>Note the \u201cid\u201d field of the workspace you want to work with from the JSON response.<\/p>\n\n\n\n<p>To restore objects from JSON files, you must send a single (one) POST request per object. For this purpose, you use the current Assets API endpoint and Basic Auth with an API token.<\/p>\n\n\n\n<p>For instance, take a JSON file (object_345.json):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"objectTypeId\": \"250\",\n  \"attributes\": &#091;\n\t{\n  \t\"objectTypeAttributeId\": \"2797\",\n  \t\"objectAttributeValues\": &#091;\n    \t\t{ \"value\": \"Object Name\" }\n  \t      ]\n\t},\n\t{\n  \t\t\"objectTypeAttributeId\": \"2807\",\n  \t\t\"objectAttributeValues\": &#091;\n    \t\t  { \"value\": \"Object Description\" }\n  \t   ]\n\t}\n   ]\n}<\/code><\/pre>\n\n\n\n<p>Of course, you must get the correct objectTypeId and objectTypeAttributeId from your Assets schema configurator or via API.<\/p>\n\n\n\n<p>Now, create a POST request to create an object:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \\\n  -u email@example.com:API_TOKEN \\\n  -H \"Content-Type: application\/json\" \\\n  -d @object_345.json \\\n\"https:\/\/api.atlassian.com\/jsm\/insight\/workspace\/{yourworkspaceId}\/v1\/object\/create\"<\/code><\/pre>\n\n\n\n<p>It\u2019s worth mentioning that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>the old endpoint https:\/\/yourdomain.atlassian.net\/rest\/insight\/1.0\/object\/create is deprecated and doesn\u2019t work in Atlassian Cloud<\/li>\n\n\n\n<li>bulk export of objects in JSON format via the REST API is not supported in Atlassian Cloud<\/li>\n\n\n\n<li>for large datasets, export CSV using UI or implement paginated object retrieval through API<\/li>\n\n\n\n<li>import requires sequential POST requests per object, respecting object type and attribute IDs.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>A quick look at recovery procedures<\/strong><\/h2>\n\n\n\n<p>Approaching <strong>database recovery<\/strong>, let\u2019s start with logical backups. To restore the latter, you can use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gunzip jira_db_20250415_120000.sql.gz\npsql -U jirauser -d jiradb &lt; jira_db_20250415_120000.sql<\/code><\/pre>\n\n\n\n<p>When it comes to physical backups, you should stop the PostgreSQL service. Then, you copy the backup to the data directory and replay the WAL files (if using PITR). The last thing is to test restores in a <a href=\"https:\/\/gitprotect.io\/blog\/4-reasons-to-treat-backup-as-a-vital-part-of-jira-sandbox-to-production-migration\/\" target=\"_blank\" rel=\"noreferrer noopener\">sandbox environment<\/a> to validate <a href=\"https:\/\/gitprotect.io\/blog\/rto-and-rpo-what-are-those-metrics-about-and-how-to-improve-them\/\" target=\"_blank\" rel=\"noreferrer noopener\">RTO and RPO<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>File system recovery with validating and testing<\/strong><\/h3>\n\n\n\n<p>When you want to restore JIRA_HOME, the first thing to do is to stop Jira. Then it\u2019s done, extract the backup, and verify file permissions. For instance:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tar -xzf jira_home_20250415_120000.tar.gz -C \/var\/atlassian\/application-data\nchown -R jira:jira \/var\/atlassian\/application-data\/jira<\/code><\/pre>\n\n\n\n<p>Further, rebuild indexes in <strong>Administration \u2192 System \u2192 Indexing<\/strong> after restoration to ensure search functionality.<\/p>\n\n\n\n<p>A good practice (or even a must) is regularly testing backups by restoring them to a staging environment. You can automate the process with a script to check backup integrity.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nBACKUP_FILE=\"\/backups\/jira\/db\/jira_db_20250415_120000.sql.gz\"\ngunzip -t $BACKUP_FILE &amp;&amp; echo \"Backup is valid\" || echo \"Backup is corrupt\"<\/code><\/pre>\n\n\n\n<p>In short, a backup is useless if it can\u2019t be restored.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Jira Assets backup automation and third-party integrations<\/strong><\/h2>\n\n\n\n<p>Experts across the Internet keep repeating that manual backups are error-prone. To remove human-made errors from the backup and restore equation, top-performing teams integrate tools like <strong>GitProtect.io<\/strong>.<\/p>\n\n\n\n<p>It\u2019s an enterprise-grade, automated backup and disaster recovery tool, tailored for DevOps and PM data protection, including Jira, Bitbucket, GitHub, GitLab, and Azure DevOps..<\/p>\n\n\n\n<p>The GitProtect solution allows you to back up and restore your Jira Assets in <a href=\"https:\/\/gitprotect.io\/blog\/jira-backup-to-s3\/\" target=\"_blank\" rel=\"noreferrer noopener\">a few simple steps<\/a>.&nbsp;<\/p>\n\n\n\n<p>From the Jira admin&#8217;s perspective, the solution extends backup and recovery beyond Atlassian\u2019s native capabilities. Companies can use granular control, <a href=\"https:\/\/gitprotect.io\/blog\/security-compliance-best-practices\/\" target=\"_blank\" rel=\"noreferrer noopener\">compliance<\/a>, and resilience for mission-critical workflows.<\/p>\n\n\n\n<p>Here\u2019s why:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Cross-tool dependency protection<\/strong><\/h3>\n\n\n\n<p>Usually, Jira is integrated with other DevOps tools, for example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Git repositories (e.g., issues referenced in commit messages)<\/li>\n\n\n\n<li>CI\/CD pipelines are connected via third-party integration automation rules.<\/li>\n<\/ul>\n\n\n\n<p>GitProtect.io backs up Jira Cloud and Git repositories (GitHub, GitLab, Bitbucket, Azure DevOps), preserving platform issue references.<\/p>\n\n\n\n<p>When backups are configured across these tools, GitProtect ensures that cross-referenced data (e.g., Jira issue keys in Git commits) remains accessible after recovery, provided all linked systems are restored.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Backup automation without script maintenance<\/strong><\/h3>\n\n\n\n<p>Even though Atlassian Cloud provides basic backups and Data Center requires manual scripts, GitProtect allows for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Policy-drive scheduling<\/strong><strong><br><\/strong>For example, daily incremental and weekly full backups.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pre\/post-backup hooks<\/strong><strong><br><\/strong>For instance, pause indexing during backup to ensure consistency.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>No reliance on brittle <\/strong><strong>pg_dump<\/strong><strong> or filesystem snapshots<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Compliance and legal hold<\/strong><\/h3>\n\n\n\n<p>The tool uses immutable backups (<a href=\"https:\/\/gitprotect.io\/blog\/immutable-storage\/\">WORM storage<\/a>) for audit trails, which is crucial for SOC2\/ISO 27001. Backups are supported with role-based access control; for example, Jira schema restores are restricted to admins.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Faster, granular recovery<\/strong><\/h3>\n\n\n\n<p>GitProtect allows you to <strong>restore individual issues<\/strong> (not just the entire project) through Jira\u2019s REST API integration. Your team can also utilize <strong>point-in-time recovery<\/strong> for attachments or workflows corrupted by misconfigured apps.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Offsite replication for disaster recovery<\/strong><\/h3>\n\n\n\n<p>The tool makes it easy to connect and use <strong>hybrid storage targets<\/strong> (e.g., AWS S3, Azure Blob, on-prem NAS, etc.) with encryption-in-transit. This also entails <strong>geo-redundancy<\/strong> to meet RPO\/RTO SLAs, e.g., <strong>under 1 hour recovery for critical projects<\/strong>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"1024\" height=\"468\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/jira-assets-2.png\" alt=\"Jira Assets 2\" class=\"wp-image-7575\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/jira-assets-2.png 1024w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/jira-assets-2-300x137.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/jira-assets-2-768x351.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/jira-assets-2-400x183.png 400w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"468\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-1-1024x468.png\" alt=\"Jira Assets 3\" class=\"wp-image-7567\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-1-1024x468.png 1024w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-1-300x137.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-1-768x351.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-1-1536x702.png 1536w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-1-400x183.png 400w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-1.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Native Jira backups lack <strong>cross-tool consistency<\/strong> and <strong>legal-grade retention<\/strong>. GitProtect.io fills the gap by treating Jira as part of the DevOps pipeline (not just a standalone database). For teams that already back up Git repos with GitProtect.io, adding Jira is a <strong>natural extension<\/strong> to protect the entire SDLC.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>More than a safety net: metrics that matter<\/strong><\/h2>\n\n\n\n<p>Ideally, each Jira admin could treat backup as a simple checkbox. However, the reality of business and IT clarifies that backups are a core component of system integrity and, as such, must be tied to SLA\/OLA performance indicators. Among the latter, the most vital are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RPO (Recovery Point Objective)<\/strong><br>Note that without API-level automation, the realistic RPO in Jira Cloud is <strong>24 to 48 hours<\/strong>. With automation, the needed time is reduced to <strong>minutes<\/strong>.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"470\" src=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-2-1024x470.png\" alt=\"Jira Assets 4\" class=\"wp-image-7569\" style=\"width:500px;height:auto\" srcset=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-2-1024x470.png 1024w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-2-300x138.png 300w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-2-768x353.png 768w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-2-1536x706.png 1536w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-2-400x184.png 400w, https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/image-2.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RTO (Recovery Time Objective)<\/strong><br>Considering full schema recovery, the average RTO in the Data Center is <strong>12 to 35 minutes<\/strong>. Of course, if you assume tested SQL restore paths. The measurement shrinks to even <strong>under 10 minutes<\/strong> with object-level restores and tested pipelines.<br><\/li>\n\n\n\n<li><strong>Integrity rate<\/strong><br>Backup verification using checksums and dry-run imports yields an <strong>over 99.97% success rate<\/strong> when using automated validation scripts on staged environments.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Final notes<\/strong><\/h2>\n\n\n\n<p>All the information above shows that protecting Jira Assets should be based on a disciplined approach to backup and recovery. That includes blending native tools and automation, followed by rigorous testing.<\/p>\n\n\n\n<p>Jira administrators can mitigate risks and ensure operational continuity by (among others) implementing database and file system backups and validating recovery procedures. Various scripts, configurations, and strategies outlined here are a foundation for resilience, adaptable to instances of different scales and complexities.<\/p>\n\n\n\n<p>However, given the limitations of the native Atlassian tools, using a third-party solution like GitProtect is a far more convenient, safe, and efficient approach. The software allows you to manage quickly all aspects of a reliable backup and disaster recovery process. That includes granular restore, automation without maintenance, and cross-tool dependency protection.&nbsp;<\/p>\n\n\n\n<p>Let\u2019s not forget unmatched RPO and RTO times with over 99,97% success rate. These give any Jira admin more confidence and a sound argument in security-related activities.<\/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 DevOps backup and recovery of critical Jira data with a 14-day trial<\/strong><\/a><strong>&nbsp;\ud83d\ude80<\/strong><br><br><a href=\"https:\/\/calendly.com\/d\/3s9-n9z-pgc\/gitprotect-live-demo?\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>[CUSTOM DEMO] Let\u2019s talk about how backup &amp; DR software for Jira can help you mitigate the risks<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>It\u2019s hard to imagine a modern ITSM (IT Service Management) and general configuration management in Jira without Jira Assets. All the more so, it allows IT teams to model physical infrastructure, logical dependencies, user ownership, licensing, and even financial amortization of resources. The possible challenge is its hybrid architecture, followed by tight schema and application logic coupling. Any automation error or misconfigured import may corrupt your CMDB.<\/p>\n","protected":false},"author":16,"featured_media":7577,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,73],"tags":[],"class_list":["post-7563","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-git-backup-101","category-jira","post--single"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Protect Jira Assets: Best Practices For Backup And Recovery - Blog | GitProtect.io<\/title>\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\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Protect Jira Assets: Best Practices For Backup And Recovery - Blog | GitProtect.io\" \/>\n<meta property=\"og:description\" content=\"It\u2019s hard to imagine a modern ITSM (IT Service Management) and general configuration management in Jira without Jira Assets. All the more so, it allows IT teams to model physical infrastructure, logical dependencies, user ownership, licensing, and even financial amortization of resources. The possible challenge is its hybrid architecture, followed by tight schema and application logic coupling. Any automation error or misconfigured import may corrupt your CMDB.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/\" \/>\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=\"2025-10-08T05:56:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-01T15:43:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/\"},\"author\":{\"name\":\"Wojciech Andryszek, Technical Content Writer at GitProtect.io\",\"@id\":\"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/967901c0176390b9c3fa15c5da47f37b\"},\"headline\":\"How to Protect Jira Assets: Best Practices For Backup And Recovery\",\"datePublished\":\"2025-10-08T05:56:43+00:00\",\"dateModified\":\"2025-12-01T15:43:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/\"},\"wordCount\":2249,\"publisher\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg\",\"articleSection\":[\"Git Backup 101\",\"Jira\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/\",\"url\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/\",\"name\":\"How to Protect Jira Assets: Best Practices For Backup And Recovery - Blog | GitProtect.io\",\"isPartOf\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg\",\"datePublished\":\"2025-10-08T05:56:43+00:00\",\"dateModified\":\"2025-12-01T15:43:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#primaryimage\",\"url\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg\",\"contentUrl\":\"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg\",\"width\":2400,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/gitprotect.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Protect Jira Assets: Best Practices For Backup And Recovery\"}]},{\"@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":"How to Protect Jira Assets: Best Practices For Backup And Recovery - Blog | GitProtect.io","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\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/","og_locale":"en_US","og_type":"article","og_title":"How to Protect Jira Assets: Best Practices For Backup And Recovery - Blog | GitProtect.io","og_description":"It\u2019s hard to imagine a modern ITSM (IT Service Management) and general configuration management in Jira without Jira Assets. All the more so, it allows IT teams to model physical infrastructure, logical dependencies, user ownership, licensing, and even financial amortization of resources. The possible challenge is its hybrid architecture, followed by tight schema and application logic coupling. Any automation error or misconfigured import may corrupt your CMDB.","og_url":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/","og_site_name":"Blog | GitProtect.io","article_publisher":"https:\/\/www.facebook.com\/XoperoSoftware\/","article_published_time":"2025-10-08T05:56:43+00:00","article_modified_time":"2025-12-01T15:43:42+00:00","og_image":[{"width":2400,"height":1200,"url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg","type":"image\/jpeg"}],"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\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#article","isPartOf":{"@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/"},"author":{"name":"Wojciech Andryszek, Technical Content Writer at GitProtect.io","@id":"https:\/\/gitprotect.io\/blog\/#\/schema\/person\/967901c0176390b9c3fa15c5da47f37b"},"headline":"How to Protect Jira Assets: Best Practices For Backup And Recovery","datePublished":"2025-10-08T05:56:43+00:00","dateModified":"2025-12-01T15:43:42+00:00","mainEntityOfPage":{"@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/"},"wordCount":2249,"publisher":{"@id":"https:\/\/gitprotect.io\/blog\/#organization"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#primaryimage"},"thumbnailUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg","articleSection":["Git Backup 101","Jira"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/","url":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/","name":"How to Protect Jira Assets: Best Practices For Backup And Recovery - Blog | GitProtect.io","isPartOf":{"@id":"https:\/\/gitprotect.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#primaryimage"},"image":{"@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#primaryimage"},"thumbnailUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg","datePublished":"2025-10-08T05:56:43+00:00","dateModified":"2025-12-01T15:43:42+00:00","breadcrumb":{"@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#primaryimage","url":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg","contentUrl":"https:\/\/gitprotect.io\/blog\/wp-content\/uploads\/2025\/10\/2x_How-to-protect-Jira-Assets_-Best-practices-for-Backup-Recovery-1-1.jpg","width":2400,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/gitprotect.io\/blog\/how-to-protect-jira-assets-ways-to-protect-jira-assets\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/gitprotect.io\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Protect Jira Assets: Best Practices For Backup And Recovery"}]},{"@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\/7563","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=7563"}],"version-history":[{"count":3,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/7563\/revisions"}],"predecessor-version":[{"id":7877,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/posts\/7563\/revisions\/7877"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/media\/7577"}],"wp:attachment":[{"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/media?parent=7563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/categories?post=7563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gitprotect.io\/blog\/wp-json\/wp\/v2\/tags?post=7563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}