{"id":51228971,"url":"https://github.com/jamesworldbuilder/backup-functions","last_synced_at":"2026-06-28T14:01:59.325Z","repository":{"id":349418583,"uuid":"1172628844","full_name":"jamesworldbuilder/backup-functions","owner":"jamesworldbuilder","description":"Workspace backup scripts","archived":false,"fork":false,"pushed_at":"2026-04-05T20:07:55.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-05T22:10:09.871Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamesworldbuilder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-04T14:23:09.000Z","updated_at":"2026-04-05T20:08:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jamesworldbuilder/backup-functions","commit_stats":null,"previous_names":["jamesworldbuilder/backup-functions"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jamesworldbuilder/backup-functions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesworldbuilder%2Fbackup-functions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesworldbuilder%2Fbackup-functions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesworldbuilder%2Fbackup-functions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesworldbuilder%2Fbackup-functions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamesworldbuilder","download_url":"https://codeload.github.com/jamesworldbuilder/backup-functions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesworldbuilder%2Fbackup-functions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34890795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-06-28T14:01:58.649Z","updated_at":"2026-06-28T14:01:59.320Z","avatar_url":"https://github.com/jamesworldbuilder.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Workspace Backup Scripts\n\nA two-part Linux shell utility designed to backup local files to the cloud ([Google Drive](https://www.google.com/drive/)). \n\n[Restic](https://restic.net/) stores backups of local standard files in the cloud and syncs local file changes in the `restic-backerupper.sh` script. \nUtilizes the [AWS CLI](https://aws.amazon.com/cli/) to generate and/or retrieve the Restic key file from a specified [Amazon S3](https://aws.amazon.com/s3/) bucket. \n\n[Rclone](https://rclone.org/) stores backups of local compressed archive files in the cloud and syncs newly created local archives in the `archive-backerupper.sh` script. \n\n---\n\n## Requirements\n\nThe following command-line tools must be installed and accessible on your system:\n* **[Restic](https://restic.net/)**: Automates an encrypted deduplication backup and sync process of standard file types with a specified cloud storage provider.\n* **[Rclone](https://rclone.org/)**: Automates a 1-to-1 file backup and sync process for large binary files with a specified cloud storage provider.\n* **[AWS CLI](https://aws.amazon.com/cli/)**: Required for fetching and backing up the Restic key file to a specified AWS S3 bucket.\n* **[OpenSSL](https://www.openssl.org/)**: Required for generating a secure 32-byte encryption key on the initial run.\n\n#### Cloud Accounts\n* **[Google Drive](https://www.google.com/drive/)**: Required for hosting the backup files.\n* **[Amazon Web Services (AWS)](https://aws.amazon.com/)**: Required for hosting the Restic encryption key in an S3 bucket.\n---\n\n## Configuration\n\nBefore running the scripts, you must configure the global variables in the `backerupper-config.env` file. \n\nStore this file in the same directory as the scripts. It holds all global variables and cloud paths.\n\n```bash\nGDRIVE_DEST=\"gdrive:backups-folder\" # Must match name of Google Drive destination folder (separate from BINARY_DEST)\nAWS_BUCKET_DEST=\"s3://aws-bucket-name\"\nIGNORE_FILE_NAME=\".backupignore\"\nRESTIC_PASSWORD_FILE_NAME=\".restic-password\"\nAWS_CMD=\"/path/to/aws\" # Example: /usr/local/bin/aws\n\n# Located in the AWS Management Console under IAM Users Security Credentials\nAWS_ACCESS_KEY=\"\"\nAWS_KEY_ID=\"\"\nAWS_DEFAULT_REGION=\"aws-region-0\" # Example: us-east-1\n\nBINARY_GDRIVE_DEST=\"gdrive:archive-backups\" # Must match name of Google Drive destination folder (separate from GDRIVE_DEST)\nBINARY_EXTENSIONS=\"*.{tar,zst,zip,deb,tgz,iso,gz,xz,bz2,lz4,7z,rar,rpm,vdi,vmdk,qcow2,img}\"\n```\n\n### The Exclusion File (`.backupignore`)\nPlace this in the parent directory of the workspace you're backing up to dictate which files should be ignored during the backup process. \nTo ignore specific archive folders, list them in `[BINARIES]` section of the `.backupignore` file and use double asterisks `**` for recursive ignoring.\n\n**Example** `.backupignore` file:\n```text\n# Ignore specific folders/files\ntest_folder/*\nSystem Volume Information/*\nDownloads/isos.tar\naws-cli/*\npython-bin/*\n.Trash-1000/*\n.git/*\n\n# Ignore specific file types\n*.tmp\n*.tar\n*.zst\n*.zip\n*.deb\n*.tgz\n*.iso\n*.gz\n*.xz\n*.bz2\n*.lz4\n*.7z\n*.rar\n*.rpm\n*.vdi\n*.vmdk\n*.qcow2\n*.img\n\n# Ignore specific files\ntest-file-1.txt\ntest-file-2.html\n*~\n\n# [BINARIES]\ntest_folder/**\nSystem Volume Information/**\nDownloads/isos.tar\naws-cli/**\npython-bin/**\n.Trash-1000/**\n.git/**\n# [END BINARIES]\n```\n\n## Usage \u0026 Options\n\n### Backup Standard Files (`restic-backerupper.sh`)\n\n#### How to Use\n1. **Make it Executable**: \n```bash\nchmod +x ./restic-backerupper.sh\n```\n2. **Run the Script**:\n```bash\n./restic-backerupper.sh\n```\n\n### Backup Compressed Archives (`archive-backerupper.sh`)\n\n#### How to Use\n1. **Make it Executable**: \n```bash\nchmod +x ./archive-backerupper.sh\n```\n2. **Run the Script**:\n```bash\n./archive-backerupper.sh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesworldbuilder%2Fbackup-functions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamesworldbuilder%2Fbackup-functions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesworldbuilder%2Fbackup-functions/lists"}