发布于 2015-10-05 04:23:10 | 319 次阅读 | 评论: 0 | 来源: 网络整理
其它非核心有用功能,例如:组合多个业务。
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
目录,并将所有文件置于其中。
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
。