WinSCP 有它的局限性。同步目录很麻烦、经常自己掉线、很难设定同步时忽略的文件… 最关键是不能一键上传。rsync 呢?命令太长。因此做了这个小程序。

Make SFTP syncing “easy-peasy lizard squeezy”.


Star

基本信息

安装方法

首先,安装 Python 3:

apt-get update && apt-get -y install python3 python3-pip

最后,安装 Gekko

pip3 install thegekko

启用 Tab 键补全功能

添加下面的内容到 ~/.bashrc 文件中:

_gekko() {
    local cur prev nodes
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    nodes=$(if [ -f ~/.gekko ]; then cat ~/.gekko | grep -o "remark: [a-z]*[0-9]*" | awk '{print $2}'; else echo ""; fi)

    case $prev in
        remove|rm)
            COMPREPLY=( $(compgen -W "${nodes}" -- ${cur}) )
            return;;
        run|rn)
            COMPREPLY=( $(compgen -W "${nodes}" -- ${cur}) )
            return;;
        sense|ss)
            COMPREPLY=( $(compgen -W "${nodes}" -- ${cur}) )
            return;;
        gekko)
            COMPREPLY=( $(compgen -W "camo camouflage grip list remove run sense" -- ${cur}) )
            return;;
    esac
}

complete -o default -F _gekko gekko

随后

source ~/.bashrc

快速开始

添加忽略上传的文件及文件夹(可选)

先切换到待上传的文件夹里,然后执行

gekko camo <路径>

gekko camouflage <路径>

路径可以是一个文件夹,或文件。请直接使用相对路径,例如:

gekko camo ign.txt
gekko camo venv/
gekko camo test/ign/

完成后,Gekko 会在当前文件夹内生成 “.gekkoign” 文件,记录了你要忽略上传的内容。

添加 SFTP 配置

接着上步,执行:

gekko grip 用户名@主机名:要上传到的远程目录 -s 备注 -p SSH端口

就可以添加一个 SFTP 配置,例如:

gekko grip root@100.101.102.103:/root/gekko -s MyServer -p 22

若要使用SSH私钥来代替密码认证,请在命令后加上 “-k 私钥文件绝对路径”,例如:

gekko grip root@100.101.102.103:/root/gekko -s MyServer -p 22 -k /root/rsa.key

注意:

  • 主机名可以是 IP 地址,也可以是域名
  • 添加的SFTP配置将会存放于 家目录下的 “.gekko” 文件中。即 “~/.gekko

查看远程文件的更改情况(可选)

接着上步骤,直接执行:

gekko sense 备注 -p SSH连接密码

如:

gekko sense MyServer -p P@ssw0rd

如果不想在打命令时直接输入密码,可以省略 “-p SSH连接密码” 这一部分,稍后连线时会询问。

这里会列出所有的改动情况。要被覆盖的文件前,会以 “*” 标出,待上传的文件前,会以 “+” 标出,下面是个输出示例:

Connecting to myserver.com:22... Connected.
Checking for /root/gekko_upload... Exist.
Changes will be taken:

* /root/gekko_upload/app.py
+ /root/gekko_upload/assets/logo.png

Disconnecting... Done.

开始上传

接着上步骤,直接执行:

gekko run 备注 -p SSH连接密码

如:

gekko run MyServer -p P@ssw0rd

如果不想在打命令时直接输入密码,可以省略 “-p SSH连接密码” 这一部分,稍后连线时会询问。

剩下就交给 Gekko 吧,全部自动。

高级选项

显示全部的 SFTP 连接信息:

gekko list

移除 SFTP 配置:

gekko remove 备注

更改 SFTP 配置:

再次使用添加命令,备注名取相同的名字,就可覆盖之前的配置。

 

留下评论

电子邮件地址不会被公开。 必填项已用*标注