rsync senkronizasyon dizinleri omitting

1 Cevap php

Tamam, ben belki dağıtımını kolaylaştırmak için rsync bir PHP web-tabanlı arayüz araya koymak girişimi için ilk kişi değilim, ama oraya gidiyor.

Biz bir 'QA' yerel sunucu ve Rackspace bir 'Sahneleme' sunucu var. Ben iki sunucu arasında rsync böylece ben SSH anahtar eşleşmeleri kurdum ve hepsi harika çalışıyor. Sorun rsync karar ne ihtiyaçları güncellenmesi gibi biraz lapa lapa olmasıdır.

Aktarılması gereken her şeyin bir listesini almak için parametre - 'kuru-run' ben yazdım komut ilk rsync'i yürütür. Aşağıdaki gibi komut:

$strCheck = shell_exec(
                       "rsync " .
                       "--verbose " .
                       "--recursive " .
                       "--safe-links " .
                       "--checksum " .
                       "--dry-run " .
                       "--delete " .
                       "--delete-excluded " .
                       "--force " .
                       "--cvs-exclude " .
                       "--human-readable " .
                       "/apps/{$system}/ " .
                       "user@liveserver:/apps/{$system}_staging/"
                       );

Şimdi bu tüm çalışıyor ve ben silme ve ekleme / güncelleştirilmesi gereken şeyler gerekir şeyler içine döndürülen dize ayrıştırma yapabilir. Daha sonra otomatik olarak hiyerarşi içinde nerede olduğuna göre her kutucuğa girintiler bir HTML tablosu oluşturmak. Ben kullanıcı bir klasördeki tüm dosyaları seçmek için izin böylece ben de javascript biraz kullanabilirsiniz.

Bir klasörün kendisi silinmiş / eklenecek ise, listede bulunuyor. Örneğin:

/newfolder/
/newfolder/file1.php
/newfolder/file2.php

'/ newfolder /' bir girinti ile gösterilir ve '/ newfolder/file1.php' ve '/ newfolder/file2.php' her altındaki iki bent '/ newfolder /' ile gösterilir, çünkü büyük olan. Bir sonraki '/ newfolder /' için onay kutusu otomatik olarak iki 'çocuk' dosyalarını seçmek ve herkes mutlu.

Bu sadece bir klasöre dosya güncelleme / ekliyor Ancak, bu klasörün kendisini atlar:

/oldfolder/filea.php
/oldfolder/fileb.php

...

'/ Oldfolder /' tüm dosyaları anlamına gelir, iki girintiler var, ama klasördeki tüm dosyaları seçmek için hiçbir görünür mekanizma yoktur olacaktır.

Benim soru şudur: Ben herhangi bir güncelleştirilmiş dosyalar için bir klasör ya da ben dizi aracılığıyla ben döngü olarak onları eklemek zorunda gidiyorum eklemek için zorlayabilirsiniz mevcut rsync parametreleri eksik bir şey var mı? Bu ikincisi ise, ne yapmanın en iyi yolu olurdu?

Bana Obi Stack Overflowbi Yardım, sen benim tek umudumsun ...

1 Cevap

Dizin oluşturulan veya silinecek gerekmez bu yana liste rsync döner eksik olacaktır. Bunu düzeltmek için herhangi bir şekilde var olduğuna inanmıyorum.

Ben senin en iyi bahis böyle yolları bir şey almak için olacağını düşünüyorum

$path = explode(PATH_SEPARATOR, dirname($filename) );

$ Dosya dosyaları adıdır.