tomotaka_ito さんの Python - fabricで高速なファイル転送 - Qiita でもいいのだけど、extra_opts
で設定した方が見通しがいいと思うのです。
Fabricのrsync_project
のextra_opts
では、メソッドの引数で指定できないrsyncコマンドの引数を指定することができます。
--rsync-path
は転送先で利用するrsyncコマンドを指定することが可能で、たとえば、複数バージョンのrsyncを利用するなどの場合に指定することができます(そんなことってあるのかな???)。また、ここで、当該ユーザでのsudoの権限をつけた状態でsudo rsync
を指定すれば、転送先ではsudo経由のroot権限で送ることが可能になるわけです。
これはなかなか、Fabric でやる場合に限らず、便利です。
from fabric.contrib.project import rsync_project
@task
def rsync_test():
rsync_project(
local_dir='./mydir',
remote_dir='/usr/local/destination/mydir',
exclude=['.DS_Store', '*.tmp'],
extra_opts="--rsync-path='sudo rsync'"
)
もちろんあらかじめ、sudoの設定はしておきましょうね。
追記
もちろん、こういうのも出来ますよ。
差分で更新されたものだけアップロードとか。
from fabric.contrib.project import rsync_project
@task
def rsync_test():
rsync_project(
local_dir='./mydir',
remote_dir='/usr/local/destination/mydir',
exclude=['.DS_Store', '*.tmp', '.git/', '.gitignore'],
extra_opts="--link-dest ../old/ --rsync-path='sudo rsync'"
)