用于克隆/同步本地目录树与SFTP服务器的工具。
项目描述
sftpclone
用于克隆/同步本地目录树与SFTP服务器的工具。
功能
- 保持本地目录树与SFTP服务器指定文件夹的同步。
- 需要时更新符号链接,并保持文件 一致性。
- SFTP服务器上的自动波浪号展开/处理。
- 公钥认证。
ssh_config
条目兼容性。- 同步排除模式。
- 兼容Python 2和Python 3。
安装
您可以使用pip安装sftpclone。
$ 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
其中,对于每个命令行参数
- local-path:本地文件夹的路径。此路径必须存在,并且可以包含
~
(我们使用波浪号展开)。 - 远程SFTP URL:指定远程SFTP URL的格式为:
[用户[:密码]@]主机名:远程路径
。密码和用户字段都可以省略。如果您省略了前者,则应指定一个私钥身份文件。如果您省略了后者,则默认使用当前用户。主机名可以引用您的ssh_config
文件中的一个元素。如果远程路径包含~
,则它将被展开到用户开始SFTP会话的默认文件夹。 - [h]elp:显示帮助信息并退出。
- private-[k]ey-path:您的私钥身份文件的路径。如果您不使用密码认证,请设置它。它自动默认为
~/.ssh/id_rsa
,并且可以多次使用。 - [l]ogging:设置日志级别(默认为ERROR)。
- [p]ort:SSH远程端口(默认为22)。
- [f]ix-symlinks:如果您有指向同步目录的绝对符号链接,它们将在远程服务器上保持一致:即,它们将具有反映服务器上克隆目录路径的绝对路径。这对于集群配置很有用。
- ssh-[a]gent:启用ssh-agent支持。任何private-[k]ey-path参数都将被忽略。
- ssh-[c]onfig-path:在sftp-url的主机名中,您可以指定您的
ssh_config
文件中的一个条目。如果您使用非标准路径,您可以在其中设置它。 - known_hosts路径:您的
known_hosts
文件的路径。默认为~/.ssh/known_hosts
。 - [d]isable-known-hosts:禁用对本地
known_host
文件的远程指纹检查。 - [e]xclude-from-file-path:包含模式列表的文件的路径。与这些模式匹配的任何文件都将被忽略(不会同步)。
- do-not-dele[t]e:不要删除本地目录中缺失的远程文件。
- all[o]w-unknown:在连接到未知主机之前不要请求确认。
注意:请务必选择一个合适的远程文件夹。同步过程确实会删除本地文件夹中不存在的任何文件(除非您打开了-t
选项)。
ssh_config
兼容性
sftp-url参数中的主机名可以是ssh_config
文件中的一个有效条目。具体来说,您的条目应包含相关参数,如
HostName
User
Port
IdentityFile
ProxyCommand
找不到的任何值将回退到CLI参数。无论如何,您必须设置IdentityFile
字段,否则认证将尝试回退到~/.ssh/id_rsa
并且可能无法工作。将选择与模式匹配的第一个主机名(按ssh_config
的方式)。
known_hosts
检查
默认情况下,sftpclone将匹配远程主机指纹与您~/.ssh/known_hosts
文件中的指纹进行比较。如果您的机器上没有此文件,您可以使用-n
选项指定不同的路径。此外,您可以使用-d
标志禁用检查。未知主机将要求用户授权连接。请注意,即使在授权之后,known_host
文件也不会被修改。
排除列表
它从rsync/tar --exclude-from
标志中汲取灵感。
您可以在命令行参数中指定一个包含模式列表的文件,每行一个。所有与这些模式匹配的文件都不会与SFTP服务器同步。
以;
或#
开头的行将被忽略。
每个模式都被认为是相对于同步目录的。因此,前面的/
将被忽略。
示例
; This will exclude any file or directory beginning with foo
foo*
; This will exclude any file foo in a subdir of the directory bar.
bar/*/foo
程序化使用
您可以在示例目录中找到一些程序化使用的示例。
测试
本项目使用nose进行测试。此外,在Python 2中,您需要mock
模块(Python 3.3标准库的一部分)。在这两种情况下,您可以使用以下命令安装测试需求:
$ pip install -r test_requirements.txt
然后,您可以从项目根目录使用以下命令启动测试套件
$ nosetests
$ python setup.py test # alternatively
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
sftpclone-1.2.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aba5847e701f25339fe56ace26a71cc5e95aea31f5711f7a11cd6cebc7800849 |
|
MD5 | 4a23671f12c2ad4b14f26b43c3ef16ac |
|
BLAKE2b-256 | 84a21cfce5b83817f035f8f5cc7fb23bf207dda91238eace76af1026c15b0d2b |
sftpclone-1.2.2-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5f5c07605b7c1d81751cf8abe773ae7aa26bd9d5b97fb198c5307ef62797017d |
|
MD5 | 3fbacda64da5340691df9ca1ca71af41 |
|
BLAKE2b-256 | d102a4a8d11dc6d9b089f5ad96cf2a1510e87a16557abbbcff99469caa9d1bd7 |