{"id":21387183,"url":"https://github.com/sshtools/push-sftp","last_synced_at":"2025-07-13T15:31:46.290Z","repository":{"id":170695737,"uuid":"529181419","full_name":"sshtools/push-sftp","owner":"sshtools","description":"A dedicated SFTP client for increasing throughput performance on high latency WAN/Internet transfers","archived":false,"fork":false,"pushed_at":"2024-05-17T10:44:55.000Z","size":676,"stargazers_count":6,"open_issues_count":5,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-17T11:47:11.287Z","etag":null,"topics":["file-transfers","scp","sftp","sftp-client","ssh"],"latest_commit_sha":null,"homepage":"https://jadaptive.com/push-sftp","language":"Java","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/sshtools.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":"2022-08-26T08:42:55.000Z","updated_at":"2024-05-17T10:44:58.000Z","dependencies_parsed_at":"2023-12-19T18:17:58.287Z","dependency_job_id":"f8070cae-df3c-44a6-a382-af471102a7ef","html_url":"https://github.com/sshtools/push-sftp","commit_stats":null,"previous_names":["sshtools/push-sftp"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshtools%2Fpush-sftp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshtools%2Fpush-sftp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshtools%2Fpush-sftp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sshtools%2Fpush-sftp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sshtools","download_url":"https://codeload.github.com/sshtools/push-sftp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225893447,"owners_count":17540916,"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":["file-transfers","scp","sftp","sftp-client","ssh"],"created_at":"2024-11-22T12:12:03.878Z","updated_at":"2024-11-22T12:12:04.459Z","avatar_url":"https://github.com/sshtools.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Push SFTP\nA dedicated SFTP client for increasing throughput performance on high latency WAN/Internet transfers.\n\nThis repository hosts both the command line interface, and the graphical interface called FileDrop. SSH and SFTP operations are supplied by the [Maverick Synergy Java SSH Library](https://jadaptive.com/en/products/open-source-java-ssh) which includes the \"push\" mechanism itself.\n\n## Installers\n\nEnd-user installers and documentation is available at [jadaptive.com](https://jadaptive.com/push-sftp).\n\n## Development\n\nThe project uses Maven as a build system. You should be able to import the pom.xml into any modern Java IDE. Pull requests are welcomed and encouraged for new features and bug fixes. \n\n### Implementing commands\n\nIf you want to implement a new child command within the interactive command you first need to extend [SftpCommand](https://github.com/sshtools/push-sftp/blob/main/push-sftp/src/main/java/com/sshtools/pushsftp/commands/SftpCommand.java).\n\n```java\nimport picocli.CommandLine.Command;\n\n@Command(name = \"hello\", description = \"Hello world example\")\npublic class Hello extends SftpCommand {\n\n\t@Override\n\tprotected Integer onCall() throws Exception {\n\t\t\n\t\tgetTerminal().getWriter().println(\"Hello world!\");\n\t\treturn 0;\n\t}\n}\n```\n\nThen add the command class to the [PSFTPCommands](https://github.com/sshtools/push-sftp/blob/main/push-sftp/src/main/java/com/sshtools/pushsftp/PSFTPCommands.java) @Command annotation, in the subcommands array.\n\n```java\n@Command(name = \"push-sftp\", mixinStandardHelpOptions = false, \n\t\t\tdescription = \"Interactive shell\", \n\t\t\tsubcommands = { Ls.class, Cd.class, Lcd.class, Pwd.class, Lls.class, \n\t\t\t\t\tLpwd.class, Help.class, Rm.class, Rmdir.class,\n\t\t\t\t\tMkdir.class, Umask.class, Bye.class, Chgrp.class, \n\t\t\t\t\tChown.class, Chmod.class, Push.class, Put.class, Get.class,\n\t\t\t\t\tChildUpdateCommand.class, Info.class, Hello.class\n\t\t\t\t\t})\npublic class PSFTPCommands implements InteractiveSshCommand {\n```\n\nIf you fail to do this the command will not appear in the help and will not be executable within the interactive command shell. \n\nTo use the current SFTP connection [SftpCommand](https://github.com/sshtools/push-sftp/blob/main/push-sftp/src/main/java/com/sshtools/pushsftp/commands/SftpCommand.java) provides a method to return an [SftpClient](https://github.com/sshtools/maverick-synergy/blob/e5862bc41e9dcf8b4f28509ce47e6852c2dd768d/maverick-synergy-client/src/main/java/com/sshtools/client/sftp/SftpClient.java)\n\n```java\nvar sftp = getSftpClient()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsshtools%2Fpush-sftp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsshtools%2Fpush-sftp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsshtools%2Fpush-sftp/lists"}