Edited at

Fabricでrsyncでroot権限で送る(だけに限らないオプションの設定方法)

More than 3 years have passed since last update.

tomotaka_ito さんの Python - fabricで高速なファイル転送 - Qiita でもいいのだけど、extra_optsで設定した方が見通しがいいと思うのです。

Fabricのrsync_projectextra_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'"
)