{"id":16161959,"url":"https://github.com/jessedp/rclone-wrapper","last_synced_at":"2026-04-27T22:31:18.870Z","repository":{"id":101652055,"uuid":"139939055","full_name":"jessedp/rclone-wrapper","owner":"jessedp","description":"a semi-involved bash wrapper to use rclone for remote backups","archived":false,"fork":false,"pushed_at":"2026-01-28T01:01:12.000Z","size":36,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-28T04:51:13.135Z","etag":null,"topics":["backup","backup-script","bash","bash-script","rclone"],"latest_commit_sha":null,"homepage":null,"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/jessedp.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":"2018-07-06T05:51:25.000Z","updated_at":"2026-01-28T01:01:15.000Z","dependencies_parsed_at":"2023-06-07T14:00:21.428Z","dependency_job_id":null,"html_url":"https://github.com/jessedp/rclone-wrapper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jessedp/rclone-wrapper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessedp%2Frclone-wrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessedp%2Frclone-wrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessedp%2Frclone-wrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessedp%2Frclone-wrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jessedp","download_url":"https://codeload.github.com/jessedp/rclone-wrapper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessedp%2Frclone-wrapper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32358509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["backup","backup-script","bash","bash-script","rclone"],"created_at":"2024-10-10T02:28:28.043Z","updated_at":"2026-04-27T22:31:18.844Z","avatar_url":"https://github.com/jessedp.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"## rclone bash wrapper ##\n\nThis started as a simple bash script to make defining various sources/destinations and running with the various arguments I wanted quicker and easier across multiple machines, especially laptops.\n\nIt's quite opinionated, but could give someone a structure to (mis)use for their own rclone wrapper or whatever.\n\n### requirements ###\n- rclone v1.42+ [here](https://rclone.org/downloads/)\n    + install from there, your package manager probably doesn't have the newer version (ubuntu 18 doesn't) and some of the arguments use require this.\n\n#### optional ####\n`curl` (you probably already have it) and a [MailGun](https://www.mailgun.com/) account to send failure notifications. \n\n### features ###\n- easy and separated src/dest configuration files. You could easily just make one(s) to suit your needs and be done.\n- built-in semi-validation of the config files (not for filters)\n- laptop frienldy\n    + network connectivity check so it won't try to run when it can't reach the outide world\n    + configurable \"only run once per X hours\" - let's you schedule the script to run often (cron) without it constantly trying to run backups\n- logging\n    + logs the full script and rclone output to both stdout and a file per run\n    + configurable number of log files to keep around (eg, defaults to last 20)\n- can mail the run's complete log file if errors occur\n- pretty decent code separation so it's easier to naviagate/modify\n\n### limitations ###\n- again, opinionated.\n- currently only uses rclone's `sync`\n- loads of other rclone arguments are not used, may require a bunch of changes if you have crazy requirements\n    + then again, with the code separated as it is, wouldn't be too hard to pop new function/vars\n- if anyone ever creates a pull request, it will probably be to add to this list\n\n### installation ###\n- download the zip file from above and extract it to its own directory. The scripts are competely self-contained there with regards to writing any files\n- configure it (as below)\n\n### running ###\n0. do the configuration stuff below\n1. exec the rclone_backup.sh - `./rclone_backup.sh` or `sh rclone_backup.sh`\n2. set it up as a cron job if you'd like (it will figure out its own root path)\n\n### configuring ###\n\n1. [Configure](https://rclone.org/docs/) at least 1 storage system using `rclone config`\n2. Edit your \"bucket\" (source/destination) **config** and **filter** files in the `config/` directory. See below for an example.\n3. Peruse the `inc/defaults.sh` file and make any changes you feel necessary.\n    -   hopefully the MAILGUN_* params are self-explanatory\n\n#### config files ####\nEach \"set\" or \"bucket\" (my terms) consists of a **config** and a **filter**. Again, both of these must live in the `config/` directory. When the backup script runs, it will process **all** `.sh` files there.\n\nA **config** file will look like this and contain _all_ of the vars you see here:\n```sh\nFILTER_FILE=\"home_dirs.txt\"\nSOURCE_PATH=/home/$USER_NAME\nDESTINATION_PATH=\"s3:mydomain.com/backups/${COMPUTER_NAME}/${USER_NAME}\"\nARCHIVE_DESTINATION_PATH=\"s3:mydomain.com/backups/${COMPUTER_NAME}/${USER_NAME}_archive\"\n```\n- **FILTER_FILE** - the file containing rules rclone will use via its _--filter-from_ arg. See below.\n- **SOURCE_PATH** - the root path rules will be applied to (no trailing /)\n- **DESTINATION_PATH** and **ARCHIVE_DESTINATION_PATH** - these will vary based on the [storage system(s) configured](https://rclone.org/docs/) and used. Note that they must be in the same storage bucket\n    - **ARCHIVE_DESTINATION_PATH** is currently not used, but needs to be set\n\nA **filter** file\n```\n# get the excludes out in front to prevent rclone from finding things we really don't want (like Trash in .local)\n- backup/*.log\n- .local/*\n- .local/**\n\n# normal folders\n+ backup/*\n+ Documents/*\n+ Photos/*\n+ Pictures/*\n\n# dot dirs\n+ .config/*\n+ .gnupg/**\n+ .ssh/*\n+ .vim/*\n\n# dot files\n+ .bashrc\n+ .gitconfig\n+ .profile\n+ .vimrc\n\n# individual home files\n+ setup_notes.txt\n+ gpg.pubkey_armor\n\n# and nothing else\n- *\n- **\n```\n\nNothing specific to this script setup, just built based on:\n- [generic filter details](https://rclone.org/filtering/)\n- [specific to filter-file](https://rclone.org/filtering/#how-the-rules-are-used)\n- pay particular attention to the leading **+ / -** for each line\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjessedp%2Frclone-wrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjessedp%2Frclone-wrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjessedp%2Frclone-wrapper/lists"}