Geliştirici Aracı · CLI
media-stow
Medya arşivlerini içerik hash'leriyle karşılaştıran; eşitleme, doğrulama ve yinelenen dosya yönetimi için tasarlanmış .NET CLI aracı.
- C#
- .NET
- SHA-256
- JSON
Bağlam ve amaç
media-stow, fotoğraf, video ve ses dosyalarından oluşan büyük yerel arşivleri düzenlemek için hazırlanmış bir komut satırı aracıdır. Dosya adına veya klasör konumuna güvenmek yerine dosya içeriğini karşılaştırır; böylece aynı içeriğin farklı adla kopyalanması gibi durumları daha güvenilir biçimde ele alır.
Araç, arşivleme görevini yalnız kopyalama olarak görmez. Hedef yapının doğrulanması, yinelenenlerin bulunması, iki dizin arasındaki ortak dosyaların ayrılması ve önceki işlemlerin karşılaştırılması da aynı çalışma alanının parçasıdır.
Nasıl çalışır
Başlangıç eşitlemesi kaynak dosyaları kategori ve uzantı temelli hedef yapısına yerleştirir; işlem sonunda mevcut durumu anlatan JSON indeksini oluşturur. Sonraki eşitlemeler, disk ile bu indeksi karşılaştırarak yeni, kayıp veya yanlış konumlanmış dosyaları belirler.
Dedup komutu eşit SHA-256 hash’ine sahip dosyaları gruplar. Verify komutu sıralanmış arşivin yapısını ve istenirse kaynakla eşleşmesini inceler; rapor üretir. Extract-common ve compare komutları ise iki farklı dizin veya işlem kaydı arasındaki ortak ya da değişen içerikleri analiz etmeye yarar.
Sistem tasarımı
Tek bir .NET konsol uygulaması; komut seçimini CommandRegistry üzerinden yapar. Her komut kendi iş akışını taşırken hash hesaplama, dosya erişimi, terminal günlüğü ve kullanıcı onayı ortak servisler olarak kalır.
Modeller; medya indeksini, dosya kaydını, özetleri ve doğrulama raporlarını temsil eder. Kategori ve filtre yapılandırmaları, hangi dosyaların hangi yapıya gireceğini merkezi biçimde tanımlar. Bu yaklaşım, komutların aynı dosya kurallarını ayrı ayrı yorumlamasını önler.
Öne çıkan teknik kararlar
HashService, dosyayı akış üzerinden okuyarak SHA-256 hesaplar. Bu nedenle eşitlik dosya adı, tarih veya boyuttan çıkarılmaz; iki dosyanın bayt düzeyinde aynı içeriği taşıdığı gösterilir. Büyük arşivlerde maliyetli olabilen bu işlem, paralelliği işlemci kapasitesiyle sınırlandırarak dengelenir.
İndeks ve raporlar önce geçici hedefe yazılıp sonra son ada taşınır. Bu, yarım yazılmış JSON dosyasının sonraki bir eşitlemede geçerli durum gibi okunma riskini azaltır. Değişiklik yapan komutlar kullanıcıdan açık onay ister; sync ve dedup için önizleme seçeneği bulunur.
Doğrulama ve sınırlar
Araç; erişilemeyen dosyaları kontrol eden health check, yapı doğrulaması ve JSON tabanlı raporlarla operasyonel görünürlük sağlar. Ancak depoda ayrı bir otomatik test projesi bulunmadığı için dosya taşıma veya silme davranışının her senaryoda güvenli olduğuna dair otomatik kanıt yoktur.
Eşit hash, görsel olarak benzer dosya anlamına gelmez. Yeniden kodlanmış veya düzenlenmiş bir fotoğraf farklı dosya kabul edilir. Hash hesaplama bütün dosyayı okumayı gerektirir; çok büyük arşivlerde disk erişimi ve süre maliyeti beklenmelidir. Gerçek medya üzerinde çalışmadan önce önizleme ve yedekleme kullanmak gerekir.