rsync与fabric


上篇
最近学习rsync,突然想到自己之前使用fabric上传工程时与其用tar上传再解压缩还不如用rsync增量传输,后者可以更快。查了下fabric的文档,发现有提供几个方法:

fabric.contrib.project.rsync_project(*args, **kwargs)
fabric.contrib.project.upload_project(local_dir=None, remote_dir='')

第一个就是使用rsync,第二个其实和我之前的方法一样采用压缩包传输的。rsync_project个人认为实际上就是local(“rsync xxx”)的模板,参数并不是很全。

但是使用了之后我还是考虑使用第二个方法upload_project,原因是rsync和fabric的ssh登录是分离的:rsync_project需要我重新输入一次密码,不输入的话就需要退化成local加上sshpass。再考虑到一开始可能没有输入密码,代码可能会变成这样:

rsync_cmd = 'rsync --exclude=.git --exclude=*fabfile* -pthrvz . -e ssh %s:source' % env.host_string
if env.password:
  local('sshpass -p %s %s' % (env.password, rsync_cmd))
else:
  local(rsync_cmd)

如果不想输入两次密码的话,就必须在代码上或者命令行上写上密码,不是很安全。考虑再三,还是使用fabric提供的upload_project,虽然压缩可能慢一点。

,

One response to “rsync与fabric”