{"id":13558700,"url":"https://github.com/frekele/helicopterizer","last_synced_at":"2026-03-02T19:07:29.780Z","repository":{"id":91907914,"uuid":"56175036","full_name":"frekele/helicopterizer","owner":"frekele","description":"Backup and Restore for Docker Container!","archived":false,"fork":false,"pushed_at":"2020-05-25T06:01:07.000Z","size":527,"stargazers_count":113,"open_issues_count":8,"forks_count":20,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-07T21:51:32.291Z","etag":null,"topics":["backup","docker","docker-image","helicopterizer","open-source","restore"],"latest_commit_sha":null,"homepage":"https://helicopterizer.frekele.org","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/frekele.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-04-13T18:08:46.000Z","updated_at":"2025-01-17T13:20:52.000Z","dependencies_parsed_at":"2023-04-10T10:17:08.491Z","dependency_job_id":null,"html_url":"https://github.com/frekele/helicopterizer","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/frekele/helicopterizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frekele%2Fhelicopterizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frekele%2Fhelicopterizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frekele%2Fhelicopterizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frekele%2Fhelicopterizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frekele","download_url":"https://codeload.github.com/frekele/helicopterizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frekele%2Fhelicopterizer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265233753,"owners_count":23731825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","docker","docker-image","helicopterizer","open-source","restore"],"created_at":"2024-08-01T12:05:06.532Z","updated_at":"2026-03-02T19:07:24.736Z","avatar_url":"https://github.com/frekele.png","language":"Shell","funding_links":[],"categories":["Shell","docker"],"sub_categories":[],"readme":"# Helicopterizer\n\n#### Solution Open Source in Backup and Restore, for Docker Container in the Cloud Providers!\n\n[![Helicopterizer Image][HelicopterizerImage]][website]\n\n[![ImageLayers](https://badge.imagelayers.io/frekele/helicopterizer:master.svg)](https://imagelayers.io/?images=frekele/helicopterizer:master)\n\n[![Gitter](https://badges.gitter.im/frekele/helicopterizer.svg)](https://gitter.im/frekele/helicopterizer?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Docker Pulls](https://img.shields.io/docker/pulls/frekele/helicopterizer.svg)](https://hub.docker.com/r/frekele/helicopterizer/)\n[![Docker Stars](https://img.shields.io/docker/stars/frekele/helicopterizer.svg)](https://hub.docker.com/r/frekele/helicopterizer/)\n[![Release](https://img.shields.io/github/release/frekele/helicopterizer.svg)](https://github.com/frekele/helicopterizer/releases/latest)\n\n\n[![Circle CI](https://circleci.com/gh/frekele/helicopterizer/tree/master.svg?style=shield)](https://circleci.com/gh/frekele/helicopterizer/tree/master)\n[![Build Status](https://travis-ci.org/frekele/helicopterizer.svg?branch=master)](https://travis-ci.org/frekele/helicopterizer)\n[![GitHub issues](https://img.shields.io/github/issues/frekele/helicopterizer.svg)](https://github.com/frekele/helicopterizer/issues)\n[![GitHub forks](https://img.shields.io/github/forks/frekele/helicopterizer.svg)](https://github.com/frekele/helicopterizer/network)\n[![GitHub stars](https://img.shields.io/github/stars/frekele/helicopterizer.svg)](https://github.com/frekele/helicopterizer/stargazers)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/frekele/helicopterizer/master/LICENSE)\n\n## Backup and Restore for Docker Container\n\n#### Solution Open Source in Backup and Restore, for Docker Container in the Cloud Providers!\n\n\n### Usage:\n\n```bash\ndocker run -d [Environment Variables] [-v|--volumes-from] frekele/helicopterizer [backup|restore] [--tarball|--sync]\n```\n\n\n### Use Stable Branch for (Production)\n```bash\ndocker run -d frekele/helicopterizer:stable\n```\n\n\n### Master Branch for (Development)\n```bash\ndocker run -d frekele/helicopterizer:latest\n# or\ndocker run -d frekele/helicopterizer\n```\n\n\n### Specific Tag Version\n\n```bash\ndocker run -d frekele/helicopterizer:v0.3.1\n```\n\n\n#### Cloud Storage Provider Supported:\n\n| Provider                                    | Variable Value  | Supported                         |\n| ------------------------------------------- | --------------- | --------------------------------- |\n| Amazon Simple Storage Service (S3)          | AWS             | yes                               |\n| Microsoft Azure Storage                     | AZURE           | no - Planned for the future       |\n| Google Cloud Storage                        | GOOGLE          | no - Planned for the future       |\n| Rackspace Storage                           | RACKSPACE       | no - Planned for the future       |\n| IBM SoftLayer Storage                       | SOFTLAYER       | no - Planned for the future       |\n| Oracle Cloud Storage                        | ORACLE          | no - Planned for the future       |\n| OpenStack Swift Storage (Open source)       | OPENSTACK       | no - Planned for the future       |\n| Minio Storage (Open source)                 | MINIO           | no - Planned for the future       |\n\n\n\n#### Environment Variables:\n\n| Variable Name                   | Default             | Action                 | Required  | Option          | Description                                                     |\n| ------------------------------- | ------------------- | ---------------------- | --------- | --------------- | --------------------------------------------------------------- |\n| STORAGE_PROVIDER                | null                | backup, restore        | yes       | tarball, sync   | Provider name (AWS, AZURE, GOOGLE ...)                          |\n| DATA_PATH                       | /data/              | backup, restore        | no        | tarball, sync   | Data path : /data/(your files)                                  |\n| DATA_PATH_EXCLUDE               | null                | backup                 | no        | tarball         | Exclude file from data path (comma-separated)                   |\n| CRON_SCHEDULE                   | null                | backup, restore        | no        | tarball, sync   | Cron Job Scheduler, Eg: '*/15 * * * *' run every 15 minutes     |\n| BACKUP_PREFIX                   | null                | backup, restore        | no        | tarball         | Default name schema: $(BACKUP_PREFIX)$(BACKUP_VERSION).tar.gz   |\n| BACKUP_NAME                     | null                | backup, restore        | no        | tarball         | If defined the name shcema is: $(BACKUP_NAME).tar.gz            |\n| GZIP_COMPRESSION                | true                | backup, restore        | no        | tarball         | Boolean to indicate the compression of the file .tar to .tar.gz |\n| CLEAN_DATA_BEFORE_RESTORE       | false               | restore                | no        | tarball, sync   | Clear the data directory before the restore                     |\n| BACKUP_VERSION                  | null                | restore                | yes       | tarball         | Backup version using: $(BACKUP_VERSION).tar.gz                  |\n\n\n\n#### Environment Variables for AWS S3:\n\n| Variable Name                   | Default             | Action                 | Required  | Option          | Description                                                      |\n| ------------------------------- | ------------------- | ---------------------- | --------- | --------------- | ---------------------------------------------------------------- |\n| AWS_ACCESS_KEY_ID               | null                | backup, restore        | yes       | tarball, sync   | AWS access key. Eg: AKRJPMI3QYCARJCRF4VF                         |\n| AWS_SECRET_ACCESS_KEY           | null                | backup, restore        | yes       | tarball, sync   | AWS secret key. Eg: VCsrO7aVulGuiUdXbS31jtQA4iRTVgi4scftJAJr     |\n| AWS_S3_BUCKET_NAME              | null                | backup, restore        | yes       | tarball, sync   | S3 bucket name. Eg: s3://my-bucket-backup/                       |\n| AWS_S3_BUCKET_CREATE            | false               | backup                 | no        | tarball, sync   | Boolean to indicate if we create the bucket (if not exists)      |\n| AWS_S3_PATH                     | /                   | backup, restore        | no        | tarball, sync   | Relative path for bucket S3. Eg: (AWS_S3_BUCKET_NAME)/jenkins/   |\n| AWS_DEFAULT_REGION              | us-east-1           | backup, restore        | no        | tarball, sync   | Default region bucket. Eg: (sa-east-1)                           |\n| AWS_S3_OPTIONS                  | null                | backup, restore        | no        | tarball, sync   | AWS S3 options parameters. See in [AWS CLI S3]                   |\n\n\n\n####  AWS S3 Regions:\n\nRegion Name            | Description the Region                    |\n---------------------- | ------------------------------------------|\nus-east-1              | US East (Virginia)                        |\nus-west-1              | US West (N. California)                   |\nus-west-2              | US West (Oregon)                          |\neu-west-1              | EU West (Ireland)                         |\neu-central-1           | EU Central (Frankfurt)                    |\nap-northeast-1         | Asia Pacific (Tokyo)                      |\nap-northeast-2         | Asia Pacific (Seoul)                      |\nap-southeast-1         | Asia Pacific (Singapore)                  |\nap-southeast-2         | Asia Pacific (Sydney)                     |\nsa-east-1              | South America (Sao Paulo)                 |\nus-gov-west-1          | US GovCloud West (Oregon)                 |\n\n\n\n### Usage Examples:\n\nRun Backup with tarball:\n\n```properties\ndocker run --rm \\\n-e STORAGE_PROVIDER=AWS \\\n-e AWS_ACCESS_KEY_ID=XXXXXXXXXXXXX \\\n-e AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \\\n-e AWS_S3_BUCKET_NAME=s3://my-bucket-backup/ \\\n-v /some/dir/jenkins-data:/data:ro \\\nhelicopterizer backup --tarball\n```\n\n\nRun Backup with sync filesystem:\n\n```properties\ndocker run --rm \\\n-e STORAGE_PROVIDER=AWS \\\n-e AWS_ACCESS_KEY_ID=XXXXXXXXXXXXX \\\n-e AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \\\n-e AWS_S3_BUCKET_NAME=s3://my-bucket-backup/ \\\n-v /some/dir/jenkins-data:/data:ro \\\nhelicopterizer backup --sync\n```\n\n *Use ':ro' to mount the volumes in read-only mode.*\n\n\nRun Restore with tarball:\n\n```properties\ndocker run --rm \\\n-e STORAGE_PROVIDER=AWS \\\n-e AWS_ACCESS_KEY_ID=XXXXXXXXXXXXX \\\n-e AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \\\n-e AWS_S3_BUCKET_NAME=s3://my-bucket-backup/ \\\n-e BACKUP_VERSION='2016-05-04T01:34:20Z' \\\n-v /some/dir/jenkins-data:/data:rw \\\nhelicopterizer restore --tarball\n```\n\n\nRun Restore with sync filesystem:\n\n```properties\ndocker run --rm \\\n-e STORAGE_PROVIDER=AWS \\\n-e AWS_ACCESS_KEY_ID=XXXXXXXXXXXXX \\\n-e AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \\\n-e AWS_S3_BUCKET_NAME=s3://my-bucket-backup/ \\\n-e BACKUP_VERSION='2016-05-04T01:34:20Z' \\\n-v /some/dir/jenkins-data:/data:rw \\\nhelicopterizer restore  --sync\n```\n\n *Use ':rw' to mount the volumes in read-write mode.*\n\n\nRun `[Backup|Restore]` with environment file:\n\n```properties\ntouch ~/helicopterizer.conf\n##################################\n# Set Your Environment Variables:\n##################################\nSTORAGE_PROVIDER=AWS\nBACKUP_NAME=my-backup-name\nDATA_PATH=/data/\nGZIP_COMPRESSION=true\nCLEAN_DATA_BEFORE_RESTORE=false\nBACKUP_VERSION=date-time-z\nAWS_ACCESS_KEY_ID=XXXXXXXXXXXXX\nAWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nAWS_S3_BUCKET_NAME=s3://my-bucket-backup/\nAWS_S3_PATH=/\nAWS_DEFAULT_REGION=us-east-1\nAWS_S3_OPTIONS=\n##################################\n.\ndocker run --rm \\\n--env-file ~/helicopterizer.conf \\\n-v /some/dir/jenkins-data:/data \\\nhelicopterizer [backup|restore] [--tarball|--sync]\n```\n\n\nRun `[Backup|Restore]` with data volume container:\n\n```properties\ndocker run --rm \\\n........\n-e DATA_PATH=/var/jenkins_home/ \\\n--volumes-from jenkins-data \\\nhelicopterizer [backup|restore] [--tarball|--sync]\n```\n\n\nRun `[Backup|Restore]` with Cron Job Scheduler (System Timezone is UTC):\n\n```properties\ndocker run -d \\\n........\n-e CRON_SCHEDULE='30 4 * * *' \\\nhelicopterizer [backup|restore] [--tarball|--sync]\n\n#####################################################\n######### Examples Cron Job Scheduler Usage #########\n############## System Timezone is UTC ###############\n#####################################################\n- CRON_SCHEDULE='30 4 * * *' - Runs every day at 04:30;\n- CRON_SCHEDULE='*/15 * * * *' - Runs every 15 Minutes;\n- CRON_SCHEDULE='0 */5 * * *' - Runs every 5 Hours;\n- CRON_SCHEDULE='0 */12 * * *' - Runs every 12 Hours;\n- CRON_SCHEDULE='0 */32 * * *' - Runs every 32 Hours;\n- CRON_SCHEDULE='0 0 */2 * *' - Runs every 2 Days;\n- CRON_SCHEDULE='0 0 */7 * *' - Runs every 7 Days;\n- CRON_SCHEDULE='0 0 0 */2 *' - Runs every 2 Months;\n- CRON_SCHEDULE='@monthly' - Run once a Month, the same as: '0 0 1 * *';\n- CRON_SCHEDULE='@weekly' - Run once a Week, the same as: '0 0 * * 0';\n- CRON_SCHEDULE='@daily' - Run once a Day, the same as: '0 0 * * *';\n- CRON_SCHEDULE='@midnight' - Run once a Day, the same as: '0 0 * * *' and @daily;\n- CRON_SCHEDULE='@hourly' - Run once a Hour, the same as: '0 * * * *';\n```\n\nMore info to usage: [Cron Wiki].\n\n\n\nRun `[Backup|Restore]` with prefix name *$(BACKUP_NAME)-$(BACKUP_VERSION).tar.gz*:\n\n```properties\ndocker run --rm \\\n........\n-e BACKUP_NAME=my-backup-name \\\nhelicopterizer [backup|restore] --tarball\n```\n\n\nRun `[Backup|Restore]` without gzip compression:\n\n```properties\ndocker run --rm \\\n........\n-e GZIP_COMPRESSION=false \\\nhelicopterizer [backup|restore] --tarball\n```\n\n\nRun `[Backup|Restore]` with bucket creation (if NoSuchBucket):\n\n```properties\ndocker run --rm \\\n........\n-e AWS_S3_BUCKET_CREATE=true \\\nhelicopterizer [backup|restore] --tarball\n```\n\n\nRun With clean the date before the restore:\n\n***[Be careful here, you will lose all your data inside DATA_PATH directory].***\n\n```properties\ndocker run --rm \\\n........\n-e CLEAN_DATA_BEFORE_RESTORE=true \\\nhelicopterizer restore [--tarball|--sync]\n```\n\n\nRun `[Backup|Restore]` with other data path:\n\n```properties\ndocker run --rm \\\n........\n-e DATA_PATH=/var/jenkins_home/ \\\n-v /some/dir/jenkins-data:/var/jenkins_home \\\nhelicopterizer [backup|restore] [--tarball|--sync]\n```\n\n\nRun `[Backup]` with other data path \u0026 exclude jenkins workspace:\n\n```properties\ndocker run --rm \\\n........\n-e DATA_PATH=/var/jenkins_home/ \\\n-e DATA_PATH_EXCLUDE=workspace \\\n-v /some/dir/jenkins-data:/var/jenkins_home \\\nhelicopterizer [backup|restore] [--tarball|--sync]\n```\n\n\nRun `[Backup|Restore]` with other AWS Region:\n\n```properties\ndocker run --rm \\\n........\n-e AWS_DEFAULT_REGION=sa-east-1 \\\nhelicopterizer [backup|restore] [--tarball|--sync]\n```\n\n\nRun `[Backup|Restore]` with subdirectories in AWS S3:\n\n```properties\ndocker run --rm \\\n........\n-e AWS_S3_PATH=/project-alpha/nexus/ \\\nhelicopterizer [backup|restore] [--tarball|--sync]\n```\n\n\nRun `[Backup|Restore]` with Options [AWS CLI S3]:\n\n```properties\ndocker run --rm \\\n........\n-e AWS_S3_OPTIONS='--delete' \\\nhelicopterizer [backup|restore] [--tarball|--sync]\n```\n\n\n\n\n### Working with Persistent Data:\n\nThere are two general approaches to handling persistent storage requirements with Docker.\nSee [Managing Data in Containers](https://docs.docker.com/userguide/dockervolumes/) for additional information.\n\n#### Data volume container\n\n*Use a data volume container*. Since data volumes are persistent until no containers use them, a container can created specifically for this purpose.  \n\n*Example with Jenkins:*\n\n```bash\ndocker run -d --name jenkins-data jenkinsci/jenkins:2.0 echo \"data-only container for Jenkins\"\ndocker run -d -p 8080:8080 -p 50000:50000 --name jenkins --volumes-from jenkins-data jenkinsci/jenkins:2.0\n```\n\n\n*Example with Nexus:*    \n\n```bash\ndocker run -d --name nexus-data sonatype/nexus3 echo \"data-only container for Nexus\"\ndocker run -d -p 8081:8081 --name nexus --volumes-from nexus-data sonatype/nexus3\n```\n\n#### Data volume\n\n*Mount a host directory as the volume*.  This is not portable, as it relies on the directory existing with correct permissions on the host.\nHowever it can be useful in certain situations where this volume needs to be assigned to certain specific underlying storage.  \n\n*Example with Jenkins:*\n\n```bash\nmkdir /some/dir/jenkins-data \u0026\u0026 chown -R 1000:1000 /some/dir/jenkins-data\ndocker run -d -p 8080:8080 -p 50000:50000 --name jenkins -v /some/dir/jenkins-data:/var/jenkins_home jenkinsci/jenkins\n\n# or\n\ndocker volume create --name jenkins-data\ndocker run -d -p 8080:8080 -p 50000:50000 --name jenkins -v jenkins-data:/var/jenkins_home jenkinsci/jenkins\n```\n\n\n*Example with Nexus:*\n\n```bash\nmkdir /some/dir/nexus-data \u0026\u0026 chown -R 200 /some/dir/nexus-data\ndocker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3\n\n# or\n\ndocker volume create --name nexus-data\ndocker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3\n```\n\n\n\n### Building:\n\n  Build with the usual\n\n    docker build -t helicopterizer .\n\n  Tests are written using [bats](https://github.com/sstephenson/bats) under the `tests` dir\n\n    bats tests\n\n\n\n### License:\nHelicopterizer is **licensed** under the **[MIT License]**. The terms of the license are as follows:\n\n    MIT License\n\n    Copyright (c) 2016-2019 @frekele\u003cLeandro Kersting de Freitas\u003e\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n\n\n\n[HelicopterizerImage]: https://raw.githubusercontent.com/frekele/helicopterizer/master/docs/static_files/logo.png\n[MIT License]: https://raw.githubusercontent.com/frekele/helicopterizer/master/LICENSE\n[GitHub]: https://github.com/frekele/helicopterizer\n[website]: https://github.com/frekele/helicopterizer/\n[Docker HUB]: https://hub.docker.com/r/frekele/helicopterizer/\n[Cron Wiki]: https://en.wikipedia.org/wiki/Cron\n[AWS CLI S3]: http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrekele%2Fhelicopterizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrekele%2Fhelicopterizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrekele%2Fhelicopterizer/lists"}