{"id":21022435,"url":"https://github.com/d2r2/go-rsync","last_synced_at":"2025-08-21T11:17:03.860Z","repository":{"id":75776877,"uuid":"162860568","full_name":"d2r2/go-rsync","owner":"d2r2","description":"Best GTK+ frontend (backup application) for RSYNC utility.","archived":false,"fork":false,"pushed_at":"2021-10-22T03:01:39.000Z","size":2570,"stargazers_count":124,"open_issues_count":4,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-14T18:34:27.306Z","etag":null,"topics":["backup-application","backup-tool","desktop-app","golang","gotk3","gtk","gtk3","rsync","rsync-backup","rsync-utility","rsync-wrapper"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d2r2.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-23T03:54:59.000Z","updated_at":"2025-07-21T17:20:13.000Z","dependencies_parsed_at":"2024-06-20T10:36:42.316Z","dependency_job_id":null,"html_url":"https://github.com/d2r2/go-rsync","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/d2r2/go-rsync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d2r2%2Fgo-rsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d2r2%2Fgo-rsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d2r2%2Fgo-rsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d2r2%2Fgo-rsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d2r2","download_url":"https://codeload.github.com/d2r2/go-rsync/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d2r2%2Fgo-rsync/sbom","scorecard":{"id":315641,"data":{"date":"2025-08-11","repo":{"name":"github.com/d2r2/go-rsync","commit":"23e692101acc00f6e7ce302c588ebc8eac271a2a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/9 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":10,"reason":"all dependencies are pinned","details":["Info:   1 out of   1 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.4.1 not signed: https://api.github.com/repos/d2r2/go-rsync/releases/31335120","Warn: release artifact v0.4.0 not signed: https://api.github.com/repos/d2r2/go-rsync/releases/31207742","Warn: release artifact v0.3.3 not signed: https://api.github.com/repos/d2r2/go-rsync/releases/21715585","Warn: release artifact v0.3.2 not signed: https://api.github.com/repos/d2r2/go-rsync/releases/17270028","Warn: release artifact v0.3.1 not signed: https://api.github.com/repos/d2r2/go-rsync/releases/14675557","Warn: release artifact v0.4.1 does not have provenance: https://api.github.com/repos/d2r2/go-rsync/releases/31335120","Warn: release artifact v0.4.0 does not have provenance: https://api.github.com/repos/d2r2/go-rsync/releases/31207742","Warn: release artifact v0.3.3 does not have provenance: https://api.github.com/repos/d2r2/go-rsync/releases/21715585","Warn: release artifact v0.3.2 does not have provenance: https://api.github.com/repos/d2r2/go-rsync/releases/17270028","Warn: release artifact v0.3.1 does not have provenance: https://api.github.com/repos/d2r2/go-rsync/releases/14675557"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'bug/fix-app-reload-crash'","Warn: branch protection not enabled for branch 'feat/release-v0.4.0'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T00:07:48.604Z","repository_id":75776877,"created_at":"2025-08-18T00:07:48.604Z","updated_at":"2025-08-18T00:07:48.604Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271469227,"owners_count":24765124,"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","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"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":["backup-application","backup-tool","desktop-app","golang","gotk3","gtk","gtk3","rsync","rsync-backup","rsync-utility","rsync-wrapper"],"created_at":"2024-11-19T11:11:58.265Z","updated_at":"2025-08-21T11:17:03.841Z","avatar_url":"https://github.com/d2r2.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"Gorsync Backup: GTK+ RSYNC frontend\n===================================\n\n[![Build Status](https://travis-ci.org/d2r2/go-rsync.svg?branch=master)](https://travis-ci.org/d2r2/go-rsync)\n[![Go Report Card](https://goreportcard.com/badge/github.com/d2r2/go-rsync)](https://goreportcard.com/report/github.com/d2r2/go-rsync)\n[![GoDoc](https://godoc.org/github.com/d2r2/go-rsync?status.svg)](https://godoc.org/github.com/d2r2/go-rsync)\n[![Release](https://img.shields.io/github/v/release/d2r2/go-rsync.svg)](https://github.com/d2r2/go-rsync/releases/latest)\n[![Last Commit](https://img.shields.io/github/last-commit/d2r2/go-rsync.svg)](https://github.com/d2r2/go-rsync/commit)\n[![GPLv3 License](https://img.shields.io/badge/License-GPLv3-yellow.svg)](./LICENSE)\n\nANNOUNCEMENT: Translation to local languages wanted!!! Please read [collaboration and contribution](#collaboration-and-contribution).\n----------\n\nAbout\n-----\n\nGorsync Backup is a GTK+ frontend for brilliant [RSYNC](https://download.samba.org/pub/rsync/rsync.html) console utility.  Written completely in [Go programming language](https://golang.org/), provides responsive GUI design and intuitive interface.\n\nGorsync Backup is not an all-purpose RSYNC wrapper. It was created to keep in mind how to do regular backup of your personal data from home NAS (either small business file server with RSYNC service enabled) with minimal effort. Gorsync Backup doesn't implement user interface for any possible RSYNC option and case, but use all the best from powerful RSYNC utility to perform regular data backup easily and quickly.\n\nIf you do not want to pay monthly fee for cloud space to backup your personal data to the cloud, but instead prefer to buy inexpensive mass-market 1-4 TB portable external hard drive (and your data fits there), then your average backup scheme will looks like: attach USB hard drive to workstation/notebook with desktop Linux OS, start Gorsync Backup application, choose backup profile (once configured), run the backup process and you can go and enjoy your coffee cup.\n\nThe application will do the rest: estimate size of data to backup, display extensive progress information and once it done report about completion. If this is not your first backup, then application will significantly speed up backup process, because it keeps previous backup history in destination location and has \"deduplication\" capabilities, which allows the application do not copy over the network data that was backed up in previous sessions (withal it saves a lot of space): in my experience repeated backup of whole photography archive which exceed 650 GB from my home NAS with new pictures from last few months, takes 15 minutes.\n\n\nFeatures and benefits\n----------------------\n\n* Multiple backup profiles supported. Moreover, each profile can be configured to get data from multiple RSYNC sources/modules. Password protected RSYNC modules supported.\n* 2-pass backup session approach to estimated backup volume in 1st pass. Display predicted time of completion in 2nd pass.\n* Demonstrate \"deduplication\" on modern file systems, once previous backup sessions found (and significant time reduction in repeated backup processes). Works if backup destination is ext3/ext4/NTFS (employ file system hardlink feature).\n* [Improved GOTK3+](https://github.com/d2r2/gotk3) library (GTK+ golang bindings) used for GUI.\n\n\n\nScreenshots\n-----------\nMain form:\n\n![image](https://raw.github.com/d2r2/go-rsync/master/docs/gorsync_main_form.png)\n\nPreferences:\n\n![image](https://raw.github.com/d2r2/go-rsync/master/docs/gorsync_preference_dialog.png)\n\n\n\nInstallation approaches\n-----------------------\n\n#### Build and run from sources.\n\nCompilation from source successfully tested with Linux and FreeBSD systems.\n\nSteps to build and run:\n\n* Verify that GLIB2, GTK3, libnotify libraries, RSYNC console utility, go/gcc/clang compilers and other development tools are present in the system.\n* Download Gorsync Backup sources (with all dependent golang libraries):\n```bash\n$ go get -u github.com/d2r2/go-rsync\n```\n* Compile and deploy application GLIB gsettings schema, with console prompt:\n```bash\n$ cd ./ui/gtkui/\n$ sudo ./gs_schema_install.sh\n```\n* Finally, run app from terminal:\n```bash\n$ ./gorsync_run.sh --buildtype Release|Development\n```\n, either compile application binary:\n```bash\n$ ./gorsync_build.sh --buildtype Release|Development\n```\n, where the main difference in Release/Development options is that `Release` will embed external resources (translation files, icons and the like) to the binary, but `Development` will not.\n\n\n#### Precompiled linux packages (deb, rpm and others) from releases.\n\nAlternative approach to install application is to downloads installation packages from latest release, which can be found in [release page](https://github.com/d2r2/go-rsync/releases). You may find there packages for deb (Debian, Ubuntu), rpm (Fedora, Centos, Redhat) and pkg.tar.xz (Arch linux) Linux distributives. Archive build file also available with `make` compile option.\n\n\n#### Archlinux AUR repository.\n\nOne can be found in AUR repository https://aur.archlinux.org/ by name \"gorsync-git\" to download, compile and install latest release. On Archlinux you can use any AUR helper to install application, for instance `yay -S gorsync-git`.\n\n\n\nReleases information\n--------------------\n\n#### [v0.4.1](https://github.com/d2r2/go-rsync/releases/tag/v0.4.1) (latest release):\n\n* It is a mostly the release 0.4.0 postfix.\n* Fix application reload code bug, which produce app panic exit time to time.\n* Some minor updates in code and translation.\n\n#### [v0.4.0](https://github.com/d2r2/go-rsync/releases/tag/v0.4.0):\n\n* Minimal Makefile configuration to support [make](https://www.gnu.org/software/make/) build approach.\n* Generate archive build file to bind to release assets, with 3rd party source dependencies injected to the `vendor` section of the project via [govendor](https://github.com/kardianos/govendor) tool. Since approach to use [govendor](https://github.com/kardianos/govendor) app is now considered obsolete, it will be replaced with Go modules ([go mod vendor](https://golang.org/ref/mod#go-mod-vendor)) in next releases.\n* Get application version during compilation process from last GIT tag/release, rather than assigning the hardcoded one.\n* Add .vscode folder to support development in Visual Studio Code as preferred IDE over Sublime Text. Configure launch.json settings to interactively run and debug application in VS Code. Additionally, configure tasks.json to run packaging scripts directly from the IDE.\n* Small UI improvements.\n* Adaptation to latest GLIB 2.64.\n* Updated documentation and help.\n* Bugs fixed.\n\n\n#### [v0.3.3](https://github.com/d2r2/go-rsync/releases/tag/v0.3.3):\n\n* RSYNC transfer options override implemented in profile settings.\n* Lot of UI improvements.\n* Replace UI animation implemented via imperative programming, with GTK+ CSS declarative application styling.\n* Both Linux and FreeBSD supported.\n* Adaptation to latest GLIB 2.62, GTK+ 3.24.\n* Updated documentation and help.\n* Bugs fixed.\n\n\n#### [v0.3.2](https://github.com/d2r2/go-rsync/releases/tag/v0.3.2):\n\n* Password protected RSYNC module supported.\n* Option to change files permission during RSYNC backup process.\n* First attempt to create project site: [https://gorsync.github.io/](https://gorsync.github.io/) on the base of superior [Beautiful Jekyll](https://deanattali.com/beautiful-jekyll/) template.\n* Adaptation to latest GLIB 2.60, GTK+ 3.24.\n* Updated documentation and help.\n* Bugs fixed.\n\n\n#### [v0.3.1](https://github.com/d2r2/go-rsync/releases/tag/v0.3.1):\n\n* Internationalization implemented. Localization provided for English, Russian languages.\n* Backup result's notifications: desktop notification and shell script for any kind of automation.\n* Out of disk space protection for backup destination.\n* A lot of improvements in algorithms and GUI.\n* Significant code refactoring and rewrites.\n\n\n\nGorsync Backup backup process explanation\n-----------------------------------------\n\nAs in regular [RSYNC](https://ss64.com/bash/rsync_options.html) session, Gorsync Backup is doing same job: copy files from one location (data source) to another (backup destination).\n\nGorsync Backup might be configured to copy from multiple RSYNC sources. It could be your pictures, movies, document's from home NAS, routers and smart Linux device configuration files (/etc/... folder) and so on... Thus Gorsync Backup profile let you specify multiple separated RSYNC URL sources to get data from in single backup session and combine them all together in one destination place.\n\nGorsync Backup never overwrite previous backup session data, but use same common target root path, to put data near by in new folder. For instance, your flash drive backup folder content might looks like:\n```\n\u003cdestination root folder to stores backup content\u003e\n             ↳ ~rsync_backup_20180801-012237~\n             ↳ ~rsync_backup_20180802-013113~\n             ↳ ~rsync_backup_\u003cdate\u003e-\u003ctime\u003e~\n...\n             ↳ ~rsync_backup_20180806-014036~\n             ↳ ~rsync_backup_(incomplete)_20180807-014024~\n```\n, where each specific backup session stored in separate unique folder with date and time in the name. \"(incomplete)\" phrase stands for backup, that occurs at the moment. When backup is completed, \"(incomplete)\" will be removed from backup folder name. Another scenario is possible, when backup process has been interrupted for some reason: in this case \"(incomplete)\" phrase will never get out from folder name. But, in any case it's easy to understand where you have consistent backup results, and where not.\n\nIn its turn, each backup folder has next regular structure:\n```\n\u003cdestination root folder to stores backup content\u003e\n             ↳ ~rsync_backup_20180801-012237~\n                       ↳ ~backup_log~.log\n                       ↳ ~backup_nodes~.signatures\n                       ↳ \u003cfolder with rsync source #1 content\u003e\n...\n                       ↳ \u003cfolder with rsync source #N content\u003e\n```\n, where `~backup_log~.log` file describe all the details about the steps occurred, including info/warning/error messages if any took place. `~backup_nodes~.signatures` file contains hash imprint for all source URLs, to detect in future backup sessions same data sets for \"deduplication\" activation (so, never delete this file from backup history, otherwise \"deduplication\" will not work for future backup sessions).\n\nGorsync Backup gives extra flexibility in copying data: you can configure application to skip copying some data from single RSYNC source. For this, you should place empty file in the folder with specific name `!!!__SKIPBACKUP__!!!` (name can be configured in preference), which instruct application do not copy specific folder content (including subfolders).\n\nGorsync Backup is splitting backup process to the peaces. The application in every backup session is trying to find optimal data block size to backup at once. To reach this application download folders structure in 1st pass to analyze how to divide the whole process into parts. Ordinary single data block size selected to be not less than 300 MB and not exceed 5 GB.\n\n\n\nRegular backup and \"deduplication\" capabilities\n-----------------------------------------------\nOnce you start using Gorsync Backup on regular basis (monthly/weekly/daily), you will find soon that your backup storage will be filled with set of almost same files (of course changes over time will provides some relatively small deviation between data sets). This redundancy might quickly exhaust your free space, but there is a real magic exists in modern file systems - \"hard links\"! Hard links allow the application not to spend space for the files, which have been found in previous backup sessions unchanged. Additionally it's significantly speed up backup process. The collaboration of Gorsync Backup application with RSYNC utility know how to activate this feature. Still you have possibility to opt out this feature in application preferences, but in general scenario you don't need to do this.\n\nBe aware, that such legacy file systems as FAT, does not support \"hard links\", but successors, such as NTFS, ext3, ext4 and others have \"hard links\" supported (via low level file system \"inode\" concept). Hence no deduplication is possible for FAT. So, think in advance which file system to choose for your backup destination.\n\n\u003e*Note*: Gorsync Backup and RSYNC on its own have some limitations with \"deduplication\" functionality - they can't track file renames and relocations inside backup directory tree to save space and time in the following backup sessions. This is not a problem of the application itself, it's RSYNC utility limitation. There is some experimental patches exist to get rid of this limitation, but not in the official RSYNC releases, which the application fully relies on: you can read [this](https://lincolnloop.com/blog/detecting-file-moves-renames-rsync/) and [this](https://javier.io/blog/en/2014/08/06/rsync-rename-move.html).\n\n\u003e*Note*: Remember, that changing RSYNC transfer settings between backup sessions may affect deduplication behavior for same backup data set. For instance, just enabled \"transfer file permissions\" might eliminate deduplication, even when backup data from previous backup sessions are present (but was made with disabled \"transfer file permissions\" option). Using NTFS file system in destination and having \"transfer file permissions\" option enabled, may cause that deduplication will not work in some cases.\n\n\n\nCollaboration and contribution\n------------------------------\n\nUser interface translation and localization required. Any help is appreciated to translate application to local languages (so far only English and Russian are supported). Use `./data/assets/translate.en.toml` file as an English language source for new language translation. You should modify each section/paragraph value in the file written in [TOML](https://en.wikipedia.org/wiki/TOML) format, for instance:\n```toml\n[AboutDlgDoNotShowCaption]\nother = \"Do not show this information at application startup\"\n\n[PrefDlgProfileNameExistsWarning]\nother = \"Profile with name \\\"{{.ProfileName}}\\\" already exists. Please, correct the name\"\n```\n, to get in the end translated version (do not translate identifiers in double brackets {{...}}). Finally, change \"en\" suffix in the file name to corresponding language code, and propose translation via github project pull request, either mail file directly to denis.dyakov@gmail.com. If you still have any question, please, let me know.\n\n\n\nContact\n-------\n\nPlease use [Github issue tracker](https://github.com/d2r2/go-rsync/issues) for filing bugs or feature requests.\n\n\n\nLicense\n-------\n\nThis software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.\n\nGorsync Backup is licensed under [GNU GENERAL PUBLIC LICENSE version 3](https://raw.github.com/d2r2/go-rsync/master/LICENSE) by Free Software Foundation, Inc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd2r2%2Fgo-rsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd2r2%2Fgo-rsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd2r2%2Fgo-rsync/lists"}