2010-11-04 78 views
0

我非常想嘗試使用Rsync來部署Symfony應用程序。在Windows 7中使用Rsync部署Symfony Projekt - 權限問題

我是cwRsync,它至少可以工作,至少可以。我的應用程序位於E:\ xampp \ htdocs \ MyProject。

Rsync實際上確實在我的服務器上創建了一個目錄,但除此之外,我只收到權限錯誤。

現在,這似乎是一個普遍的問題,但是我不能夠實現任何解決方案,比如這一個: cwRsync ignores "nontsec" on Windows 7

我安裝cwRsync到以下目錄:C:\ cwrsync

我的問題:我的fstab文件需要什麼樣子,我甚至必須把它放在哪裏?有沒有其他解決方案來解決這個問題?

在此先感謝!

+0

您引用的問題本質上是解決方案 - 只需在'C:\ cwRsync \ etc'中創建一個名爲'fstab'的文件並添加'none/cygdrive cygdrive binary,posix = 0,user,noacl 0 0'到它。 – Raise 2010-11-04 16:16:36

回答

0

我發表了你提到的那個問題。以下是我爲了讓symfony project:deploy能夠在Windows 7上工作而做的事情(它需要對symfony進行一些攻擊,所以它可能不是最優的解決方案)。有了這個解決方案,你不需要安裝完整的cygwin,你只需要cwRsync。

在你fstab,加入這一行(fstab中應該位於[cwrsync install dir]\etc下):

C:/wamp/www /www ntfs binary,noacl 0 0 

這實際上映射 「C:\ WAMP \ www」 的您的Windows文件系統 「/ WWW」 的cygwin的。

修改symfony/lib/task/sfProjectDeployTask.class.php

protected function execute($arguments = array(), $options = array()) 
{ 
    ... 
    $dryRun = $options['go'] ? '' : '--dry-run'; 

    // -- start hack -- 
    if(isset($properties['src'])) 
    $src = $properties['src']; 
    else 
    $src = './'; 

    $command = "rsync $dryRun $parameters -e $ssh $src $user$host:$dir"; 
    // -- end hack -- 

    $this->getFilesystem()->execute($command, $options['trace'] ? array($this, 'logOutput') : null, array($this, 'logErrors')); 

    $this->clearBuffers(); 
} 

這可以讓你在properties.ini指定其他src場:

src=/www/myProject 

這樣做可以使Windows和Cygwin的方向比較明確的整個文件系統的映射。 Cygwin(和cwRsync)比windows路徑更好地理解unix路徑(即/wwwC:/wamp/www),所以這樣做可以使所有的工作都正常工作。

0

運行腳本

我覺得總是Rsync的Windows和Linux之間的同步操作時傷了你的文件的權限。

您可以非常輕鬆地創建一個腳本,該腳本在同步後通過您的文件並使用chmod重置文件權限。