Robocopy ile Yedekleme Yapmak
( tarihinde yayınlandı)Bazılarımız için bilgisayarımızdaki dosyalar çok önemlidir. Kimisi yazdığı kodların kimisi word dosyalarının kimisi müzik dosyalarının başına bir şey gelmesinden çekinir. Uzun emekler sonucu oluşan arşivler, uygulama dizinleri ve daha nice dosyaların tek bir darbe yüzünden ölmesi veya bilgisayarın çalınmasıyla her şeyin sıfırlanması ise ürkütücü bir düşüncedir. Bu ipucunda, sizin belirleyeceğiniz klasörleri sizin belirlediğiniz bir sistemle herhangi bir yere doğrudan yedekleyebilmeniz için basit bir erişilebilir uygulama anlatılmıştır.
Bu ipucunda yer alan bilgiler basit, orta ve ileri düzey kullanıcıların aynı anda fayda görmesi amacıyla belli bir düzene göre oluşturulmuştur. Eğer teknik konulardan çok anlamıyorsanız bile kendiniz için bir yedekleme aracı oluşturabilecğeinize garanti veririm.
Robocopy nedir?
Robocopy, Microsoft tarafından geliştirilmiş bir klasör kopyalama aracıdır. Eskiden, çalıştığım kamu kuruluşunun sistemlerini yönettiğim dönemde keşfettiğim bu araç artık sadece Windows Nt tabanlı işletim sistemlerinde çalışmışıyor. Vista da dahil olmak üzere sonrasında yayınlanan bütün Windowslarda bu uygulama yer almaktadır.
Robocopy'nin en büyük özelliği kopyalan klasörlerin damgalama bilgileri ve güvenlik yetkileri ile birlikte kopyalamasıdır. Komut satırı aracılığıyla da kullanılabilir bir uygulama olması ve gelişmiş parametreleri Robocopy'i çekici kılar. Damgalama verilerini dikkate alarak işlem yapması ise yedekleme sürecini hızlandırır. Örneğin beş yüz gb'lik bir diskiniz olsun ve içinde yüzlerce gb dosya bulunsun. Diskin tamamını başka bir diskte yedeklediğinizi de varsayalım. Robocopy, işleme başladığında beş yüz gb veriyi sıfırdan kopyalamaz. Kaynaktaki dosyanın zaman damgasıyla hedefteki kopyanın zaman damgasını kontrol eder ve eğer bir uyuşmazlık varsa dosyayı yeniden kopyalar. Her şey uyuyorsa dosyayı atlar. Başka bir deyişle Robocopy sadece son yedekleme yaptığınız andan sonra oluşturduğunuz veya değişiklik yaptığınız dosyaları yedekler. Her şey aynıysa es geçtiği içinde yedekleme süresi azalır.
Robocopy'nin sadece klasör ve klasörünün içindekileri kopyaladığını özellikle belirtmek istiyorum. Bunun anlamı şu oluyor: Bir klasörü kopyalarken o klasördeki word dosyasını kopyalayabilirsiniz ancak sadece word dosyasını kopyalamak isterseniz robocopy size tepki vermeyecektir.
Yedekleme aracımı nasıl oluştururum?
Bir kör için bu işi yapmanın en pratik yolu robocopy satırlarını bir bat dosyasına kaydetmektir. Şimdi bazı kişiler, "Bat dosyası ve ms-dos komutları ile yapılan kopyalamalar sorun yaratıyor" diyecektir. Ancak tekrar vurgulamak istiyorum: Robocopy, Windows Nt tabanlı sunucuları yöneten sistem yöneticileri için geliştirilmiş olan ve normal ms-dos komutlarından farklı bir mantıkla çalışan bir uygulamadır. Klasik bat dosyaları ve klasik ms-dos satırları ile yapılan kopyalama işlerinde yaşanan sorunlar Robocopy'de ortaya çıkmaz. Windows'un Denetim Masası'nda yer alan "Yedekleme" aracı da Robocopy'i kullanarak işlem yapmaktadır. Başka bir deyişle Denetim Masası'Ndan yedekleme aracı yaratırsanız yine robocopy ve bat dosyaları kullanılacaktır. Ancak Denetim Masası'ndan yapılan klasör yedekleme işlemleri benim pek hoşum agitmediği ve çok cins dertler açtığı için standart bat dosyalarını tavsiye ediyorum.
Robocopy'le yedekleme yaparken temel amacınız, kopyalanacak klasörün aynısının başka bir diskte veya klasörde yaratmak olmalıdır. /purge parametresi sayesinde kaynaktaki klasör ve hedefteki klasör bire bir aynı yapıya kavuşturulur. Yani kaynakta oluşmuş yeni veriler ve değiştirilmiş veriler hedefe aktarılır. Kaynaktan silinmiş klasörler ve dosyalar hedeften de silinir.
Uygulama satırlarını yazmanın temel mantığı
Oluşturacağımız dosyada yazacağımız satırlar belli bir kalıba sahip olacak. O da şu şekilde:
Robocopy "kaynak" "hedef" parametreler
C diskimizde kök dizinde "test" adlı bir klasör yaratın. Bu klasörün içinede birkaç dosya ve birkaç klasör atın. Daha sonra yedeklemeyi nereye yapacağınıza karar verin. D diskiniz varsa orası olabilir. Arzu ediyorsanız flash bellek veya Sd-kart veya ağ üstündeki başka bir cihaz da olabilir. Bu noktada ihtiyacınız olan tek şey yedekleyeceğiniz diskin harf değerini bilmektir. Yedeklemeyi ağ üzerindeki bir bilgisayara yapıyorsanız ağ sürücüsü olarak atadığınız harf geçerli olur. Tabii eğer ağ üstündeki bilgisayar şifre korumalıysa onu deaktif etmelisiniz ki yedekleme yapılsın.
Test klasörünü oluşturduktan sonra bir metin belgesi açarak aşağıdaki satırları yazın. Ekran okuyucunuzda noktalama işaretleri seslendirilmiyorsa tırnak işaretlerini ve eğik çizgi işaretlerini gözden kaçırabilirsiniz. Yazmanız gereken satır şöyle:
robocopy "C:\test" "J:\test" /E /V /R:1 /W:1 /purge
Açtığınız metin belgesinin "Dosya" menüsüne tıklayarak "Farklı kaydet" deyin. dosya türünden "tüm dosyalar"ı seçtikten sonra dosya adına deneme.bat adını vererek kaydedin. Masaüstünde deneme adlı bir bat dosyası oluşmuş durumda olmalı. Dosyayı iki kez tıkladığınızdaysa C sürücüsündeki "test" adlı klasör j sürücüsüne kopyalanacak.
Şimdi C sürücüsündeki test klasörüne gidin. Klasör içine iki tane daha yeni dosya koyun, varolan bir dosyayı da silip deneme.bat dosyasını tekrar çalıştırın. yazdığınız satırdaki /E ve /Purge parametreleri sayesinde kaynaktaki klasör ve hedefteki klasör aynı hâle getirilecektir. Sadece yeni eklediğiniz dosyalar J sürücüsüne aktarılacak, hiçbir değişiklik olmamış eski dosyalar ve klasörlere dokunulmayacak ve C dizinindeki test klasöründen sildiğiniz dosya yapılan eşleştirme doğrultusunda J sürücündeki klasörden de silinerek kaynak ve hedef bire bir hâle getirilecektir.
Peki üstteki satırda hedef bilgisinden sonra yazan parametreler ne anlama geliyor?
Parametre nedir?
Opsiyonlar ve seçenekler anlamına gelen parametre, yapılacak işlemin kurallarını belirlemek için kullanılır. Yukarıda, bir kopyalama işlemi için gerekli olan en uygun parametreleri kullandım. Anlamları ise şöyle:
/E : Kaynakta belirtilen tüm klasörleri ve klasörler içindeki tüm dosyaları kopyala. /E parametresi, boş klasörleri de kopyalama yeteneğine sahiptir.
/V : O an yapılan işlemi ekrana yazdır, atlanan dosyaları göster.
/R:1 : Bu komut, kopyalama işlemi başarısız olan dosyaların kaç kez deneneceğini belirler. İki nokta işaretinden sonra yazılan sayı, kaç kez deneneceğini ifade eder. Eğer oluşturacağınız satıra bu kodu yazmazsanız varsayılan değer bir milyon olduğu için bir milyon kez kopyalamayı denemeden bir sonraki işleme geçmeyecektir.
/W:1 : W parametresi, başarısız olan bir dosyanın kaç saniye sonra tekrar deneneceğini belirler. Eğer bu parametreyi satırınıza eklemezseniz varsayılan değer sıfırdır.
/purge : Bence robocopy'nin en güzel parametrelerinden biri budur. Bu parametre, kaynakta olmayan ancak hedefte hala varlığını sürdüren klasörleri siler. İlk öğrenildiğinde kulağa ürkütücü gelen bu özellik aslında oldukça işlevseldir. Yedekleme işlemininhızlı yapılması için senkronizelik çok önemlidir. Yedeklerinizi hep aynı dizinde tutuyorsanız, bugün Belgelerim klasöründen sildiğiniz bir klasörü yedek alınırken yedeklemenin yapıldığı alandan da otomatik olarak silmek için kullaılan bu parametre sayesinde gerçekle yedek dizininiz aynı olur.
Eğer isterseniz Robocopy sizin belirlediğiniz kriterlere sahip klasörleri veya dosyaları kopyalar veya isteğinize göre kopyalamaz. Bu durum için XD ve XF parametresi kullanılır.
/XD kopyalanmayacak_olan_klasor : Yandaki parametreyi satıra eklediğinizde "kopyalanmayacak_olan_klasor" adlı klasör kopyalama işleminin dışında bırakılır.
/XF *.dosya_uzantisi : Bu parametrede ise kopyalanmamasını istemediğiniz dosya tiplerini belirleyebilirsiniz. Örneğin kopyalanan klasörlerdeki mp3 ve mp4'lerin kopyalanmasını istemiyorsanız şu şekilde yazmalısınız: /XF *.mp3 *.mp4
Eğer sadece belli dosyaların kopyalanmasını engellemek istiyorsanız şu şekilde yazılmalı: /XF kopyalanmasin.doc notlarim.txt
Aynı komutla joker karakterler de yaratabilirsiniz. Örneğin: /XF mp
yazarsanız dosya adında mp olan hiçbir dosya kopyalanmayacaktır. mp3, mp4, mp4a dosyaları kopyalanmaz. Eğer ampul adlı bir doc dosyanız varsa, o dosya adı içinde de mp olduğundan o da kopyalanmayacaktır.
Windows işletim sistemi bazı durumlarda dosyaların kopyalanmasını veya taşınmasını engeller. Örneğin Outlook açıksa, Outlok'a ait .pst uzantılı veri tabanı kopyalanamaz ve işlem başarısız olur. Yukarıda başarısız olan işlemlerin kaç kez deneneceğine dair parametreyi yazmıştım. İşte aşağıdaki parametreler de o an açık olan dosyaları veya engellenen dosyaları kopyalamak için alternatif seçenekler sunar.
/Z: Bu parametre, dosyaların yeniden başlatılabilir versiyonunun kopyalanması için kullanılır.
/B: Bu parametre ise dosyaları yedekleme moduna uygun bir biçimde kopyalar.
/ZB: Kopyalanması başarısız olan dosyaları yedekleme modunda kopyalamayı sağlar. /Z ve /B parametrelerini ayrı kullanmak yerinde direkt /ZB yazmak çok daha işlevsel oluyor. Eğer yedekleme yaparken bir yandan da çalışma adetiniz varsa her satıra /ZB parametresini girmeniz iyi olacaktır. Tabii unutmayın ki bu parametre o an açık olan word dosyasının "gizli dosya" olarak arka planda çalıştırılan dosyayı da kopyalar.
Yukarıda yazdığım parametreler benim kendi bilgisayarımda oluşturduğum yedekleme sisteminde kullandığım parametrelerdir. Ancak emin olun ki Robocopy'nin kabiliyeti bu saydıklarımdan yüz kat daha fazla. İpucunun en son kısmına ileri düzey kullanıcılar için gelişmiş parametre bilgilerini de bir internet sitesinden bulup alıntı olarak koydum. Oluşturduğunuz bat dosyası çalışırken yapılan işlemlerin sonradan kaydedilmesini istiyorsanız ipucunun en altında Log ile alakalı parametreleri kullanabilirsiniz. Ancak logdaki Türkçe karakterler sorunlu oluyor.
Yedekleme işlemi bittiğinde yedeklemenin yapıldığı dizinin otomatik olarak açılmasını istiyorsanız aşağıdaki satırı oluşturduğunuz bat dosyasının en altına kaydetmeniz yeterli.
START /Dpatch J:\
Ben kendi bilgisayarımda iki farklı bat dosyası kullanıyorum. Birinci bat dosyası, verilerimin depolandığı D diskini A'dan Z'ye her şeyiyle harici USB diske yüklüyor. Purge parametresi sayesinde D diskimde ne varsa aynı yapı harici diske de geçiyor. Bire bir yerdekleme yapan bu dosya dışında bir de tarihe göre ve sadece belli klasörleri yedekleyen bir bat dosyam var. Bire bir yedekleme yapan dosya hâliyle silme işlemi de yaptığı için bazen eski dosyalara ulaşmak istediğimde bire bir yedek işime yaramıyor.
%DATE%
Yüzde işaretleri arasında DATE yazdığınızda bat dosyası size o günün tarihi ile bir klasör yaratacaktır. Örneğin hedef olarak "J:\%DATE%\belgelerim" yazarsanız ve o günün tarihi 03.01.2016 ise uygulama size 03.01.2016 adlı klasörün altında belgelerim adlı bir dizin yaratarak kopyalamayı 03.01.2016 klasörü altına yapar. Tarih, her gün değiştiği için yaratılacak klasörün de içi boş olması nedeniyle purge komutu pasif hâle gelir ve dosya silme işlemi de çalışmaz. Bu sayede kendinize günlük veya üç günlük yedeklemeler yapabilir, dosyalarınızı aramak istediğinizdeyse tarihlere göre klasörler içinde gezebilirsiniz.
Uygulamayı otomatikleştirmek ve düzenli olarak çalıştırmak isterseniz, yapmanız gereken tek şey yarattığınız bat dosyasını bir dizine koymak ve Denetim Masası'ndaki Zamanlandırılmış Görevler'den bu bat dosyasının hangi düzene göre çalıştırılacağını belirlemektir. Böylece sistem o an bilgisayar açıksa zamanı geldiğinde doğrudan yedeklemeyi yapar.
Uyarılar
Robocopy'nin pek şakası yoktur. Purge parametresi, hedef ile kaynak arasındaki bire bir görüntüyü sağladığı için disk adının karışması sizi üzecek sonuçlar doğmasına neden olabilir. Bunun anlamı şu oluyor: Bat dosyasında hedef olarak J: yazdıysanız ve birden fazla USB diskiniz, flashınız varsa, yedekleme işlemine başlamadan önce taktığınız sürücünün harfini mutlaka kontrol etmelisiniz.
Örnekleyerek nasıl bir faciaya sebep olacağınızı ifade edeyim. Bat dosyanızda J sürücüsü hedef olarak gözüksün. Sizin de iki diskiniz olsun. Yedeklemeyi normalde flashınıza yaptığınızı da varsayalım. Ancak o an harici diskinizde bilgisayara takılıysa, ve bilgisayara flash bellekten önce takıldığı için Windows haricinize J harfini verdiyse, siz işlemi yaptığınızda Robocopy flasha değil harici diske dalar. Çatı dizin kopyalama işlemi yaptıysanız -ki bunu altta açıkladım- purge komutu nedeniyle harici diskteki verileriniz bire bir görüntü oluşturma çabası doğrultusunda silinecektir.
Size önerim çatı dizin kopyalaması yapmamanız. Yani kaynak kısmına D:\ hedef kısmınaysa J:\ yaparak D diskini komple J'ye almak hoş olmayan sonuçlar doğurabilir. Bu nedenle ilk önce diskinizde bir klasör yapılandırılması oluşturarak düzenli yedeklenmesini istediğiniz verilerinizi belli bir klasöre alın. Yazacağınız satırlarla da bu klasörleri yedekleyin.
İleri düzey kullanıcılar için Robocopy'Nin diğer parametreleri aşağıdaki gibidir. Ayrıca eğer istenirse robocopy'nin kendisine Windows dizini altındaki system32 klasöründen de ulaşılabilir. Ancak bat dosyası yarattığınız takdirde satırın başına yazdığınız Robocopy ifadesi zaten o uygulamayı tetiklemektedir.
Diğer kopyalama parametreleri:
/S : Alt dizinleri kopyalar ancak /E parametresiyle yapılan boş dizinleri kopyalama işlemi /S parametresinde yapılmaz. Başka bir deyişle boş klasörler kopyalanmaz.
/LEV:n : kaynak dizin ağacının yalnızca en üst n düzeyini kopyala.
/EFSRAW : tüm şifreli dosyaları EFS RAW modunda kopyala.
/COPY:kopyabayrak : Bu parametre ileri düzey sistem yöneticileri için uygundur. Başlangıç ve orta seviyede bir kullanıcıysanız hiç bulaşmayın derim. İşin özü, parametreye verilen değerlerle sistemdeki belli tarih aralığındaki, belli kullanıcı tarafından oluşturulmuş dosyaları, belli yetki seviyesindeki dosyaları ayıklamak için kullanılır. Sistem yöneticileri bu parametre sayesinde ağın tamamında belli kişilere ait dosyaları toparlamak ya da belli kriterlerdeki dosyaları ayırmak için bu parametreyi kullanır. Değerler şöyledir: (varsayılan:/COPY : D AT).(kopyabayrak: D=veri, A=öznitelikler, T=zaman damgası).(S=güvenlik=NTFS ACL'leri, O=sahip bilgisi, U=denetleme bilgisi)
/DCOPY:T :: dizin zaman damgalarını kopyala.
/SEC :: dosyaları güvenlikle birlikte kopyala (/COPY : D ATS ile aynı).
/COPYALL :: tüm dosya bilgilerini kopyala (/COPY : D ATSOU ile aynı).
/NOCOPY :: hiçbir dosya bilgisini kopyalama (/PURGE ile kullanışlıdır).
/SECFIX :: tüm dosyalarda güvenliği düzelt; atlanan dosyalarda bile.
/TIMFIX :: tüm dosyalarda dosya saatlerini düzelt; atlanan dosyalarda bile.
/PURGE :: artık kaynakta bulunmayan hedef dizinleri/dosyaları sil.
/MIR :: dizin ağacını yansıt (/E ve /PURGE birleşimi ile aynı).
/MOV :: dosyaları taşı (kopyaladıktan sonra kaynaktan sil).
/MOVE :: dosya ve dizinleri taşı (kopyaladıktan sonra kaynaktan sil).
/A+:[RASHCNET] :: kopyalanan dosyalara belirtilen öznitelikleri ver.
/A-:[RASHCNET] :: kopyalanan dosyalardan belirtilen öznitelikleri kaldır.
/CREATE :: yalnızca dizin ağacını ve uzunluğu sıfır olan dosyaları oluştur.
/FAT :: hedef dosyaları yalnızca 8.3 FAT dosya adları kullanarak oluştur.
/256 :: çok uzun yol (> 256 karakter) desteğini kapat.
/MON:n :: kaynağı izle; n taneden fazla değişiklik olduğundan yeniden çalış.
/MOT : D :: kaynağı izle; d dakika içinde değişiklik olursa yeniden çalış.
/RH:ssdd-ssdd :: çalışma saatleri; yeni kopyaların başlatılabileceği saatler.
/PF :: çalışma saatlerini dosya (geçiş değil) bazında denetle.
/IPG:n :: paketler arası boşluk (ms); yavaş hatlarda bant genişliğini boşaltmak için.
/SL:: sembolik bağlantıları hedefe kopyalar.
/MT[:n] :: n iş parçacığı olan çok iş parçacıklı kopya oluşturun (varsayılan 8).n, en az 1, en çok 128 olmalıdır.Bu seçenek /IPG ve /EFSRAW seçenekleriyle uyumlu değildir.Daha performans için çıktıyı /LOG seçeneğiyle yeniden yönlendirin.
Dosya Seçimi Seçenekleri:
/A :: yalnızca arşiv özniteliği ayarlı olan dosyaları kopyala.
/M :: yalnızca arşiv özniteliği olan dosyaları kopyala ve özniteliği sıfırla.
/IA:[RASHCNETO] :: yalnızca belirtilen özniteliklerden herhangi birine sahip olan dosyaları dahil et.
/XA:[RASHCNETO] :: belirtilen özniteliklerden herhangi birine sahip olan dosyaları dışta tut.
/XF dosya [dosya]… :: verilen adlar/yollar/joker karakterler ile eşleşen dosyaları dışta tut./XD dizin [dizin]… :: verilen adlar/yollar ile eşleşen dizinleri dışta tut.
/XC :: değişen dosyaları dışta tut.
/XN :: yeni dosyaları dışta tut.
/XO :: eski dosyaları dışta tut.
/XX :: fazlalık dosya ve dizinleri dışta tut.
/XL :: yalnız dosya ve dizinleri dışta tut.
/IS :: aynı dosyaları dahil et.
/IT :: ayarlanmış dosyaları dahil et.
/MAX:n :: en büyük dosya boyutu; n bayttan büyük dosyaları dışta tut.
/MIN:n :: en küçük dosya boyutu; n bayttan küçük dosyaları dışta tut.
/MAXAGE:n :: en çok dosya yaşı; n gün/tarihten eski dosyaları dışta tut.
/MINAGE:n :: en az dosya yaşı; n gün/tarihten yeni dosyaları dışta tut.
/MAXLAD:n :: en çok son erişim tarihi; n'den bu yana kullanılmayan dosyaları dışta tut.
/MINLAD:n :: en az son erişim tarihi; n'den bu yana kullanılan dosyaları dışta tut.(n 1900 ise n = n gündür, değilse n = YYYYAAGG biçiminde tarihtir).
/XJ :: birleşim noktalarını dışta tut. (normalde varsayılan olarak dahildir).
/FFT :: dosya zamanlarını FAT kabul et (2 saniye kesinliğinde).
/DST :: bir saatlik DST saat farklarını dengele.
/XJD :: dizinler için birleşim noktalarını dışta tut.
/XJF :: dosyalar için birleşim noktalarını dışta tut.
Yeniden Deneme Seçenekleri:
/R:n :: başarısız kopyalamalarda yeniden deneme sayısı; varsayılan: 1 milyon.
/W:n :: Yeniden denemeler arasında bekleme süresi; varsayılan: 30 saniye.
/REG :: /R:n ve /W:n değerlerini varsayılan ayar olarak kayıt defterine kaydet.
/TBD :: paylaşım adlarının tanımlanmasını bekle (yeniden deneme hatası 67).
Günlük Seçenekleri:
/L :: Yalnızca listele; dosyaları kopyalama, zaman damgası vurma ve silme.
/X :: yalnızca seçili olanları değil tüm fazla dosyaları rapor et.
/V :: ayrıntılı çıktı üret; atlanan dosyaları göster.
/TS :: çıktıda kaynak dosya zaman damgalarını göster.
/FP :: çıktıda dosyaların tam yol adını göster.
/BYTES :: boyutları bayt olarak yaz.
/NS :: boyut yok; dosya boyutlarını günlüğe yazma.
/NC :: sınıf yok; dosya sınıflarını günlüğe yazma.
/NFL :: dosya listesi yok; dosya adlarını günlüğe yazma.
/NDL :: dizin listesi yok; dizin adlarını günlüğe yazma.
/NP :: ilerleme yok; kopyalanan yüzdeyi görüntüleme.
/ETA :: kopyalanan dosyalar için tahmini varış saatini göster.
/LOG : D osya :: durumu günlük dosyasına yaz (varolan günlüğün üzerine yaz).
/LOG+ : D osya :: durumu günlük dosyasına yaz (varolan günlüğün sonuna ekle).
/UNILOG : D osya :: durumu günlük dosyasına Unicode olarak yaz (varolan günlüğün üzerine yaz).
/UNILOG+ : D osya :: durumu günlük dosyasına Unicode olarak yaz (varolan günlüğün sonuna ekle).
/TEE :: çıktıyı hem günlük dosyasına hem de konsol penceresine gönder.
/NJH :: iş üstbilgisi yok.
/NJS :: iş özeti yok.
/UNICODE :: durumu Unicode olarak yaz.
İş Seçenekleri:
/JOB:işadı :: parametreleri iş dosyasından al.
/SAVE:işadı :: parametreleri adı verilen iş dosyasına kaydet
/QUIT :: komut satırını işledikten sonra çık (parametreleri görüntülemek için).
/NOSD :: kaynak dizin belirtilmedi.
/NODD :: hedef dizin belirtilmedi.
/IF :: aşağıdaki dosyaları dahil et.
(Yorum yazmak için tıklayın)
Ekleyen: Murat Kefeli | (Şikâyet et)
Bu ipucunda yer alan bilgiler basit, orta ve ileri düzey kullanıcıların aynı anda fayda görmesi amacıyla belli bir düzene göre oluşturulmuştur. Eğer teknik konulardan çok anlamıyorsanız bile kendiniz için bir yedekleme aracı oluşturabilecğeinize garanti veririm.
Robocopy nedir?
Robocopy, Microsoft tarafından geliştirilmiş bir klasör kopyalama aracıdır. Eskiden, çalıştığım kamu kuruluşunun sistemlerini yönettiğim dönemde keşfettiğim bu araç artık sadece Windows Nt tabanlı işletim sistemlerinde çalışmışıyor. Vista da dahil olmak üzere sonrasında yayınlanan bütün Windowslarda bu uygulama yer almaktadır.
Robocopy'nin en büyük özelliği kopyalan klasörlerin damgalama bilgileri ve güvenlik yetkileri ile birlikte kopyalamasıdır. Komut satırı aracılığıyla da kullanılabilir bir uygulama olması ve gelişmiş parametreleri Robocopy'i çekici kılar. Damgalama verilerini dikkate alarak işlem yapması ise yedekleme sürecini hızlandırır. Örneğin beş yüz gb'lik bir diskiniz olsun ve içinde yüzlerce gb dosya bulunsun. Diskin tamamını başka bir diskte yedeklediğinizi de varsayalım. Robocopy, işleme başladığında beş yüz gb veriyi sıfırdan kopyalamaz. Kaynaktaki dosyanın zaman damgasıyla hedefteki kopyanın zaman damgasını kontrol eder ve eğer bir uyuşmazlık varsa dosyayı yeniden kopyalar. Her şey uyuyorsa dosyayı atlar. Başka bir deyişle Robocopy sadece son yedekleme yaptığınız andan sonra oluşturduğunuz veya değişiklik yaptığınız dosyaları yedekler. Her şey aynıysa es geçtiği içinde yedekleme süresi azalır.
Robocopy'nin sadece klasör ve klasörünün içindekileri kopyaladığını özellikle belirtmek istiyorum. Bunun anlamı şu oluyor: Bir klasörü kopyalarken o klasördeki word dosyasını kopyalayabilirsiniz ancak sadece word dosyasını kopyalamak isterseniz robocopy size tepki vermeyecektir.
Yedekleme aracımı nasıl oluştururum?
Bir kör için bu işi yapmanın en pratik yolu robocopy satırlarını bir bat dosyasına kaydetmektir. Şimdi bazı kişiler, "Bat dosyası ve ms-dos komutları ile yapılan kopyalamalar sorun yaratıyor" diyecektir. Ancak tekrar vurgulamak istiyorum: Robocopy, Windows Nt tabanlı sunucuları yöneten sistem yöneticileri için geliştirilmiş olan ve normal ms-dos komutlarından farklı bir mantıkla çalışan bir uygulamadır. Klasik bat dosyaları ve klasik ms-dos satırları ile yapılan kopyalama işlerinde yaşanan sorunlar Robocopy'de ortaya çıkmaz. Windows'un Denetim Masası'nda yer alan "Yedekleme" aracı da Robocopy'i kullanarak işlem yapmaktadır. Başka bir deyişle Denetim Masası'Ndan yedekleme aracı yaratırsanız yine robocopy ve bat dosyaları kullanılacaktır. Ancak Denetim Masası'ndan yapılan klasör yedekleme işlemleri benim pek hoşum agitmediği ve çok cins dertler açtığı için standart bat dosyalarını tavsiye ediyorum.
Robocopy'le yedekleme yaparken temel amacınız, kopyalanacak klasörün aynısının başka bir diskte veya klasörde yaratmak olmalıdır. /purge parametresi sayesinde kaynaktaki klasör ve hedefteki klasör bire bir aynı yapıya kavuşturulur. Yani kaynakta oluşmuş yeni veriler ve değiştirilmiş veriler hedefe aktarılır. Kaynaktan silinmiş klasörler ve dosyalar hedeften de silinir.
Uygulama satırlarını yazmanın temel mantığı
Oluşturacağımız dosyada yazacağımız satırlar belli bir kalıba sahip olacak. O da şu şekilde:
Robocopy "kaynak" "hedef" parametreler
C diskimizde kök dizinde "test" adlı bir klasör yaratın. Bu klasörün içinede birkaç dosya ve birkaç klasör atın. Daha sonra yedeklemeyi nereye yapacağınıza karar verin. D diskiniz varsa orası olabilir. Arzu ediyorsanız flash bellek veya Sd-kart veya ağ üstündeki başka bir cihaz da olabilir. Bu noktada ihtiyacınız olan tek şey yedekleyeceğiniz diskin harf değerini bilmektir. Yedeklemeyi ağ üzerindeki bir bilgisayara yapıyorsanız ağ sürücüsü olarak atadığınız harf geçerli olur. Tabii eğer ağ üstündeki bilgisayar şifre korumalıysa onu deaktif etmelisiniz ki yedekleme yapılsın.
Test klasörünü oluşturduktan sonra bir metin belgesi açarak aşağıdaki satırları yazın. Ekran okuyucunuzda noktalama işaretleri seslendirilmiyorsa tırnak işaretlerini ve eğik çizgi işaretlerini gözden kaçırabilirsiniz. Yazmanız gereken satır şöyle:
robocopy "C:\test" "J:\test" /E /V /R:1 /W:1 /purge
Açtığınız metin belgesinin "Dosya" menüsüne tıklayarak "Farklı kaydet" deyin. dosya türünden "tüm dosyalar"ı seçtikten sonra dosya adına deneme.bat adını vererek kaydedin. Masaüstünde deneme adlı bir bat dosyası oluşmuş durumda olmalı. Dosyayı iki kez tıkladığınızdaysa C sürücüsündeki "test" adlı klasör j sürücüsüne kopyalanacak.
Şimdi C sürücüsündeki test klasörüne gidin. Klasör içine iki tane daha yeni dosya koyun, varolan bir dosyayı da silip deneme.bat dosyasını tekrar çalıştırın. yazdığınız satırdaki /E ve /Purge parametreleri sayesinde kaynaktaki klasör ve hedefteki klasör aynı hâle getirilecektir. Sadece yeni eklediğiniz dosyalar J sürücüsüne aktarılacak, hiçbir değişiklik olmamış eski dosyalar ve klasörlere dokunulmayacak ve C dizinindeki test klasöründen sildiğiniz dosya yapılan eşleştirme doğrultusunda J sürücündeki klasörden de silinerek kaynak ve hedef bire bir hâle getirilecektir.
Peki üstteki satırda hedef bilgisinden sonra yazan parametreler ne anlama geliyor?
Parametre nedir?
Opsiyonlar ve seçenekler anlamına gelen parametre, yapılacak işlemin kurallarını belirlemek için kullanılır. Yukarıda, bir kopyalama işlemi için gerekli olan en uygun parametreleri kullandım. Anlamları ise şöyle:
/E : Kaynakta belirtilen tüm klasörleri ve klasörler içindeki tüm dosyaları kopyala. /E parametresi, boş klasörleri de kopyalama yeteneğine sahiptir.
/V : O an yapılan işlemi ekrana yazdır, atlanan dosyaları göster.
/R:1 : Bu komut, kopyalama işlemi başarısız olan dosyaların kaç kez deneneceğini belirler. İki nokta işaretinden sonra yazılan sayı, kaç kez deneneceğini ifade eder. Eğer oluşturacağınız satıra bu kodu yazmazsanız varsayılan değer bir milyon olduğu için bir milyon kez kopyalamayı denemeden bir sonraki işleme geçmeyecektir.
/W:1 : W parametresi, başarısız olan bir dosyanın kaç saniye sonra tekrar deneneceğini belirler. Eğer bu parametreyi satırınıza eklemezseniz varsayılan değer sıfırdır.
/purge : Bence robocopy'nin en güzel parametrelerinden biri budur. Bu parametre, kaynakta olmayan ancak hedefte hala varlığını sürdüren klasörleri siler. İlk öğrenildiğinde kulağa ürkütücü gelen bu özellik aslında oldukça işlevseldir. Yedekleme işlemininhızlı yapılması için senkronizelik çok önemlidir. Yedeklerinizi hep aynı dizinde tutuyorsanız, bugün Belgelerim klasöründen sildiğiniz bir klasörü yedek alınırken yedeklemenin yapıldığı alandan da otomatik olarak silmek için kullaılan bu parametre sayesinde gerçekle yedek dizininiz aynı olur.
Eğer isterseniz Robocopy sizin belirlediğiniz kriterlere sahip klasörleri veya dosyaları kopyalar veya isteğinize göre kopyalamaz. Bu durum için XD ve XF parametresi kullanılır.
/XD kopyalanmayacak_olan_klasor : Yandaki parametreyi satıra eklediğinizde "kopyalanmayacak_olan_klasor" adlı klasör kopyalama işleminin dışında bırakılır.
/XF *.dosya_uzantisi : Bu parametrede ise kopyalanmamasını istemediğiniz dosya tiplerini belirleyebilirsiniz. Örneğin kopyalanan klasörlerdeki mp3 ve mp4'lerin kopyalanmasını istemiyorsanız şu şekilde yazmalısınız: /XF *.mp3 *.mp4
Eğer sadece belli dosyaların kopyalanmasını engellemek istiyorsanız şu şekilde yazılmalı: /XF kopyalanmasin.doc notlarim.txt
Aynı komutla joker karakterler de yaratabilirsiniz. Örneğin: /XF mp
yazarsanız dosya adında mp olan hiçbir dosya kopyalanmayacaktır. mp3, mp4, mp4a dosyaları kopyalanmaz. Eğer ampul adlı bir doc dosyanız varsa, o dosya adı içinde de mp olduğundan o da kopyalanmayacaktır.
Windows işletim sistemi bazı durumlarda dosyaların kopyalanmasını veya taşınmasını engeller. Örneğin Outlook açıksa, Outlok'a ait .pst uzantılı veri tabanı kopyalanamaz ve işlem başarısız olur. Yukarıda başarısız olan işlemlerin kaç kez deneneceğine dair parametreyi yazmıştım. İşte aşağıdaki parametreler de o an açık olan dosyaları veya engellenen dosyaları kopyalamak için alternatif seçenekler sunar.
/Z: Bu parametre, dosyaların yeniden başlatılabilir versiyonunun kopyalanması için kullanılır.
/B: Bu parametre ise dosyaları yedekleme moduna uygun bir biçimde kopyalar.
/ZB: Kopyalanması başarısız olan dosyaları yedekleme modunda kopyalamayı sağlar. /Z ve /B parametrelerini ayrı kullanmak yerinde direkt /ZB yazmak çok daha işlevsel oluyor. Eğer yedekleme yaparken bir yandan da çalışma adetiniz varsa her satıra /ZB parametresini girmeniz iyi olacaktır. Tabii unutmayın ki bu parametre o an açık olan word dosyasının "gizli dosya" olarak arka planda çalıştırılan dosyayı da kopyalar.
Yukarıda yazdığım parametreler benim kendi bilgisayarımda oluşturduğum yedekleme sisteminde kullandığım parametrelerdir. Ancak emin olun ki Robocopy'nin kabiliyeti bu saydıklarımdan yüz kat daha fazla. İpucunun en son kısmına ileri düzey kullanıcılar için gelişmiş parametre bilgilerini de bir internet sitesinden bulup alıntı olarak koydum. Oluşturduğunuz bat dosyası çalışırken yapılan işlemlerin sonradan kaydedilmesini istiyorsanız ipucunun en altında Log ile alakalı parametreleri kullanabilirsiniz. Ancak logdaki Türkçe karakterler sorunlu oluyor.
Yedekleme işlemi bittiğinde yedeklemenin yapıldığı dizinin otomatik olarak açılmasını istiyorsanız aşağıdaki satırı oluşturduğunuz bat dosyasının en altına kaydetmeniz yeterli.
START /Dpatch J:\
Ben kendi bilgisayarımda iki farklı bat dosyası kullanıyorum. Birinci bat dosyası, verilerimin depolandığı D diskini A'dan Z'ye her şeyiyle harici USB diske yüklüyor. Purge parametresi sayesinde D diskimde ne varsa aynı yapı harici diske de geçiyor. Bire bir yerdekleme yapan bu dosya dışında bir de tarihe göre ve sadece belli klasörleri yedekleyen bir bat dosyam var. Bire bir yedekleme yapan dosya hâliyle silme işlemi de yaptığı için bazen eski dosyalara ulaşmak istediğimde bire bir yedek işime yaramıyor.
%DATE%
Yüzde işaretleri arasında DATE yazdığınızda bat dosyası size o günün tarihi ile bir klasör yaratacaktır. Örneğin hedef olarak "J:\%DATE%\belgelerim" yazarsanız ve o günün tarihi 03.01.2016 ise uygulama size 03.01.2016 adlı klasörün altında belgelerim adlı bir dizin yaratarak kopyalamayı 03.01.2016 klasörü altına yapar. Tarih, her gün değiştiği için yaratılacak klasörün de içi boş olması nedeniyle purge komutu pasif hâle gelir ve dosya silme işlemi de çalışmaz. Bu sayede kendinize günlük veya üç günlük yedeklemeler yapabilir, dosyalarınızı aramak istediğinizdeyse tarihlere göre klasörler içinde gezebilirsiniz.
Uygulamayı otomatikleştirmek ve düzenli olarak çalıştırmak isterseniz, yapmanız gereken tek şey yarattığınız bat dosyasını bir dizine koymak ve Denetim Masası'ndaki Zamanlandırılmış Görevler'den bu bat dosyasının hangi düzene göre çalıştırılacağını belirlemektir. Böylece sistem o an bilgisayar açıksa zamanı geldiğinde doğrudan yedeklemeyi yapar.
Uyarılar
Robocopy'nin pek şakası yoktur. Purge parametresi, hedef ile kaynak arasındaki bire bir görüntüyü sağladığı için disk adının karışması sizi üzecek sonuçlar doğmasına neden olabilir. Bunun anlamı şu oluyor: Bat dosyasında hedef olarak J: yazdıysanız ve birden fazla USB diskiniz, flashınız varsa, yedekleme işlemine başlamadan önce taktığınız sürücünün harfini mutlaka kontrol etmelisiniz.
Örnekleyerek nasıl bir faciaya sebep olacağınızı ifade edeyim. Bat dosyanızda J sürücüsü hedef olarak gözüksün. Sizin de iki diskiniz olsun. Yedeklemeyi normalde flashınıza yaptığınızı da varsayalım. Ancak o an harici diskinizde bilgisayara takılıysa, ve bilgisayara flash bellekten önce takıldığı için Windows haricinize J harfini verdiyse, siz işlemi yaptığınızda Robocopy flasha değil harici diske dalar. Çatı dizin kopyalama işlemi yaptıysanız -ki bunu altta açıkladım- purge komutu nedeniyle harici diskteki verileriniz bire bir görüntü oluşturma çabası doğrultusunda silinecektir.
Size önerim çatı dizin kopyalaması yapmamanız. Yani kaynak kısmına D:\ hedef kısmınaysa J:\ yaparak D diskini komple J'ye almak hoş olmayan sonuçlar doğurabilir. Bu nedenle ilk önce diskinizde bir klasör yapılandırılması oluşturarak düzenli yedeklenmesini istediğiniz verilerinizi belli bir klasöre alın. Yazacağınız satırlarla da bu klasörleri yedekleyin.
İleri düzey kullanıcılar için Robocopy'Nin diğer parametreleri aşağıdaki gibidir. Ayrıca eğer istenirse robocopy'nin kendisine Windows dizini altındaki system32 klasöründen de ulaşılabilir. Ancak bat dosyası yarattığınız takdirde satırın başına yazdığınız Robocopy ifadesi zaten o uygulamayı tetiklemektedir.
Diğer kopyalama parametreleri:
/S : Alt dizinleri kopyalar ancak /E parametresiyle yapılan boş dizinleri kopyalama işlemi /S parametresinde yapılmaz. Başka bir deyişle boş klasörler kopyalanmaz.
/LEV:n : kaynak dizin ağacının yalnızca en üst n düzeyini kopyala.
/EFSRAW : tüm şifreli dosyaları EFS RAW modunda kopyala.
/COPY:kopyabayrak : Bu parametre ileri düzey sistem yöneticileri için uygundur. Başlangıç ve orta seviyede bir kullanıcıysanız hiç bulaşmayın derim. İşin özü, parametreye verilen değerlerle sistemdeki belli tarih aralığındaki, belli kullanıcı tarafından oluşturulmuş dosyaları, belli yetki seviyesindeki dosyaları ayıklamak için kullanılır. Sistem yöneticileri bu parametre sayesinde ağın tamamında belli kişilere ait dosyaları toparlamak ya da belli kriterlerdeki dosyaları ayırmak için bu parametreyi kullanır. Değerler şöyledir: (varsayılan:/COPY : D AT).(kopyabayrak: D=veri, A=öznitelikler, T=zaman damgası).(S=güvenlik=NTFS ACL'leri, O=sahip bilgisi, U=denetleme bilgisi)
/DCOPY:T :: dizin zaman damgalarını kopyala.
/SEC :: dosyaları güvenlikle birlikte kopyala (/COPY : D ATS ile aynı).
/COPYALL :: tüm dosya bilgilerini kopyala (/COPY : D ATSOU ile aynı).
/NOCOPY :: hiçbir dosya bilgisini kopyalama (/PURGE ile kullanışlıdır).
/SECFIX :: tüm dosyalarda güvenliği düzelt; atlanan dosyalarda bile.
/TIMFIX :: tüm dosyalarda dosya saatlerini düzelt; atlanan dosyalarda bile.
/PURGE :: artık kaynakta bulunmayan hedef dizinleri/dosyaları sil.
/MIR :: dizin ağacını yansıt (/E ve /PURGE birleşimi ile aynı).
/MOV :: dosyaları taşı (kopyaladıktan sonra kaynaktan sil).
/MOVE :: dosya ve dizinleri taşı (kopyaladıktan sonra kaynaktan sil).
/A+:[RASHCNET] :: kopyalanan dosyalara belirtilen öznitelikleri ver.
/A-:[RASHCNET] :: kopyalanan dosyalardan belirtilen öznitelikleri kaldır.
/CREATE :: yalnızca dizin ağacını ve uzunluğu sıfır olan dosyaları oluştur.
/FAT :: hedef dosyaları yalnızca 8.3 FAT dosya adları kullanarak oluştur.
/256 :: çok uzun yol (> 256 karakter) desteğini kapat.
/MON:n :: kaynağı izle; n taneden fazla değişiklik olduğundan yeniden çalış.
/MOT : D :: kaynağı izle; d dakika içinde değişiklik olursa yeniden çalış.
/RH:ssdd-ssdd :: çalışma saatleri; yeni kopyaların başlatılabileceği saatler.
/PF :: çalışma saatlerini dosya (geçiş değil) bazında denetle.
/IPG:n :: paketler arası boşluk (ms); yavaş hatlarda bant genişliğini boşaltmak için.
/SL:: sembolik bağlantıları hedefe kopyalar.
/MT[:n] :: n iş parçacığı olan çok iş parçacıklı kopya oluşturun (varsayılan 8).n, en az 1, en çok 128 olmalıdır.Bu seçenek /IPG ve /EFSRAW seçenekleriyle uyumlu değildir.Daha performans için çıktıyı /LOG seçeneğiyle yeniden yönlendirin.
Dosya Seçimi Seçenekleri:
/A :: yalnızca arşiv özniteliği ayarlı olan dosyaları kopyala.
/M :: yalnızca arşiv özniteliği olan dosyaları kopyala ve özniteliği sıfırla.
/IA:[RASHCNETO] :: yalnızca belirtilen özniteliklerden herhangi birine sahip olan dosyaları dahil et.
/XA:[RASHCNETO] :: belirtilen özniteliklerden herhangi birine sahip olan dosyaları dışta tut.
/XF dosya [dosya]… :: verilen adlar/yollar/joker karakterler ile eşleşen dosyaları dışta tut./XD dizin [dizin]… :: verilen adlar/yollar ile eşleşen dizinleri dışta tut.
/XC :: değişen dosyaları dışta tut.
/XN :: yeni dosyaları dışta tut.
/XO :: eski dosyaları dışta tut.
/XX :: fazlalık dosya ve dizinleri dışta tut.
/XL :: yalnız dosya ve dizinleri dışta tut.
/IS :: aynı dosyaları dahil et.
/IT :: ayarlanmış dosyaları dahil et.
/MAX:n :: en büyük dosya boyutu; n bayttan büyük dosyaları dışta tut.
/MIN:n :: en küçük dosya boyutu; n bayttan küçük dosyaları dışta tut.
/MAXAGE:n :: en çok dosya yaşı; n gün/tarihten eski dosyaları dışta tut.
/MINAGE:n :: en az dosya yaşı; n gün/tarihten yeni dosyaları dışta tut.
/MAXLAD:n :: en çok son erişim tarihi; n'den bu yana kullanılmayan dosyaları dışta tut.
/MINLAD:n :: en az son erişim tarihi; n'den bu yana kullanılan dosyaları dışta tut.(n 1900 ise n = n gündür, değilse n = YYYYAAGG biçiminde tarihtir).
/XJ :: birleşim noktalarını dışta tut. (normalde varsayılan olarak dahildir).
/FFT :: dosya zamanlarını FAT kabul et (2 saniye kesinliğinde).
/DST :: bir saatlik DST saat farklarını dengele.
/XJD :: dizinler için birleşim noktalarını dışta tut.
/XJF :: dosyalar için birleşim noktalarını dışta tut.
Yeniden Deneme Seçenekleri:
/R:n :: başarısız kopyalamalarda yeniden deneme sayısı; varsayılan: 1 milyon.
/W:n :: Yeniden denemeler arasında bekleme süresi; varsayılan: 30 saniye.
/REG :: /R:n ve /W:n değerlerini varsayılan ayar olarak kayıt defterine kaydet.
/TBD :: paylaşım adlarının tanımlanmasını bekle (yeniden deneme hatası 67).
Günlük Seçenekleri:
/L :: Yalnızca listele; dosyaları kopyalama, zaman damgası vurma ve silme.
/X :: yalnızca seçili olanları değil tüm fazla dosyaları rapor et.
/V :: ayrıntılı çıktı üret; atlanan dosyaları göster.
/TS :: çıktıda kaynak dosya zaman damgalarını göster.
/FP :: çıktıda dosyaların tam yol adını göster.
/BYTES :: boyutları bayt olarak yaz.
/NS :: boyut yok; dosya boyutlarını günlüğe yazma.
/NC :: sınıf yok; dosya sınıflarını günlüğe yazma.
/NFL :: dosya listesi yok; dosya adlarını günlüğe yazma.
/NDL :: dizin listesi yok; dizin adlarını günlüğe yazma.
/NP :: ilerleme yok; kopyalanan yüzdeyi görüntüleme.
/ETA :: kopyalanan dosyalar için tahmini varış saatini göster.
/LOG : D osya :: durumu günlük dosyasına yaz (varolan günlüğün üzerine yaz).
/LOG+ : D osya :: durumu günlük dosyasına yaz (varolan günlüğün sonuna ekle).
/UNILOG : D osya :: durumu günlük dosyasına Unicode olarak yaz (varolan günlüğün üzerine yaz).
/UNILOG+ : D osya :: durumu günlük dosyasına Unicode olarak yaz (varolan günlüğün sonuna ekle).
/TEE :: çıktıyı hem günlük dosyasına hem de konsol penceresine gönder.
/NJH :: iş üstbilgisi yok.
/NJS :: iş özeti yok.
/UNICODE :: durumu Unicode olarak yaz.
İş Seçenekleri:
/JOB:işadı :: parametreleri iş dosyasından al.
/SAVE:işadı :: parametreleri adı verilen iş dosyasına kaydet
/QUIT :: komut satırını işledikten sonra çık (parametreleri görüntülemek için).
/NOSD :: kaynak dizin belirtilmedi.
/NODD :: hedef dizin belirtilmedi.
/IF :: aşağıdaki dosyaları dahil et.
(Yorum yazmak için tıklayın)
Ekleyen: Murat Kefeli | (Şikâyet et)
Önceki İpucu: Çalışan Engellilerin Gelir vergisi İndiriminden Yararlanması İçin Yapması Gereken İşlemler | Sonraki İpucu: Gören Birinden İphone Telefon ile Yardım Alma Programı Be My Eyes