Help us understand the problem. What is going on with this article?

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'"
    )
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away