drush rsync
は、設計上、uid:gidを保持できることを理解しています。
私がdrush rsync @site1 @site2
と同期していて、uid:didがsite1とsite2の両方に存在する場合、すべて順調です。
Drushのコマンド/エイリアス構成内で、uid:gidをsite2の特定の選択に変更するにはどうすればよいですか?
たとえば、site1ではすべてのファイルがwwwrun:wwwですが、site2ではすべてのファイルをbob:adminsとして保存します。どちらもsite1には存在しません。
統合ソリューションはありますか?次の手順として'drush ssh @site2 "chown ..."'
を使用できることはわかっています。代わりに、aliases.drush.rcでコマンドを定義/チェーンできますか?
"remote-user = xxx"の使用は確かに機能しますが、リモートボックスでSSHアクセスを許可されているユーザーに限定されているようです。
@ remote
egrep -i "allowusers" /usr/local/etc/ssh/sshd_config
AllowUsers root locuse testuser
@ local
whoami
locuse
drush --remote-user=testuser rsync @siteA @siteB
You will destroy data from [email protected]:/srv/www/siteB/ and replace with data from /srv/www/siteA//
Do you really want to continue? (y/n): y
@ remote
ls -al PROD/ | head -n 5
total 248K
drwsrws--- 10 testuser users 4.0K Mar 8 00:08 ./
drwxrwx--- 4 wwwrun www 4.0K Mar 8 08:11 ../
-rw-rw---- 1 testuser users 6.5K Mar 6 17:31 authorize.php
-rw-rw---- 1 testuser users 64K Mar 6 17:31 CHANGELOG.txt
-rw-rw---- 1 testuser users 996 Mar 6 17:31 COPYRIGHT.txt
それは私の特定の問題/興味に対処しません。
より明確に、私がやりたいことは、許可されたユーザー(「locuse」または「root」)としてlocal-> remoteからssh-inすることですが、リモートファイルのuid:gidが既存のペアに設定されています。 uidはsshアクセスを持っていますか、持っていません(wwwrun:wwwなど)。
「man rsync」の出力を読んで、私は読んだ:
RSYNC-DAEMON機能の使用VIAリモートシェル接続
その後@siteB
mkdir -p /path/to/target
chown -R wwwrun:www /path/to/target
vi /etc/rsyncd.conf
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
hosts deny = *
use chroot = no
[siteB]
path = /path/to/target
hosts allow = *
comment = COMMENTS
uid = wwwrun
gid = www
read only = no
list = yes
および@local
whoami
locuse
ls -al ~/SourceDir
total 240K
drwxrwxrwx 2 locuse users 4.0K Mar 8 10:42 ./
drwxr-xr-x 27 locuse users 4.0K Mar 8 10:41 ../
-rw-r--r-- 1 locuse users 5.2K Mar 8 10:43 file1.txt
-rw-r--r-- 1 locuse users 2.8K Mar 8 10:43 file2.txt
rsync -av --rsh=ssh ~/SourceDir/ [email protected]::SiteB
リモートで確認:
ls -al /path/to/target
total 240K
drwxrwxrwx 2 root root 4.0K Mar 8 10:42 ./
drwxr-xr-x 27 wwwrun www 4.0K Mar 8 10:41 ../
-rw-r--r-- 1 wwwrun www 5.2K Mar 8 10:43 file1.txt
-rw-r--r-- 1 wwwrun www 2.8K Mar 8 10:43 file2.txt
それはまさに私が求めている最終状態で終わります。
Rsyncにuidを保存するように指示しないと、接続したユーザーの所有権の下に転送されたすべてのファイルが作成されます。したがって、重要なのは、'remote-user' => 'bob'
宛先サイトのサイトエイリアス。
これを実現するために使用するrsyncフラグは-rlptzです。だから、私のdrushrc.phpには、
$command_specific['rsync'] = array('mode' => 'rlptz');
以下も参照してください。
http://drupal.org/node/1169776#comment-4612944
http://drupal.org/node/1343892
Drushでrsyncモジュールをサポートするのは厄介です。モジュールを使用する場合は、おそらくrsyncを直接呼び出すのが最善です。例えば。:
rsync -av --rsh = ssh drush dd @siteA
[email protected] :: SiteB
いずれにせよ、SiteBモジュールがSite B Drupal rootを指すように設定する必要があるので、これをサイトエイリアスに結び付ける価値はほとんどないようです。