Sistem çöktüğünde, bir güncelleme sonrası her şey ters gittiğinde ya da kritik bir servis aniden durduğunda, sysadmin olarak ilk başvurduğun araç genellikle CMD oluyor. GUI açılmıyor, RDP bağlantısı kopuyor, sunucu sadece siyah ekran gösteriyor – işte bu anlarda komut satırı bilgin seni kurtarıyor. Bu yazıda Windows Server ortamında sistem geri yükleme ve kurtarma süreçlerini CMD üzerinden nasıl yöneteceğini, gerçek dünya senaryolarıyla birlikte anlatacağım.
Temel Kavramlar: Ne Zaman Hangi Aracı Kullanırsın?
Windows’un kurtarma ekosistemi birden fazla katmandan oluşuyor. Bunları karıştırmak, yanlış durumda yanlış aracı kullanmak hem zaman kaybettirir hem de bazen durumu daha da kötüleştirebilir.
System Restore (Sistem Geri Yükleme): Registry değişikliklerini, uygulama kurulumlarını ve sürücü güncellemelerini geri alır. Kullanıcı verilerini etkilemez.
Windows Backup / wbadmin: Tam sistem yedeği, bare metal recovery için kullanılır. Kritik sunucularda mutlaka aktif olması gereken araç.
BCDEdit: Boot yapılandırmasını yönetir. Sistem açılmıyorsa ilk bakılacak yerdir.
SFC ve DISM: Sistem dosyası bütünlüğünü kontrol eder ve onarır.
Recovery Console: Windows RE (Recovery Environment) üzerinden erişilen kurtarma ortamı.
System Restore Komutları
Restore Point Oluşturma
Grup politikaları veya görev zamanlayıcı aracılığıyla otomatik geri yükleme noktası oluşturmak yerine, bunu CMD üzerinden de yapabilirsin. Özellikle büyük bir değişiklik yapmadan önce script’e eklemek için ideal.
:: Geri yükleme noktası oluştur (PowerShell ile CMD'den çağırma)
powershell -Command "Checkpoint-Computer -Description 'Pre-Update-$(Get-Date -Format yyyyMMdd)' -RestorePointType MODIFY_SETTINGS"
:: System Restore'u etkinleştir (C: sürücüsü için)
powershell -Command "Enable-ComputerRestore -Drive 'C:'"
:: Mevcut geri yükleme noktalarını listele
powershell -Command "Get-ComputerRestorePoint | Select-Object Description, CreationTime, SequenceNumber | Format-List"
Restore Point’e Geri Dönme
Dikkat: Bu işlem sistemi yeniden başlatır. Üretim ortamında maintenance window dışında yapma.
:: Belirli bir restore point'e geri dön (SequenceNumber'ı listeden al)
powershell -Command "Restore-Computer -RestorePoint 47"
:: Geri yükleme durumunu kontrol et
powershell -Command "Get-ComputerRestorePoint | Sort-Object CreationTime -Descending | Select-Object -First 5"
Gerçek dünya notu: Bir müşteride Windows Update sonrası SAP GUI çalışmaz oldu. GUI üzerinden geri yükleme başlatmak yerine, RDP bağlantısı hala açık olduğu için PowerShell/CMD kombinasyonuyla restore yapıp durumu kurtardık. GUI açılmasa bile CMD çalışıyorsa bu yöntemi kullanabilirsin.
wbadmin ile Yedek Alma ve Geri Yükleme
wbadmin, Windows Server Backup’ın komut satırı arayüzüdür. Özellikle Core kurulumlarında veya headless sunucularda vazgeçilmez.
Sistem Yedeği Alma
:: Tüm kritik birimlerin yedeğini ağ paylaşımına al
wbadmin start backup -backuptarget:\fileserverbackupssrv01 -include:C: -allCritical -quiet
:: Belirli sürücüleri yedekle
wbadmin start backup -backuptarget:E: -include:C:,D: -quiet
:: Yedek durumunu ve geçmişini görüntüle
wbadmin get versions
:: En son yedeğin ayrıntılarını gör
wbadmin get versions -backuptarget:\fileserverbackupssrv01
Sistemin State Yedeğini Alma
System State yedeği; registry, COM+ Class Registration Database, Active Directory (domain controller’da), SYSVOL ve boot dosyalarını kapsar. DC’lerde kritik öneme sahip.
:: System State yedeği al
wbadmin start systemstatebackup -backuptarget:E: -quiet
:: System State yedeğinden geri yükle
wbadmin start systemstaterecovery -version:04/15/2024-22:00 -backuptarget:E: -quiet
:: Mevcut yedek versiyonlarını listele
wbadmin get versions -backuptarget:E:
Dosya ve Klasör Geri Yükleme
:: Belirli bir dosyayı geri yükle
wbadmin start recovery -version:04/15/2024-22:00 -itemtype:File -items:C:inetpubwwwrootweb.config -recoverytarget:C:Recovery -quiet
:: Klasör geri yükleme
wbadmin start recovery -version:04/15/2024-22:00 -itemtype:File -items:C:UsersAdministrator -recoverytarget:D:Recovered -quiet
:: Volume geri yükleme (dikkatli kullan, mevcut veriyi siler)
wbadmin start recovery -version:04/15/2024-22:00 -itemtype:Volume -items:C: -quiet
Gerçek senaryo: Bir e-ticaret sitesinde hatalı deploy sonrası IIS konfigürasyonu bozuldu. Yedekten sadece C:inetpub klasörünü geri yüklemek istedik. wbadmin start recovery ile tam yedeği açmadan sadece o dizini restore ettik, site 8 dakikada ayağa kalktı.
BCDEdit ile Boot Kurtarma
Boot sorunları sysadmin’lerin en çok ter döktüğü alandır. BCDEdit, Windows Boot Manager konfigürasyonunu yönetir.
:: Mevcut boot konfigürasyonunu görüntüle
bcdedit /enum all
:: Sadece aktif boot girdilerini listele
bcdedit /enum active
:: Bozuk MBR'ı onar (Recovery ortamından çalıştır)
bootrec /fixmbr
:: Boot sektörünü yeniden yaz
bootrec /fixboot
:: Windows kurulumlarını tara ve BCD'ye ekle
bootrec /scanos
:: BCD deposunu yeniden oluştur (tüm boot girdilerini yeniden yazar)
bootrec /rebuildbcd
:: Güvenli mod boot girdisi ekle
bcdedit /copy {current} /d "Safe Mode Copy"
:: Çıktıdan gelen GUID'i kullan
bcdedit /set {GUID-buraya-gelecek} safeboot minimal
:: Boot timeout süresini ayarla (saniye)
bcdedit /timeout 10
:: Varsayılan boot girdisini değiştir
bcdedit /default {identifier}
Önemli not: bootrec /fixboot komutu bazen “Access is denied” hatası verir. Bu durumda önce diskpart ile aktif partition’ı set etmen gerekir:
diskpart
list disk
select disk 0
list partition
select partition 1
active
exit
bootrec /fixboot
SFC ve DISM ile Sistem Dosyası Onarımı
Sistem dosyaları bozulduğunda karşılaşılan belirtiler çeşitli olabiliyor: Blue Screen of Death, servisler başlamıyor, Windows Update hata veriyor. İlk müdahale araçların SFC ve DISM.
SFC (System File Checker)
:: Sistem dosyalarını tara ve onar
sfc /scannow
:: Sadece tara, onarmadan (offline analiz için)
sfc /verifyonly
:: Log dosyasını oku (CBS.log oldukça uzun olabilir)
findstr /c:"[SR]" %windir%LogsCBSCBS.log | more
:: Belirli bir dosyayı kontrol et
sfc /verifyfile=C:WindowsSystem32ntdll.dll
:: Belirli dosyayı onar
sfc /scanfile=C:WindowsSystem32ntdll.dll
DISM ile WIM/SxS Onarımı
SFC onarım yapamıyorsa, yani kaynak dosyaları da bozuksa DISM devreye giriyor.
:: Windows bileşen deposunun durumunu kontrol et
dism /online /cleanup-image /checkhealth
:: Daha kapsamlı tarama
dism /online /cleanup-image /scanhealth
:: Onar (Windows Update'ten indirir)
dism /online /cleanup-image /restorehealth
:: Offline kaynak kullanarak onar (ağ erişimi yoksa)
dism /online /cleanup-image /restorehealth /source:wim:D:sourcesinstall.wim:1 /limitaccess
:: Bileşen deposunu temizle (disk alanı kazanmak için)
dism /online /cleanup-image /startcomponentcleanup
:: DISM log dosyasını kontrol et
type %windir%LogsDISMdism.log | findstr /i "error"
Pratik akış: SFC çalıştır, hata varsa DISM ile kaynaktan onar, sonra SFC’yi tekrar çalıştır. Bu üçlü kombinasyon çoğu sistem dosyası sorununu çözer. Ben genellikle uzak bir sunucuda çalışırken ISO’yu mount edip /source parametresiyle kullanmayı tercih ederim, Windows Update’e bağımlı kalmamak için.
Windows Recovery Environment (WinRE) Yönetimi
WinRE, sistem başlamadığında bile erişebildiğin kurtarma ortamı. CMD’den WinRE ile ilgili birçok işlem yapabilirsin.
:: WinRE durumunu kontrol et
reagentc /info
:: WinRE'yi etkinleştir
reagentc /enable
:: WinRE'yi devre dışı bırak (disk alanı gerektiğinde)
reagentc /disable
:: Sistemi yeniden başlatıp WinRE'ye giriş yap
shutdown /r /o /t 0
:: WinRE'nin konumunu değiştir
reagentc /setreimage /path \?GLOBALROOTdeviceharddisk0partition4RecoveryWindowsRE
:: Push-button reset için hazırlık
reagentc /setosimage /path D:Sources /index 1
Senaryo: Bir sunucuda WinRE partition’ı yanlışlıkla silinmişti. reagentc /info bunu gösterdi. Yeni bir recovery partition oluşturduk, WinRE dosyalarını kopyaladık ve reagentc /setreimage ile yolu gösterdik. Sonra reagentc /enable ile aktive ettik. Tüm süreç CMD üzerinden, sunucuya fiziksel erişim gerekmeden tamamlandı.
Disk ve Partition Kurtarma
Sistem açılmıyorsa ya da bir sürücüyle sorun yaşıyorsan diskpart ve chkdsk kritik rol oynuyor.
:: Sürücü hatalarını tara ve onar (C: için, reboot sonrası çalışır)
chkdsk C: /f /r /x
:: Chkdsk sonuçlarını oku
powershell -Command "Get-WinEvent -LogName Application | Where-Object {$_.Source -eq 'Wininit'} | Select-Object -First 1 | Format-List Message"
:: Diskpart ile partition durumunu kontrol et
diskpart
list disk
select disk 0
list partition
list volume
exit
:: Shadow Copy ile eski dosya versiyonuna erişim
vssadmin list shadows
vssadmin list shadows /for=C:
:: Shadow copy'den dosya kopyalama
mklink /d C:ShadowMount \?GLOBALROOTDeviceHarddiskVolumeShadowCopy3
:: Ardından normal dosya kopyalama yapabilirsin
copy C:ShadowMountUsersAdminDesktopcritical.xlsx C:Recovery
:: İşlem bitince
rmdir C:ShadowMount
Acil Durum Kurtarma Script’i
Bunları tek tek hatırlamak yerine, kritik değişiklikler öncesinde çalıştırabileceğin bir kontrol ve yedek script’i hazırladım:
@echo off
:: Pre-Change Verification and Backup Script
:: Degistirmeden once calistir
echo ========================================
echo Sistem Durumu Kontrolu ve On Yedekleme
echo ========================================
echo.
:: Tarih/saat bilgisi
set TIMESTAMP=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%_%TIME:~0,2%%TIME:~3,2%
set TIMESTAMP=%TIMESTAMP: =0%
set LOGDIR=C:SysLogs%TIMESTAMP%
mkdir %LOGDIR% 2>nul
echo [1/6] Sistem bilgisi aliniyor...
systeminfo > %LOGDIR%systeminfo.txt 2>&1
echo Tamamlandi.
echo [2/6] Servis durumu kayit ediliyor...
sc query type= all state= all > %LOGDIR%services.txt 2>&1
echo Tamamlandi.
echo [3/6] Boot konfigurasyonu yedekleniyor...
bcdedit /enum all > %LOGDIR%bcd_backup.txt 2>&1
echo Tamamlandi.
echo [4/6] Event Log son 24 saat hatalar...
powershell -Command "Get-WinEvent -LogName System -MaxEvents 100 | Where-Object {$_.LevelDisplayName -eq 'Error'} | Export-Csv %LOGDIR%errors.csv -NoTypeInformation" 2>&1
echo Tamamlandi.
echo [5/6] Restore noktasi olusturuluyor...
powershell -Command "Checkpoint-Computer -Description 'PreChange-%TIMESTAMP%' -RestorePointType MODIFY_SETTINGS" 2>&1
echo Tamamlandi.
echo [6/6] Disk durumu kontrol ediliyor...
wmic diskdrive get status,model,size > %LOGDIR%disk_status.txt 2>&1
echo Tamamlandi.
echo.
echo Tum kontroller tamamlandi. Log konumu: %LOGDIR%
echo Restore point olusturuldu: PreChange-%TIMESTAMP%
echo.
pause
Bu script’i değişiklik öncesinde çalıştırma alışkanlığı edinirsen, “geri dönelim” dediğin anda hangi restore point’e döneceğini bilirsin ve o anki sistem durumunun kaydı da elinizde olur.
Sık Karşılaşılan Hatalar ve Çözümleri
“Element not found” – BCDEdit Hatası
Bu hata genellikle BCD deposunun bozulduğunu gösterir.
:: BCD deposunu yedekle
bcdedit /export C:bcd_backup
:: BCD deposunu sıfırla
bcdedit /deletevalue {bootmgr} displaybootmenu
bootrec /rebuildbcd
WinRE “Not Configured” Durumu
:: Kontrol et
reagentc /info
:: WinRE dosyalarını manuel kopyala (ISO mount edilmiş ise)
xcopy D:sourcesrecovery* C:RecoveryWindowsRE /s /h /y
:: Aktive et
reagentc /setreimage /path C:RecoveryWindowsRE
reagentc /enable
SFC “Could not perform the requested operation” Hatası
Bu hatayı genellikle SFC offline modda çalıştırarak aşabilirsin:
:: Mevcut Windows kurulumunun drive letter'ını bul
bcdedit /enum | findstr "osdevice"
:: SFC'yi offline çalıştır (WinPE veya başka bir kurulumdan)
sfc /scannow /offbootdir=C: /offwindir=C:Windows
Proaktif İzleme: Sorun Olmadan Önce Hazırlık
Kurtarma komutlarını bilmek kadar önemli olan, kurtarma senaryosuna hiç düşmemek. Aşağıdaki komutları düzenli çalıştırmak sorunları erken yakalamanı sağlar:
:: Haftalık çalıştırılabilecek sağlık kontrolü
:: Disk durumu
wmic diskdrive get status,model
:: Sistem olayı hataları (son 7 gün)
powershell -Command "Get-WinEvent -LogName System -MaxEvents 500 | Where-Object {$_.LevelDisplayName -eq 'Error' -and $_.TimeCreated -gt (Get-Date).AddDays(-7)} | Group-Object Id | Sort-Object Count -Descending | Select-Object -First 10 | Format-Table"
:: Kritik servislerin durumu
sc query wuauserv
sc query winrm
sc query EventSystem
sc query CryptSvc
:: Shadow copy alanı kontrolü
vssadmin list shadowstorage
Bu kontrolleri görev zamanlayıcıya ekleyip çıktıyı bir log dosyasına yönlendir. Merkezi bir log yönetim sistemi yoksa bile lokal log tutmak, sorun çıktığında ne zamanki değişiklikle ilişkilendirebileceğini gösterir.
Sonuç
CMD tabanlı kurtarma komutları, GUI erişiminin olmadığı veya işe yaramadığı kritik anlarda tek güvencen oluyor. wbadmin, bcdedit, sfc, dism, reagentc ve bootrec komutlarını ve birbirleriyle nasıl kullanıldıklarını bilmek, gerçek bir kriz anında saatlerce zaman kazandırır.
Özellikle şu alışkanlıkları edinmeni öneririm: Büyük değişiklikler öncesinde restore point ve system state yedeği almayı bir prosedür haline getir. wbadmin get versions komutunu düzenli kontrol ederek yedeklerin gerçekten alındığını doğrula. WinRE’nin aktif olduğundan emin ol çünkü sistem çöktüğünde oradan başlayacaksın.
Kurtarma komutlarını ezberlemek değil, mantığını anlamak önemli. Sorun nerede, hangi katmanda – boot mu, dosya sistemi mi, Windows bileşenleri mi – bunu hızlıca teşhis edip doğru aracı kullanabilmek seni gerçek bir kriz anında başarılı kılar. Bu yazıyı tekrar ziyaret edeceğin günler olacak, doğru zamanda doğru komuta ulaşman yeterli.