项目工具
其它非核心有用功能,例如:组合多个业务。
fabric.contrib.project.
rsync_project
(*args, **kwargs)使用 rsync 讲远程路径和本地项目同步。
upload_project()
使用scp
来复制整个项目,rsync_project()
会使用rsync
命令,只会将本地比远程更新的文件同步过去。rsync_project()
只是一个简单的rsync
封装,关于rsync
是如何工作的,请阅读它自身的使用手册。为了保证工作正常,你需要保证本地和远程系统中都已安装rsync
。这个函数会调用 Fabric
local()
操作,并将其操作的输出返回回来;也就是说会返回 stdout,如果有的话,还会包含因而产生的rsync
调用结果。rsync_project()
接受以下参数:remote_dir
:是唯一必选的参数,指的需要同步的远程服务器目录。根据rsync
实现方式其具体行为取决于local_dir
的值。- If
local_dir
ends with a trailing slash, the files will be dropped inside ofremote_dir
. E.g.rsync_project("/home/username/project/", "foldername/")
will drop the contents offoldername
inside of/home/username/project
. 如果
local_dir
**没有**以斜线结尾(或者是没有指定local_dir
的默认情况下),将会以remote_dir
为父文目录创建一个名为local_dir
的子目录。也就是说rsync_project("/home/username", "foldername")
会在创建一个/home/username/foldername
目录,并将所有文件置于其中。
- If
local_dir
:默认情况下,rsync_project
使用当前工作目录作为源目录,你可以使用字符串参数local_dir
覆盖该设置。该参数会原封不动地传递给rsync
,因此它的值可以是单个目录("my_directory"
),或者多个目录("dir1 dir2"
)。详细用法请参阅rsync
的文档。exclude
:可选,可以是一个字符串,也可以是一个字符串的迭代器,用于向rsync
传递一个或多个--exclude
参数。delete
:用于设置rsync
的--delete
选项的参数。其值为 True 将会在远程删除本地已不存在的文件。默认值为 False。extra_opts
:可选参数,直接将可选参数传送给rsync
。ssh_opts
:类似于extra_opts
,但是仅限于 SSH 连接(rsync--rsh
参数)。capture
:直接传给local
内部调用。upload
:一个布尔值,用于控制文件同步设置是作为上游还是下游,默认是上游。default_opts
:默认 rsync 参数是-pthrvz
,你可以传递参数覆盖默认值(例如:你可以删除 verbosity 输出选项,等等)。
该函数遵循 Fabric 的端口和 SSH key 设置,如果当前主机的使用了非默认端口,或者
env.key_filename
变量非空时,将使用指定端口和/或 SSH key 文件。作为参考,这个函数构建出的
rsync
调用命令类似于下面这个:rsync [--delete] [--exclude exclude[0][, --exclude[1][, ...]]] \ [default_opts] [extra_opts] <local_dir> <host_string>:<remote_dir>
1.4.0 新版功能: 关键字参数
ssh_opts
。1.4.1 新版功能: 关键字参数
capture
。1.8.0 新版功能: 关键字参数
default_opts
。
fabric.contrib.project.
upload_project
(local_dir=None, remote_dir='', use_sudo=False)使用
tar
/gzip
将当前项目上传到远程系统中。local_dir
参数用于指定将要上传的本地项目路径,默认为当前工作目录。remote_dir
用于指定要上传的目标目录(也就是说会复制一份local_dir
目录作为remote_dir
的子目录),其默认值是用户的 home 目录。远程执行命令时可以设置
use_sudo
参数。use_sudo
为 True 的时候,将使用sudo
执行程序,否则使用run
。这个函数会调用
tar
和gzip
程序/库,因此在 Win32 系统上并没有得到很好的支持,除非使用了 Cygwin 之类的程序。该函数不论是非执行成功,都会将远程的 tar 文件清理干净。在 1.1 版更改: 新增关键字参数
local_dir
和remote_dir
。在 1.7 版更改: 新增关键字参数
use_sudo
。