Windows 7, 8 ve 10: Verilerinizi Sadece Windows'u Kullanarak Düzenli Yedeklemek İçin: RoboCopy
https://7.enpedi.com/2012/08/verilerinizi-sadece-windowsu-kullanarak.html
Bu yazıda size dilediğiniz klasörlerinizi hiçbir 3. parti araç kullanmadan ve 3. parti araçlardan çok daha performanslı bir şekilde nasıl yedekleyebileceğinizi ve bunu nasıl otomatiğe bağlayacağınızı anlatacağım. Bunun içinde RoboCopy adlı Windows aracını kullanacağız...
Bu Komut Satırı bazlı araç varsayılan olarak C:\Windows\System32\Robocopy.exe lokasyonunda bulunur. İlk olarak Windows NT 4.0 Geliştirici Kiti ile birlikte sunulan araç Windows Vista'dan beri varsayılan bir Windows özelliği olarak kullanıcıya sunuluyor. Özellikle sistem yöneticileri bu aracı kullanarak çok kapsamlı yedekleme süreçleri hazırlayabilirler. Ancak ben komutu ev kullanıcılarının ihtyaç duyabileceği seviyede anlatacağım..
Robocopy aracının üstünlükleri ise son derece esnek olması ve çeşitli komut kombinasyonları ile detaylı yedekleme stratejileri belirlemeye olanak sağlaması, çok kanallı (Multi-thread) çalışabilmesi, senkronizasyon olanağı sağlaması sayılabilir...
Bilmemiz gerek ilk şey bu aracın bir klasör yedekleyicisi olduğu. Bu aracı kullanarak dosya yedekleyemezsiniz. Örneklemek gerekirse C:\Icon\Notebook.ico ikon dosyasını yedekleyemezsiniz ama C:\Icon\ klasörünü yedekleyebilirsiniz. Dolayısıyla C:\Icon\ klasörünün içindeki Notebook.ico ikon dosyasını da yedeklemiş olursunuz.
Araç Komut İstemcisi'nden robocopy komutu ile çağrılarak kullanlıyor. Anccak bu şekilde kullanım pek pratik olmayacağı için biz bir script hazırlayarak onunla kullanacağız. Öncelikle ana komutları görelim:
Temel komut
Açarsak yukarıda örnek verdiğim C:\Icon\ klasörünü D:\Yedekler\Icon\ hedefine kopyalamak için kullanacağımız temel komut robocopy C:\Icon D:\Yedekler\Icon şeklinde olacaktır. Eğer kaynak veya hedef adreste boşluk(lar) varsa adresi tırnak işareti içine almayı unutmayın. Örneğin "D:\Yedekler\Icon klasörü" gibi.
Ekstra komutlara gelince altta temel olarak ihtiyacınız olan birkaç komutu veriyorum. Kullanabileceğiniz bütün komutların listesine ise buradan ulaşabilirsiniz. (İngilizce)
Dikkatli okuyucular farketmiştir: /mir komutu ile /e ve /purge komutlarının bileşimi aynı anlama geliyor. Ancak aralarında ufak bir fark var: /mir konutunu kullanırsanız hedef dizinin mevcut olması durumunda güvenlik seçeneklerinin üzerine yazılır oysa /e + /purge komutunu kullanırsanız hedef dizin hali hazırda mevcut olsa bile güvenlik seçenekleri aynen bırakılır ve üzerine yazılmaz.
Girişte de belirttiğim gibi bu komutları kullanmak için bir script hazırlayacağız. Ben örnek olarak C:\ kök dizininde bulunan C:\Icon, C:\Blog ve C:\Portable Programlar klasörüyle kendi kullanıcı hesabım altında bulunan C:\Users\Nonpasaran\Documents\PDF ler klasörlerini yedekleyeceğim.
Bunun için önce kaynak klasörleri bir Metin Belgesi'nde yazıyorum;
Ayrıca performansı arttırmak için işlem kanalı (Multi Thread) sayısını arttırabilirsiniz. Bunun için /mt komutunu kullanacaksınız. Bu komutu girmek işlemi 8 kanallı olarak yürütür. Ama komutu /mt:kanal sayısı şeklinde kullanarak kopyalamanın 2 ila 256 paralel işlemde yapılmasını sağlayabilirsiniz.
Son olarak Komut İstemcisi'nin işlem bittikten sonra kapanmasını istemiyor incelemek istiyorsanız son satıra pause komutunu ekleyin:
Artık çift tıklayarak kullanabilirsiniz. Ancak görünümü pek hoş olmadığı için (Altta soldaki resim) bunu Masaüstü dışında herhangi bir lokasyona taşıyabilir ve ondan sonra kısayol oluşturarak kullanabili,rsiniz. Bu size kısayola simge atama imkanı sağlayacaktır. Kısayolun simgesini nasıl değiştireceğinizi bilmiyorsanız buradan yardım alabilirsiniz. Kısayola atayacağınız simge dilediğiniz bir simge olabilir. Uygun bir simgeniz yoksa simge adresi olarak %SystemRoot%\System32\sdcpl.dll adresini kullanın. Sonuç: (Sağdaki resim)
Bu yedeklemeyi bir takvime veya zamanlamaya bağlamak son derece kolay. Bunun için burada anlattığım gibi oluşturduğunuz script için bir görev oluşturmanız yeterli. Artık dosyalarınız sizin belirlediğiniz bir takvim veya zamanlama ile yedeklenecek;
Eğer /mir komutunu uyguluyorsanız yedekleme lokasyonundan hiçbirşey silmeyin. /mir komutu senkronizasyonu çift taraflı yaptığı için hedef klasörden artık kullanmayacağınız birşeyi silmeniz ilk senkronizasyonda bu dosyayı kaynak klasörden de kurtarılamayacak bir şekilde silecektir.
Dikkatli de olsanız "Tamam ben dikkate edeceğim hedef klasörden hiçbirşey silmeyeceğim" de deseniz tavsiyem dosyalarınız çok önemli ise /mir komutunu kullanmayın. Bu zaten var olan dosyaların üzerine yazaılarak yedeklenmesini, dolayısıyla sürenin uzamasını sağlar ama dosylarınız her zaman garantide olur.
Bu Komut Satırı bazlı araç varsayılan olarak C:\Windows\System32\Robocopy.exe lokasyonunda bulunur. İlk olarak Windows NT 4.0 Geliştirici Kiti ile birlikte sunulan araç Windows Vista'dan beri varsayılan bir Windows özelliği olarak kullanıcıya sunuluyor. Özellikle sistem yöneticileri bu aracı kullanarak çok kapsamlı yedekleme süreçleri hazırlayabilirler. Ancak ben komutu ev kullanıcılarının ihtyaç duyabileceği seviyede anlatacağım..
Robocopy aracının üstünlükleri ise son derece esnek olması ve çeşitli komut kombinasyonları ile detaylı yedekleme stratejileri belirlemeye olanak sağlaması, çok kanallı (Multi-thread) çalışabilmesi, senkronizasyon olanağı sağlaması sayılabilir...
Giriş...
Bilmemiz gerek ilk şey bu aracın bir klasör yedekleyicisi olduğu. Bu aracı kullanarak dosya yedekleyemezsiniz. Örneklemek gerekirse C:\Icon\Notebook.ico ikon dosyasını yedekleyemezsiniz ama C:\Icon\ klasörünü yedekleyebilirsiniz. Dolayısıyla C:\Icon\ klasörünün içindeki Notebook.ico ikon dosyasını da yedeklemiş olursunuz.
Araç Komut İstemcisi'nden robocopy komutu ile çağrılarak kullanlıyor. Anccak bu şekilde kullanım pek pratik olmayacağı için biz bir script hazırlayarak onunla kullanacağız. Öncelikle ana komutları görelim:
Temel komut
robocopy <Kaynak> <Hedef> <Ekstra seçenekler>
şeklinde.Açarsak yukarıda örnek verdiğim C:\Icon\ klasörünü D:\Yedekler\Icon\ hedefine kopyalamak için kullanacağımız temel komut robocopy C:\Icon D:\Yedekler\Icon şeklinde olacaktır. Eğer kaynak veya hedef adreste boşluk(lar) varsa adresi tırnak işareti içine almayı unutmayın. Örneğin "D:\Yedekler\Icon klasörü" gibi.
Ekstra komutlara gelince altta temel olarak ihtiyacınız olan birkaç komutu veriyorum. Kullanabileceğiniz bütün komutların listesine ise buradan ulaşabilirsiniz. (İngilizce)
- /s Bütün alt klasörleri de (Boş klasörler hariç) kopyalar.
- /e Bütün alt klasörleri de (Boş klasörler dahil) kopyalar.
- /z Kopyalamayı herhangi bir sebepten dolayı yarım kaldığında tekrar başlatacak şekilde yapar.
- /b Kopyalamayı yedekleme modunda yapar. Yani bütün dosyaları yedekler.
- /purge Artık kaynakta yer almayan dosyaları hedef klasörden siler.
- /mir Hedefteki dosyaları kontrol ederek sadece yeni dosyaları hedefe kopyalar. (Önemli: Yazının sonundaki uyarıyı mutlaka okuyun)
- /mov Dosyaları taşır ve taşıma bititkten sonra kaynağı siler.
- /256 Dosya isimlerindeki 256 karakter sınırını iptal eder. Sadece 256 karakterden uzun isimlere sahip dosyalarınız varsa kullanın.
- /np Kopyalama sürecinin komut satırında görüntülenmesini engeller.
- /log: Yapılan işlemleri bir günlüğe kaydeder.
Dikkatli okuyucular farketmiştir: /mir komutu ile /e ve /purge komutlarının bileşimi aynı anlama geliyor. Ancak aralarında ufak bir fark var: /mir konutunu kullanırsanız hedef dizinin mevcut olması durumunda güvenlik seçeneklerinin üzerine yazılır oysa /e + /purge komutunu kullanırsanız hedef dizin hali hazırda mevcut olsa bile güvenlik seçenekleri aynen bırakılır ve üzerine yazılmaz.
Uygulama...
Girişte de belirttiğim gibi bu komutları kullanmak için bir script hazırlayacağız. Ben örnek olarak C:\ kök dizininde bulunan C:\Icon, C:\Blog ve C:\Portable Programlar klasörüyle kendi kullanıcı hesabım altında bulunan C:\Users\Nonpasaran\Documents\PDF ler klasörlerini yedekleyeceğim.
Bunun için önce kaynak klasörleri bir Metin Belgesi'nde yazıyorum;
C:\Icon
C:\Blog
"C:\Portable Programlar"
"C:\Users\Nonpasaran\Documents\PDF"
Ardından hedef klasörü giriyorum. Ben hepsini aynı lokasyona yedekliyorum ama siz farklı farklı lokasyonlara yedekleyebilirsiniz;Robocopy C:\Icon E:\Yedekler\Icon
Robocopy C:\Blog E:\Yedekler\Blog
Robocopy "C:\Portable Programlar" "E:\Yedekler\Portable Programlar"
Robocopy "C:\Users\Nonpasaran\Documents\PDF ler" "E:\Yedekler\PDF ler"
Şimdi bütün alt klasörlerin de (Boş klasörleri dahil ederek) kopyalanması için /e ve senkronizasyon yapılması için /mir komutlarını ekliyorum. Komutların anlamını yukarıda açıkladım.Robocopy C:\Icon E:\Yedekler\Icon /e /mir
Robocopy C:\Blog E:\Yedekler\Blog /e /mir
Robocopy "C:\Portable Programlar" "E:\Yedekler\Portable Programlar" /e /mirRobocopy "C:\Users\Nonpasaran\Documents\PDF ler" "E:\Yedekler\PDF ler" /e /mir
Bu temel olarak yeterli ancak isterseniz günlük tutulmasını da sağlayabilirsiniz. Bunun için /log: komutunu kullanıyorum. Bu komut her yedeklemeden sonra bir günlük dosyasının Masaüstünde oluşmasını sağlayacak;Robocopy C:\Icon E:\Yedekler\Icon /e /mir /log:Yedekleme günlüğü.txt
Robocopy C:\Blog E:\Yedekler\Blog /e /mir /log+:Yedekleme günlüğü.txt
Robocopy "C:\Portable Programlar" "E:\Yedekler\Portable Programlar" /e /mir /log+:Yedekleme günlüğü.txt
Robocopy "C:\Users\Nonpasaran\Documents\PDF ler" "E:\Yedekler\PDF ler" /e /mir /log+:Yedekleme günlüğü.txt
Dikkat ettiyseniz ilk /log: komutundan sonra komutu /log+: şeklinde değiştirdim. Bunun sebebi + işaretinin her klasörün log dosyasını ayırması. Oysa + işaretini koymazsam 4 klasörün log dosyası da birbirine eklenir. Ancak bu komut (/log:) sürecin komut istemcisinde görüntülenmesini de engeller. Komut istemcisinde görüntülenmesini istiyorsanız /tee komutunu da ekleyin.Ayrıca performansı arttırmak için işlem kanalı (Multi Thread) sayısını arttırabilirsiniz. Bunun için /mt komutunu kullanacaksınız. Bu komutu girmek işlemi 8 kanallı olarak yürütür. Ama komutu /mt:kanal sayısı şeklinde kullanarak kopyalamanın 2 ila 256 paralel işlemde yapılmasını sağlayabilirsiniz.
Son olarak Komut İstemcisi'nin işlem bittikten sonra kapanmasını istemiyor incelemek istiyorsanız son satıra pause komutunu ekleyin:
Robocopy C:\Icon E:\Yedekler\Icon /e /mir /mt /log:Yedekleme günlüğü.txt
Robocopy C:\Blog E:\Yedekler\Blog /e /mir /mt /log+:Yedekleme günlüğü.txt
Robocopy "C:\Portable Programlar" "E:\Yedekler\Portable Programlar" /e /mir /mt /log+:Yedekleme günlüğü.txt
Robocopy "C:\Users\Nonpasaran\Documents\PDF ler" "E:\Yedekler\PDF ler" /e /mir /mt /log+:Yedekleme günlüğü.txt
Pause
Şimdi komutlarımız hazır. Metin belgesinde Dosya/Farklı Kaydet yolunu izleyerek herhangibirisim.bat olarak kaydederek scripti oluşturun. Ben Yedekle.bat olarak oluşturdum.Artık çift tıklayarak kullanabilirsiniz. Ancak görünümü pek hoş olmadığı için (Altta soldaki resim) bunu Masaüstü dışında herhangi bir lokasyona taşıyabilir ve ondan sonra kısayol oluşturarak kullanabili,rsiniz. Bu size kısayola simge atama imkanı sağlayacaktır. Kısayolun simgesini nasıl değiştireceğinizi bilmiyorsanız buradan yardım alabilirsiniz. Kısayola atayacağınız simge dilediğiniz bir simge olabilir. Uygun bir simgeniz yoksa simge adresi olarak %SystemRoot%\System32\sdcpl.dll adresini kullanın. Sonuç: (Sağdaki resim)
Güncelleme: Eğer her çalıştırdığınızda tam bir yedekleme yapılmasını ama eski yedeğin üzerine yazılmamasını istiyorsanız her yedek aldığınızda yeni bir klasör (Oluşturulduğu tarihin adını taşıyan) oluşturulmasını sağlayabilirsiniz. Örneğin;
- 20151223
- 20151224
Ancak yedekleyeceğiniz dosya boyutu fazlaysa bu işlemin zamanla diskinizi dolduracağını da göz önüne alın. Bu işlemi yapabilmek için oluşturduğunuz bat dosyasının başına şu komutları eklemeniz gerekiyor;
@echo off for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" set "datestamp=%YYYY%%MM%%DD%"
Ayrıca yedekleme klasörünün adresi de şu formatta olması gerek:
- yedekleme_klasörünün_adresi\%datestamp%
Örneklendirmek gerekirse; C sürücüsündeki Enpedi klasörünü D sürücüsündeki Yedek klasörüne her çalıştırdığımda çalıştırdığım günün adını taşıyan bir klasöre ayrı ayrı yedeklenmesi için şöyle bir script oluşturmam gerekiyor;
@echo off for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" set "datestamp=%YYYY%%MM%%DD%" Robocopy C:\Enpedi D:\Yedek\%datestamp% pause
Eğer tam yedekleme değilde sadece değişen dosyaların yeni bir klasöre kopyalanmasını istiyorsanız sonuna /MAXAGE:X anahtarını eklemeniz yeterli. (X) yerine gün sayısı yazacaksınız. Örneğin /MAXAGE:10 yazarsanız sadece son 10 gün içinde oluşturulan yeni dosyalar yeni bir klasöre kopyalanır. Örneğin;
@echo off for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" set "datestamp=%YYYY%%MM%%DD%" Robocopy C:\Enpedi D:\Yedek\%datestamp% /MAXAGE:10 pause
Otomatizasyon;
Bu yedeklemeyi bir takvime veya zamanlamaya bağlamak son derece kolay. Bunun için burada anlattığım gibi oluşturduğunuz script için bir görev oluşturmanız yeterli. Artık dosyalarınız sizin belirlediğiniz bir takvim veya zamanlama ile yedeklenecek;
ÇOK ÖNEMLİ UYARI!
Eğer /mir komutunu uyguluyorsanız yedekleme lokasyonundan hiçbirşey silmeyin. /mir komutu senkronizasyonu çift taraflı yaptığı için hedef klasörden artık kullanmayacağınız birşeyi silmeniz ilk senkronizasyonda bu dosyayı kaynak klasörden de kurtarılamayacak bir şekilde silecektir.
Dikkatli de olsanız "Tamam ben dikkate edeceğim hedef klasörden hiçbirşey silmeyeceğim" de deseniz tavsiyem dosyalarınız çok önemli ise /mir komutunu kullanmayın. Bu zaten var olan dosyaların üzerine yazaılarak yedeklenmesini, dolayısıyla sürenin uzamasını sağlar ama dosylarınız her zaman garantide olur.