LoginSignup
18
18

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-02-25

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'"
    )
18
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18