CDSaver CD kurtarma aracı
Bütün deneyler
- 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
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ı.
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ı.
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.
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.
| Disk | Tür | Boyut | Sektör | Sonuç | Süre | Hata |
|---|---|---|---|---|---|---|
| 1 | VCD · 1991 | 578,6 MB | 296259 / 296259 | %100 | 00:03:38 | 0 |
| 2 | VCD · 1992–93 | 512,5 MB | 262421 / 262421 | %100 | 00:03:20 | 0 |
| 3 | VCD · 1994–96 | 321,7 MB | 164705 / 164705 | %100 | 00:02:21 | 0 |
| 4 | DVD-Video | 2,0 GB | 1021932 / 1021932 | %100 | 00:05:30 | 0 |
Toplam: 3,4 GB ham veri, 3 saat 24 dakika video, 14 dakika 49 saniye okuma.
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ı.





