Fabric で rsync する
Python のデプロイツールである Fabric を普段から使っている。
で、Fabric で rsync をする場合は以下のように書く。
#!/usr/bin/env python # -*- coding: utf-8 -*- import os from fabric.api import env, run, roles, cd from fabric.contrib import project, console env.user = 'username' env.roledefs = { 'web': ['192.168.1.10', '192.168.1.11', '192.168.1.12'] } @roles('web') def rsync(): project_path = '/path/to/projects' dirname = os.path.dirname local_path = dirname(dirname(os.path.abspath(__file__))) with cd(project_path): exclude = ['*.pyc', '*~', '.DS*', '*.swp'] project.rsync_project(project_path, local_dir=local_path, exclude=exclude)
$ fab rsync
Capistrano に比べてゴリゴリ Python のコードを書く感じ。
参考文献:
Welcome to Fabric’s documentation! — Fabric documentation
Fabric デプロイツールのPythonicな書き方 - Ian Lewis