{"id":13586397,"url":"https://github.com/laktak/rsyncy","last_synced_at":"2025-04-07T12:10:10.966Z","repository":{"id":56256126,"uuid":"312680385","full_name":"laktak/rsyncy","owner":"laktak","description":"A status/progress bar for rsync","archived":false,"fork":false,"pushed_at":"2024-06-11T21:33:50.000Z","size":21518,"stargazers_count":160,"open_issues_count":0,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-03T11:42:13.411Z","etag":null,"topics":["cli","devops","rsync","tui"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/rsyncy","language":"Python","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/laktak.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":"2020-11-13T20:48:43.000Z","updated_at":"2025-04-02T07:03:20.000Z","dependencies_parsed_at":"2024-01-14T23:55:51.220Z","dependency_job_id":"c28c08b9-758f-41f8-bf9e-ebeb90102cde","html_url":"https://github.com/laktak/rsyncy","commit_stats":{"total_commits":15,"total_committers":2,"mean_commits":7.5,"dds":0.06666666666666665,"last_synced_commit":"305e00ad6c8bec8d2492c9fa55b19bd9ad7adbe8"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laktak%2Frsyncy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laktak%2Frsyncy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laktak%2Frsyncy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laktak%2Frsyncy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/laktak","download_url":"https://codeload.github.com/laktak/rsyncy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648977,"owners_count":20972945,"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":["cli","devops","rsync","tui"],"created_at":"2024-08-01T15:05:32.505Z","updated_at":"2025-04-07T12:10:10.946Z","avatar_url":"https://github.com/laktak.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\n# rsyncy\n\nA status/progress bar for [rsync](https://github.com/WayneD/rsync).\n\n![gif of rsyncy -a a/ b](https://raw.githubusercontent.com/laktak/rsyncy/readme/readme/demo-y.gif \"rsyncy -a a/ b\")\n\n\n- [Status Bar](#status-bar)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Known Issues when using ssh behind rsync](#known-issues-when-using-ssh-behind-rsync)\n- [lf support](#lf-support)\n- [Development](#development)\n\n\n## Status Bar\n\n```\n[########################::::::]  80% |      19.17G |      86.65MB/s | 0:03:18 | #306 | scan 46% (2410)\\\n```\n\nThe status bar shows the following information:\n\nDescription | Sample\n--- | ---\nProgress bar with percentage of the total transfer | `[########################::::::]  80%`\nBytes transferred | `19.17G`\nTransfer speed | `86.65MB/s`\nElapsed time since starting rsync | `0:03:18`\nNumber of files transferred | `#306`\nFiles to scan/check\u003cbr\u003e- percentage completed\u003cbr\u003e- (number of files)\u003cbr\u003e- spinner | `scan 46% (2410)\\`\n\nThe spinner indicates that rsync is still checking if files need to be updated. Until this process completes the progress bar may decrease as new files are found.\n\n\n## Installation\n\n- macOS and Linux [Homebrew](https://formulae.brew.sh/formula/rsyncy): `brew install rsyncy`\n- Download for [Linux or macOS](https://github.com/laktak/rsyncy/releases).\n- Get it with [pipx](https://pipx.pypa.io/latest/installation/): `pipx install rsyncy`\n\n\n## Usage\n\n`rsyncy` is a wrapper around `rsync`.\n\n- You run `rsyncy` with the same arguments as it will pass them to `rsync` internally.\n- Do not specify any `--info` arguments, rsyncy will automatically add `--info=progress2` and `-hv` internally.\n\n```\n# simple example\n$ rsyncy -a FROM/ TO\n```\n\nAlternatively you can pipe the output from rsync to rsyncy (in which case you need to specify `--info=progress2 -hv` yourself).\n\n```\n$ rsync -a --info=progress2 -hv FROM/ TO | rsyncy\n```\n\nAt the moment `rsyncy` itself has only one option, you can turn off colors via the `NO_COLOR=1` environment variable.\n\n\n## Known Issue when using ssh behind rsync\n\nssh uses direct TTY access to make sure that the input is indeed issued by an interactive keyboard user (for host keys and passwords). That means that rsyncy does not know that ssh is waiting for input and will draw the status bar over it. You can still enter your password and press enter to continue.\n\nWorkaround: connect once to your server via ssh to add it to the known_hosts file.\n\n\n## lf support\n\n`rsyncy-stat` can be used to view only the status output on [lf](https://github.com/gokcehan/lf) (or similar terminal file managers).\n\nExample:\n\n```\ncmd paste-rsync %{{\n    opt=\"$@\"\n    set -- $(cat ~/.local/share/lf/files)\n    mode=\"$1\"; shift\n    case \"$mode\" in\n        copy) rsyncy-stat -rltphv $opt \"$@\" . ;;\n        move) mv -- \"$@\" .; lf -remote \"send clear\" ;;\n    esac\n}}\n```\n\nThis shows the copy progress in the `\u003e` line while rsync is running.\n\nIf you have downloaded the binary version you can create it with `ln -s rsyncy rsyncy-stat`.\n\n\n## Development\n\nFirst record an rsync transfer with [pipevcr](https://github.com/laktak/pipevcr), then replay it to rsyncy when debugging.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaktak%2Frsyncy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaktak%2Frsyncy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaktak%2Frsyncy/lists"}