Skip to content

Sunraiseevery/go-sshWithScript

Repository files navigation

Go-SSH 文件传输工具

本项目是一个基于SSH协议的高效文件传输工具,支持在多台服务器之间直接传输文件/目录,具有以下特性:

核心功能

  • 文件/目录传输:支持本地与远程、远程与远程之间的文件/目录传输
  • 进度显示:实时显示传输进度、速度和剩余时间
  • 压缩传输:支持目录压缩传输,提高大文件传输效率
  • 直接传输模式:支持服务器间直接传输,无需本地中转
  • 多服务器并行传输:支持同时向多个目标服务器传输文件

使用说明

基本传输命令

sync <文件路径> [--to <目标主机名>|--all] [--direct] [--compress]

参数说明

  • --to:指定目标主机名
  • --all:向所有已连接主机传输
  • --direct:启用服务器间直接传输模式
  • --compress:启用压缩传输模式(仅对目录有效)

示例

  1. 向特定主机传输文件:
sync /path/to/file --to host1
  1. 向所有主机传输目录(使用压缩):
sync /path/to/dir --all --compress
  1. 服务器间直接传输:
sync /remote/path --to host2 --direct

技术实现

  • 使用Go语言开发,跨平台支持
  • 基于golang.org/x/crypto/ssh实现SSH连接
  • 使用SFTP协议进行文件传输
  • 多协程并发处理提高传输效率

注意事项

  • 确保所有服务器已配置SSH免密登录
  • 直接传输模式需要服务器间网络互通
  • 压缩传输会消耗额外CPU资源

未来计划

  • 支持更多传输协议(HTTP/HTTPS/FTP)
  • 增加传输加密功能
  • 优化进度显示界面
  • 支持多服务器并行传输
  • 支持断点续传

使用说明

  1. 配置服务器连接信息

    • 编辑config.yaml文件,添加服务器信息
    • 示例配置:
      servers:
        - host: 192.168.1.100
          port: 22
          user: root
          password: "your_password"
  2. 执行传输命令

    • 完整命令语法:
      ./go-ssh sync [选项] <源路径> <目标路径>
      
    • 常用选项:
      • -c: 启用压缩传输
      • -t: 设置超时时间(秒)
      • -r: 递归传输目录
      • -p: 显示进度条
    • 示例命令:
      ./go-ssh sync -c -p /local/path user@host:/remote/path
      
  3. 查看传输进度和结果

    • 进度条会实时显示传输百分比和速度
    • 传输完成后会显示总结信息
    • 错误信息会记录在log/transfer.log中

示例代码

// 创建SSH客户端连接
client, err := ssh.Dial("tcp", "host:22", &ssh.ClientConfig{
    User: "username",
    Auth: []ssh.AuthMethod{
        ssh.Password("password"),
    },
})

// 传输文件
TransferFileToServer(client, "/local/path", "/remote/path", "username", "host")

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors