rsync'in bitmemiş kaynak dosyalarını kaldırmasını engelle


169

İki makinem var, hız ve kütle. speed, hızlı bir İnternet bağlantısına sahiptir ve çok sayıda dosyayı diske indiren bir tarayıcı çalıştırır. kütlenin çok fazla disk alanı var. Dosyaları indirdikten sonra hızdan kitleye taşımak istiyorum. İdeal olarak, sadece koşardım:

$ rsync --remove-source-files speed:/var/crawldir .

ancak rsync'in henüz indirmeyi bitirmemiş bir kaynak dosyanın bağlantısını kaldıracağından endişe ediyorum. (Kaynak koduna baktım ve buna karşı koruyan hiçbir şey görmedim.) Herhangi bir öneriniz var mı?

Yanıtlar:


10

Bana öyle geliyor ki, sorun silinmeden değil, bir dosyayı tamamlanmadan aktarıyor .

Bu Linux ise, bir dosyanın A işlemi ile açılması mümkündür ve B işlemi dosyanın bağlantısını kaldırabilir. Hata yok, ama elbette A zamanını boşa harcıyor. Bu nedenle, rsync'in kaynak dosyayı silmesi bir sorun oluşturmaz.

Sorun rsync kaynak dosyayı ancak kopyalandıktan sonra silmesidir ve hala diske yazılıyorsa, kısmi bir dosyaya sahip olursunuz.

Peki ya: massUzak bir dosya sistemi olarak bağla (NFS çalışır) speed. Ardından, dosyaları doğrudan web taraması yapın.


9

İndirme işlemi üzerinde ne kadar kontrole sahipsiniz? Kendinizi alırsanız, indirilen dosyanın geçici bir dizine gitmesini veya indirme işlemi tamamlanana kadar geçici bir ada sahip olmasını ve ardından tamamlandığında doğru isme sahip olmasını sağlayabilirsiniz. Üçüncü taraf bir yazılım kullanıyorsanız, o kadar fazla kontrole sahip değilsiniz, ancak geçici dizin işlemini yine de yapabilirsiniz.


3

Rsync, belirli modellerle eşleşen dosyaları hariç tutabilir. Dosyaları geçici bir dizine indirmesini sağlamak için değiştiremeseniz bile, indirme sırasında dosyaları farklı bir şekilde adlandırma kuralına sahip olabilir (örneğin: foo.downloadingadlı bir dosyayı indirirken foo) ve dosyaları hariç tutmak için bu özelliği kullanabilirsiniz hala kopyalanmadan indiriliyor.


3

Tarama işlemi üzerinde kontrolünüz varsa veya öngörülebilir çıktısı varsa, yukarıdaki çözümler (bitene kadar geçici bir dosyada depolama, ardından tamamlanmış indirme yerine gitme veya '.downloading' tür adıyla dosyaları yok sayma) çalışabilir. Bunların hepsi sizin kontrolünüz dışındaysa, 'lsof $ dosyaadı' yaparak ve sonuç olup olmadığını kontrol ederek dosyanın herhangi bir işlem tarafından açılmadığından emin olabilirsiniz. Açıkçası hiç kimse dosyayı açmadıysa, dosyayı taşımak güvenlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.