{"id":49243686,"url":"https://github.com/nodeluna/lunas","last_synced_at":"2026-04-24T20:39:46.536Z","repository":{"id":254429024,"uuid":"846365350","full_name":"nodeluna/lunas","owner":"nodeluna","description":"A syncing cli tool that can handle more than two directories locally and remotely","archived":false,"fork":false,"pushed_at":"2026-04-05T16:28:46.000Z","size":449,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-05T18:20:57.418Z","etag":null,"topics":["libssh","lunas","remote-syncing","ssh","syncing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nodeluna.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"nodeluna"}},"created_at":"2024-08-23T03:53:58.000Z","updated_at":"2026-04-05T16:37:54.000Z","dependencies_parsed_at":"2024-10-24T16:36:43.520Z","dependency_job_id":"92f93632-b822-4ea8-8c1a-4a008d541d38","html_url":"https://github.com/nodeluna/lunas","commit_stats":null,"previous_names":["nodeluna/lunas"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nodeluna/lunas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodeluna%2Flunas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodeluna%2Flunas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodeluna%2Flunas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodeluna%2Flunas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nodeluna","download_url":"https://codeload.github.com/nodeluna/lunas/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodeluna%2Flunas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32240586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: 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":["libssh","lunas","remote-syncing","ssh","syncing"],"created_at":"2026-04-24T20:39:45.815Z","updated_at":"2026-04-24T20:39:46.521Z","avatar_url":"https://github.com/nodeluna.png","language":"C++","readme":"## lunas\n\nA syncing cli tool that can handle more than two directories locally and remotely\n\n## features\n\n* multi-directory syncing\n* async I/O in local and remote syncing for faster transfer\n* capable of syncing between multiples of local to local, remote to local, local to remote, and remote to remote directories.\n* can sync two-ways between directories (from A to B and from B to A), unless source and destination options are used.\n* sync files that do not already exist in destination directories or/and to overwrite older or newer files, --update or --rollback can be used\n* for convenient syncing of recurring operations, lunas has a simple-to-use config file where presets can be defined\n* sync file attributes\n* reliable --resume for interrupted transfers with mtime check mechanism to avoid resuming with src/dest mismatch. check the man page\n* scriptable capability by allowing you to only sync certain files with --allow path --allow-pattern pattern --exclude path --exclude-pattern pattern\n* and more, check the man page to know about them\n\n## usage\n\n* lunas -p dir1 -p dir2 -r user@ip:dir3     # -p, -r are for two-ways syncing \"-p\" for local dirs, \"-r\" for remote dirs\n* lunas -s dir1 -rd user@ip:dir2            # -s local source, -rs remote src, -d local dest, -rd remote dest\n* lunas -s dir1 -rd user@ip:dir2 -u         # -u/--update overwrite older files with newer ones based on their mtime\n* lunas -s dir1 -rd user@ip:dir2 -rb        # -rb/--rollback overwrite newer files with older ones based on their mtime\n* lunas -c preset                           # -c/--config preset with predefined options to be synced. check the man page 'CONFIG FILE' section\n* read the man page and/or --help statement for more options\n\n## file conflicts\n\n* by default, lunas only syncs files that do not already exist in destination directories, to overwrite older or newer files, --update or --rollback can be used.\n* if files with same relative path were found in different input dirs but with different file types, an error is printed and it won't be synced\n\n## dependencies\n\n* (clang \u003e= 17) OR (clang \u003e= 18.1.2 and libc++) for faster compliation\n\n* lunas need libssh \u003e= 0.11.* to build and run. the package may be named libssh, libssh-dev or libssh-devel on your distro\n\n## build dependencies\n\n* makefile\n* ninja\n* cmake\n* git\n\n## build\n\n* make\n\nor\n\n* git submodule update --init --recursive\n* cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_CXX_COMPILER=clang++\n* ninja -C build\n\n## install\n\n* \\# make install\n\nor\n\n* \\# ninja -C build install\n## remote syncing\n\nthanks to libssh, lunas can sync remote directories with local or/and remote ones using sftp. Read the --help statement\n\n## author\n\nnodeluna - nodeluna@proton.me\n\n## license\n    This program is free software: you can redistribute it and/or modify it under the terms of\n    the GNU General Public License as published by the Free Software Foundation version 3 of\n    the License, or (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;\n    without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n    See the GNU General Public License for more details.\n\n","funding_links":["https://ko-fi.com/nodeluna"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodeluna%2Flunas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodeluna%2Flunas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodeluna%2Flunas/lists"}