用于将本地目录树克隆/同步到SFTP服务器的工具。

sftpclone的Python项目详细描述


sftpclone

pypi versionpypi python versionpypi license

用于将本地目录树克隆/同步到SFTP服务器的工具。

功能

  • 使本地目录树与SFTP服务器的指定文件夹保持同步。
  • 根据需要更新符号链接并保持文件的一致性
  • SFTP服务器上的自动平铺扩展/处理。
  • 公钥身份验证。
  • ssh配置条目兼容性。
  • 同步排除模式。
  • 与Python2和Python3兼容。

安装

您可以使用pip:

$ pip install sftpclone --user

注意:有时在用户模式下构建所需的依赖项不起作用。在这种情况下,您需要使用sudo并删除--user标志。 或者,您可以使用virtualenv。

或者,您可以克隆此存储库,然后启动:

$ git clone https://github.com/unbit/sftpclone
$ cd sftpclone
$ python setup.py install

在这两种情况下,您都可以在路径中找到sftpclone脚本。

用法

usage: sftpclone [-h] [-k private-key-path]
                 [-l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}] [-p PORT]
                 [-f] [-a] [-c ssh config path] [-n known_hosts path] [-d]
                 [-e exclude-from-file-path] [-t] [-o]
                 local-path user[:password]@hostname:remote-path

其中,对于每个命令行参数:

  • 本地路径:本地文件夹的路径。此路径必须存在,并且可以包含~(我们使用颚化符扩展)。
  • sftp url:它指定具有以下格式的远程sftp url:[用户[:密码]@]主机名:远程路径。密码和用户字段都可以省略。如果省略前者,则应指定私钥标识文件。如果省略后者,则自动使用当前用户。主机名可以引用ssh_config文件的一个元素。如果远程路径包含~,则它将扩展到用户开始SFTP会话的默认文件夹。
  • [h]elp:显示帮助消息并退出。
  • 私有-[k]密钥路径:指向您的私有标识文件的路径。如果不使用密码身份验证,请进行设置。它自动默认为~/.ssh/id_rsa并且可以多次使用。
  • [l]ogging:设置日志级别(默认为错误)。
  • [p]ort:ssh远程端口(默认为22)。
  • [f]ix符号链接:如果有指向同步目录的绝对符号链接,则它们在远程服务器上保持一致:即,它们将具有反映服务器上克隆目录路径的绝对路径。适用于群集配置。
  • ssh-[a]gent:启用ssh代理支持。任何private-[k]ey path参数都将被忽略。
  • ssh-[c]onfig path:在sftp url的主机名中,您可以指定您的ssh配置文件的条目。如果您使用的是非标准路径,可以在此处设置。
  • k[n]own庠hosts path:指向您的known庠hosts文件的路径。默认为~/.ssh/known_hosts
  • [d]禁用已知主机:禁用远程指纹检查本地已知主机文件。
  • [e]从文件路径中排除:指向包含模式列表的文件的路径。与这些模式匹配的每个文件都将被忽略(未同步)。
  • 不要删除[t]e:不要删除本地目录中丢失的远程文件。
  • 所有[o]w-未知:在连接到未知主机之前不要要求确认。

警告:请确保选择一个适当的远程文件夹。 同步过程确实会删除本地文件夹中不存在的任何文件(除非打开-t选项)。

ssh配置兼容性

sftp url参数中的主机名可以是ssh_config文件中的有效项。具体来说,您的条目应该具有相关参数,如:

  • 主机名
  • 用户
  • 端口
  • 标识文件
  • 代理命令

任何未找到的值都将回退到cli参数。 无论如何,您必须设置identityfile字段,否则身份验证将尝试退回到~/.ssh/id_rsa并且无法工作。 选择与模式匹配的第一个主机名(以ssh\u config方式)。

已知主机检查

默认情况下,sftpclone会将远程主机指纹与~/.ssh/known_hosts文件中包含的指纹匹配。 如果您的计算机上不存在此文件,则可以使用-n选项指定其他路径。 此外,您可以使用-d标志禁用检查。 未知主机将要求用户授权连接。请注意,即使在授权之后,已知主机 不会修改文件。

排除列表

它的灵感来自rsync/tar--从标志中排除。

可以在命令行参数中指定包含模式列表的文件,每行一个。 所有匹配任何模式的文件都不会与SFTP服务器同步。

开头的行将被忽略。

每个模式都被认为是相对于同步目录的。因此,前导/被忽略。

示例

; This will exclude any file or directory beginning with foofoo*; This will exclude any file foo in a subdir of the directory bar.bar/*/foo

编程用法

您可以在示例目录中找到编程用法的一些示例。

测试

此项目使用nose进行测试。 此外,在python 2上,您还需要mock模块(3.3版python标准库的一部分)。 在这两种情况下,您都可以使用以下命令安装测试要求:

$ pip install -r test_requirements.txt

然后,您可以使用从项目根目录启动测试套件:

$ nosetests
$ python setup.py test# alternatively

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么数据库最类似于Map,每个用户/id存储无限多个“键”和“值”?   java仅使用super pom进行测试   内存不足如何解析java。OutOfMemoryError:Java堆空间在增加堆大小的情况下将意味着延迟OutOfMemoryError   来自另一个类的mysql和java jdbc调用[运行时应用程序]   java通过下拉菜单更改搜索框搜索的内容   JAVAlang.ClassNotFoundException:sun。jdbc。odbc。JdbcOdbcDriver   java Selenium点击链接   JavaSpringHibernate:从唯一值列表中获取对象列表   java Bing广告与桌面身份验证问题   java如何在没有任何外部SDK的情况下从安卓打印到收据打印机?   未调用java菜单片段类   java在IDEA和PyCharm中同时为同一个项目工作   java我们如何为同一个异常提供不同的海关信息   jakarta ee中是否预定义了“请求”和“响应”变量或值?   java更好地解决“之前和之后”难题?   尝试将数据从Excel添加到Java   发送电子邮件的Java代码只适用于一个电子邮件id?   java如何从资产解析XML?