项目工具¶
其它非核心有用功能,例如:组合多个业务。
-
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_dirends with a trailing slash, the files will be dropped inside ofremote_dir. E.g.rsync_project("/home/username/project/", "foldername/")will drop the contents offoldernameinside 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。