2016-04-04 34 views
2

Dosyaları uzak bir konumdan WinSCP .NET kitaplığını kullanarak yerel yoldan yerel yola senkronize etme girişiminde bulunuyorum. Kaynak klasördeki yeni veya güncellenmiş olan hedefe indirilir ve hedefte bulunan ve kaynak klasörden kaldırılmış dosyalar hedeften silinir.WinSCP .NET SynchronizeDirectories, uzak klasörden kaldırıldıktan sonra yerel dosyaları silmiyor

eşitlemek için çağrı böyle bir şey için değerlendirilir:

var fileMask = "/FTP_root/Folder_*/*.png>2016-01-01 00:00:00"; 
var results = session.SynchronizeDirectories(SynchronizationMode.Local, 
              @"C:\ProjectFolder\AppData", 
              FTPDirectory, 
              true, 
              false, 
              SynchronizationCriteria.Time, 
              new TransferOptions() { FileMask = fileMask }); 

Özetlemek gerekirse, SynchronizeDirectories için parametreler şunlardır: Bu kod ile buluyorum ne

SynchronizationMode 
LocalPath 
RemotePath 
RemoveFiles 
Mirror 
SynchronizationCriteria 
TransferOptions 

olduğunu yeni ve yeniden adlandırılan dosyalar beklendiği gibi karşıdan yüklenir, ancak uzak klasörden kaldırılmış dosyalar silinmez ve yeniden adlandırılmış dosyalar durumunda, hem eski hem de yeni dosya adı senkronizasyondan sonra yerel klasörde bulunur.

cevap

3

Senkronizasyon, hangi dosyaların her iki yönde de senkronizasyon için geçerli olduğunu belirlemek amacıyla dosya maskesini hem uzak hem de yerel yola uygular.

Dosya Maske belgelerinde (https://winscp.net/eng/docs/file_mask) ilgili bölümlerine

şunlardır:

  • "kısmi yol maskelemek için hiçbir geri kullanıp farkı() veya düz eğik çizgi (/) yapar; maskesi olacak her zaman "

  • 'Ayrıca yerel ve uzak hem belirli bir dosya veya dizin,'

  • " tam yolunu belirtebilirsiniz hem yerel hem de uzak yollar için çalışmak tam yol maskesi yerel veya RemoT maçları E yolları yalnızca, sözdizimi bağlı Bu durumda

, bir tam yol maskesi kullanarak maskeyi neden olan sadece uzaktan yola uygulanacak anlaşılmaktadır "kullandı. Yeni dosyaları, yeniden adlandırma ve silme işlemlerini destekleyecek senkronizasyon için, yol maskesi ya göreli bir yol kullanarak, hem uzaktan hem de yerel olarak eşleşmelidir.

var fileMask = "*/Folder_*/*.png"; 

veya ek olarak yerel olarak uzaktan eşleşen bir maske dahil ederek

:

var fileMask = @"C:\ProjectFolder\AppData\Folder_*\*.png; /FTP_root/Folder_*/*.png; 

Ben sadece kısaca ikincisi yaklaşımını test ettik ama aynı zamanda bazı boyut için gerekli hususlar ve de olsa (çalışmak görünmektedir maskedeki zaman kısıtlamaları. Göreceli yol yaklaşımı benim durumumda çalışır, ancak tam yol yaklaşımına tam olarak eşdeğer olmamasına rağmen (dizin hiyerarşisindeki aşağı klasörleri de eşleştirebilir).

İlgili konular