WinSCP 有它的局限性。同步目录很麻烦、经常自己掉线、很难设定同步时忽略的文件… 最关键是不能一键上传。rsync 呢?命令太长。因此做了这个小程序。
Make SFTP syncing “easy-peasy lizard squeezy”.
基本信息
- 语言:Python 3
- 大小:约 10 KB
- 支持的操作系统:所有 Linux 系统,兼容 Windows 的 Linux 子系统。
- 支持的硬件架构:x86,x86_64,arm
- PyPI 包:https://pypi.org/project/theGekko
- GitHub 地址:https://github.com/CYRO4S/Gekko
安装方法
首先,安装 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 配置:
再次使用添加命令,备注名取相同的名字,就可覆盖之前的配置。