İçeriğe geç
02 · DENEY · CDSAVER

CDSaver CD kurtarma aracı

Bütün deneyler
CDSaver kapağı: CDS monogramı, “Claude Code ile yapıldı” rozeti, aracın tanımı ve bir diskin sonuç satırı
Ne
Kurulum istemeyen Windows aracı · tek PowerShell dosyası
Teknoloji
PowerShell 5.1 · Windows API (CancelIoEx, SetThreadExecutionState, IOCTL_CDROM_SET_SPEED) · ffmpeg
Yazım
Claude Code · kodun tamamı, testler ve kılavuz
Sürücü
ASUS SDRW-08D2S-U Lite harici DVD sürücü
Tarih
Eylül 2026 yazım ve ilk kullanım · Ekim 2026 yayın
Durum
Kullanımda · dört gerçek diskte denendi, dördü %100 kurtarıldı
Yapım
Artcycle LABS · Uğur Karataş
İçindekiler
  1. Ne için yapıldı
  2. Nasıl çalışıyor
  3. En ilginç kısım: donmayan okuma
  4. Dört disk, dört sonuç
  5. Ne öğrendik

NE BU

CDSaver, çizik ve okunmayan CD ve DVD’lerden dosyaları sabırla, parça parça kurtaran küçük bir Windows aracı. Kurulum istemiyor, takılan bir okumada donmuyor, yarıda kalırsa kaldığı yerden devam ediyor ve ne yaptığını Türkçe anlatıyor.

Kodun tamamı, testleri ve kılavuzu Claude Code ile bir sohbet içinde yazıldı.

Yeniden canlandırma, gerçek ekran kaydı değil: 22 Eylül 2026’daki disk 2 okumasının log zamanlamasıyla, 3 dk 20 sn 26 saniyeye sıkıştırıldı.

Ne için yapıldı

Elde 1989 ile 1996 arasından aile görüntüleri taşıyan, yaklaşık yirmi yıllık üç Video CD ve bir DVD vardı. Video CD, bugün hiçbir cihazın tanımadığı eski bir biçim. İlk disk bilgisayara takıldığında sürücü ısındı, Windows dondu ve sürücü bir daha çalışmadı. O diskten elde yalnız ilk bir dakika kaldı.

Hazır kurtarma programları ya aynı şekilde donuyordu, ya kurulum, lisans ve reklam istiyordu, ya da Linux’ta çalışıyordu. İstenen şey basitti: diski sabırla okusun, takılınca donmasın, yarıda kalınca kaldığı yerden devam etsin, ne olduğunu Türkçe anlatsın. Bu tarif Claude Code’a anlatıldı ve araç birlikte yazıldı.

CDSaver’ın tanıtım sayfası: CDS monogramı, kısa tanım, GitHub ve Kılavuz düğmeleri, “Neden yazıldı” bölümü
Aracın kendi tanıtım sayfası

Nasıl çalışıyor

Araç tek bir PowerShell dosyası. PowerShell Windows’ta hazır geldiği için kurulacak bir şey yok. Diskteki dosyayı 2048 baytlık sektörler halinde okuyor ve yanına bir harita dosyası yazıyor: hangi sektör okundu, hangisi okunmadı. Harita her 20 saniyede kaydediliyor; bilgisayar çökse bile en fazla 20 saniyelik ilerleme kayboluyor. Aynı komut yeniden çalıştırılınca kaldığı yerden devam ediyor.

Okuma altı geçişte yapılıyor. İlk geçiş 32 sektörlük büyük parçalarla hızlı gidiyor ve okunamayan yerleri atlıyor. Sonraki geçişler parçaları küçültüyor, bazıları diski tersten okuyor, sonuncusu tek sektör tek sektör deniyor. Bu, Linux dünyasında bilinen ddrescue aracının mantığı; CDSaver onu Windows’ta kurulum istemeden çalışan bir biçime taşıyor.

Tek bir dosyayı ya da bir klasördeki bütün dosyaları sırayla kurtarabiliyor; rapor kipinde önceki oturumun ne kadarının kurtarıldığını ve kaç eksik bölge kaldığını gösteriyor. Sürücünün okuma hızını da kendisi ayarlıyor (IOCTL_CDROM_SET_SPEED). Kurtarılan Video CD ve DVD dosyaları sonra ffmpeg ile MP4’e çevrildi.

PowerShell penceresinde CDSaver v2: QuickEdit kapalı, uyku engeli aktif, okuma hızı 4x, tek dosya kipi; ilk geçiş %12,4’te, asılma 0, hata 0
Tek dosya kipi · ilk geçiş, 32 sektörlük bloklar, zaman aşımı 10 sn
Klasör kipinde CDSaver: DVD’nin VIDEO_TS klasöründe 7 dosya bulundu, ilk beşi %100 kurtarıldı, altıncısı okunuyor
Klasör kipi · DVD’deki dosyalar sırayla, her birinin kendi sonucu
Rapor kipinde CDSaver: önceki oturumdan devam, 296259 sektörün tamamı kurtarılmış, eksik bölge sayısı 0
Rapor kipi · haritadan okunan durum: eksik bölge yok

En ilginç kısım: donmayan okuma

Donmanın kökü şuydu: sıradan bir dosya okuması, sürücü takıldığında sonsuza kadar bekliyor ve işletim sistemini de kendisiyle birlikte kilitliyor. Hiçbir zaman aşımı ayarı bunu çözmüyor, çünkü bekleyen şey program değil, aygıt sürücüsü.

Çözüm, her okumayı asenkron başlatıp belirli bir süre sonra Windows’un CancelIoEx çağrısıyla zorla iptal etmek oldu. Süre dolunca o parça “sonra bakılacak” diye işaretleniyor ve araç yoluna devam ediyor. Süre geçişten geçişe uzuyor: ilk geçişte 10 saniye, sonra 20, sonra 30. Böylece sağlam bölgeler hızla, bozuk bölgeler sabırla okunuyor. Bunu sınamak için sahte, yavaş bir veri akışı kuruldu: 30 saniye asılı kalacak bir okuma 3 saniyede iptal edildi.

Yanına küçük ama hayati üç şey daha geldi. Üçü de aynı gece yaşanan üç ayrı sorundan çıktı:

  • USB sürücü güç yetersizliğinden düşerse araç bekliyor, sürücü geri gelince devam ediyor.
  • Çalışırken Windows’un uykuya geçmesini engelliyor (SetThreadExecutionState).
  • Konsol penceresine yanlışlıkla tıklanınca programı durduran “hızlı düzenleme” (QuickEdit) kipini kapatıyor.

Dört disk, dört sonuç

Sürücü değiştirilip Windows’un otomatik açma özelliği kapatılınca “ölü” sanılan dört disk de üç dört dakikada, tek hata vermeden okundu; dördü de %100 kurtarıldı.

Toplam 3,4 GB ham veri, 3 saat 24 dakika video; okuma 14 dakika 49 saniye sürdü. Ardından ffmpeg ile MP4’e çevrildi: Video CD’ler 352×288, DVD 720×576 çözünürlükte.

DiskTürBoyutSektörSonuçSüreHata
1VCD · 1991578,6 MB296259 / 296259%10000:03:380
2VCD · 1992–93512,5 MB262421 / 262421%10000:03:200
3VCD · 1994–96321,7 MB164705 / 164705%10000:02:210
4DVD-Video2,0 GB1021932 / 1021932%10000:05:300

Toplam: 3,4 GB ham veri, 3 saat 24 dakika video, 14 dakika 49 saniye okuma.

22 Eylül 2026 tarihli log dosyası: disk 2 okuması 19.02.53’te başlıyor, 19.06.13’te 262421 sektörün %100’ü kurtarılmış olarak bitiyor
Disk 2’nin log kaydı · 22 Eylül 2026, 3 dk 20 sn, okunamayan sektör yok
Dört diskin sonuç tablosu ve ffmpeg ile MP4’e çevrilen dosyaların listesi
Dört disk, dört sonuç · hepsi %100, sıfır hata

Ne öğrendik

Sorunların çoğu diskte değil, sabırsız sürücüde ve Windows’un diski hemen önizlemeye çalışma refleksindeymiş. Evde okunmayan eski bir diski olan için ilk ders bu: kurtarma aracından önce başka bir sürücü denemek ve otomatik açmayı kapatmak.

Bu yüzden dürüst bir not: CDSaver en zor senaryoda, gerçek bir okuma hatasıyla henüz sınanmadı. Aracın README dosyasında da bu açıkça yazıyor.

İkincisi: yapay zekâyla araç yazmak, kodu yazdırmaktan çok sorunu doğru anlatmak ve her hatayı birlikte ayıklamakmış. Uyku modu, kablo, tırnak işareti yüzünden bozulan bir komut argümanı… Her biri bir sohbet turunda çözüldü ve bu sırada sorunun kendisi de daha iyi anlaşıldı.

Bu sitede teknik olarak zorunlu çerezler çalışır; ölçüm çerezleri yalnız izin verirsen.
Ayrıntı çerez politikasında.
Ölçüm çerezleri yalnız izin verirsen.