Robocopy Nedir?

Robocopy, Microsoft Windows için bir komut satırı dosya aktarım aracıdır. Robocopy, işlevsel olarak COPY komutundan ve XCOPY'den daha kapsamlıdır ancak ikisinin de yerini almaz. Kevin Allen tarafından oluşturulan ve ilk olarak Windows NT 4.0 Kaynak Seti'nin bir parçası olarak piyasaya sürülen bu özellik, Windows Vista ve Windows Server 2008'den bu yana Windows'un standart bir özelliğidir.
Syntax
robocopy <source> <destination> [<file>[ ...]] [<options>]
Daha fazla bilgi için bakınız:
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy
Parametreler
| Parametre | Açıklama |
|---|---|
| <source> | Kaynak dizinin yolunu belirtir. |
| <destination> | Hedef dizinin yolunu belirtir. |
| <file> | Kopyalanacak dosyayı veya dosyaları belirtir. Joker karakterler (* veya ?) desteklenir. Bu parametreyi belirtmezseniz, *.* varsayılan değer olarak kullanılır. |
| <options> | Kullanılacak seçenekleri belirtir robocopy komutu dahil kopyalayın, dosya, yeniden deneyin, günlüğe kaydetme, ve iş seçenekler. |
Robocopy Örnekler
Robocopy çok güçlü bir araçtır. File server migration yaparken sıkça kullanılmaktadır. En büyük sebeplerinden bir tanesi taşıma işlemi sırasında yetkiler ile birlikte aktarabilmektedir. Ayrıca robocopy ile dosyaları kopyalayarak geçiş sırasında çok az bir zaman diliminde sadece değişen datayı alıp çok kısa zamanda migration projelerinde başarı yakalayabiliyoruz. Robocopy üstelik sadece sunucularda değil Windows 10 veya diğer sürümlerde schedule ile backup alınabiliyor.
Basit bir şekilde kaynak ve hedef belirtilerek ilgili klasör/dosya kopyalamanızı sağlayan bir komut uygulamasıdır. Şimdi basit bir örnek ile parametreleri kullanarak işlemler gerçekleştirelim. Aşağıda bir sanal sunucudan nas cihazına veri aktarmaya çalışacağım. Sonrasında bunu task scheduler olarak ayarlayabilirsiniz.
Şimdi bir tane örnek yapmadan önce en çok kullanılan parametrelere bakalım.
- /e Alt dizinleri kopyalar. Bu seçenek otomatik olarak boş dizinleri içerir.
- /XO Hedeften daha eski olan kaynak dizin dosyaları kopyanın dışında bırakılır.
- /R:3 Başarısız kopyalarda yeniden deneme sayısını belirtir.
- /W:30 Yeniden denemeler arasındaki bekleme süresini saniye cinsinden belirtir.
- /ETA Kopyalanan dosyaların tahmini varış süresini gösterir.
- /TEE Durum çıktısını konsol penceresine ve günlük dosyasına yazar.
- /XA:SH belirli özellikteki durumdaki dosyaların kopyalanmasını hariç tutar. Örneğin S:sistem, H: gizlenmiş
- R - Read only
- A - Archive
- S - System
- H - Hidden
- C - Compressed
- N - Not content indexed
- E - Encrypted
- T - Temporary
- O - Offline
- /MT:64 kopyalama için sistem çekirdeklerinin kullanma/öncelik durumunun ayarlanması (orjinali 8 dir 1-128 arası değer girebebilir) DİKKAT! 128 çok iyi sistemlerde kullanılmalı.
- /MIR tam yedekleme mantığı için (kaynaktaki tüm verilerin hedeftekilerle eşitlenmesi, hedefte fazlalık varsa silinir) bu özellik yerine sadece üzerine kopyalanacaksa /MIR parametresi yerine sade /e parametresi kullanılabilir.
- /if Belirtilen dosya uzantılarını koplayar. Örneğin /if *.dcm veya birden çok uzantı kopyalanacak ise arasında birer boşluk bırakılarak /if *.exe *.txt yazılabilir.
- /V Ayrıntılı çıktı üretir ve atlanan tüm dosyaları gösterir.
- /xx Hedefte bulunan ancak kaynakta bulunmayan ekstra dosya ve dizinleri hariç tutar. Fazladan dosyaları hariç tutmak, dosyaların hedeften silinmesine neden olmaz.
- /nfl Kopyalama yaparken dosya adlarının günlüğe kaydedilmeyeceğini belirtir ve log dosyanızın boyutunu yükseltmez. (Eğer dosya sayınız çok fazla ise kullanmanız önerilir)
- /np Kopyalama işleminin ilerlemesinin (şimdiye kadar kopyalanan dosya veya dizin sayısı) görüntülenmeyeceğini belirtir. Yani, kopyalama aşamasında "%0-%100" gibi durum bilgilerinin görünmesi istemezseniz kullanabilir ve logların boyutunu düşürebilirsiniz.
- /log:"C:\Users\mehmet.oz\Backup.log" log dosyasının yolunu belirterek, nereye yazılacağını belirliyoruz.
- /log+:"C:\Users\mehmet.oz\Backup.log" log dosyasının yolunu belirterek, nereye yazılacağını belirler ve yeni çıktıları mevcut log dosyasına ekler.
- /ipg:25 Bant genişliğine göre kopyalama hızı sınırlandırmak için bu parametreyi kullanabilirsiniz, alt yapı ve sistem kaynağına göre değişebilir. Yapınıza 25, 50, 75, vs test ederek kullanabilirsiniz.
Şimdi bir tane örnek yapalım. Senaryo üzerinde bir tane sunucumuza günlük çok sayıda veri gelmektedir. Gelen veriler belli olduğu için herhangi bir virüs bulaşmasını engellemek için belirli uzantıları alıp karşı tarafa göndermek istiyorum. Bu işlemlerin en sonunda da log dosyası oluşturup verilerin düzgün aktarılıp aktarılmadığını anlamak için kayıt etmesini istiyorum.
İşlemlere başlamadan önce lütfen canlı ortam yerine test ortamında mantığını anlayıp daha sonra robocopy kullanınız.
robocopy \\src_ip_addr \\dest_ip_addr /e /XO /R:3 /W:30 /if *.dcm *.xml /XA:SH /MT:64 /NFL /NP /TEE /log+:"C:\log\backup.log"
- Eğer test için iki taraftaki veriyi karşılaştırıp eksikleri ekranda görmek isterseniz /nfl parametresini kaldırıp görebilirsiniz.
- Eğer hedefte olup kaynakta olmayan dosyalar var ve bunların ekranda görünmesini istemiyorsanız /XX parametresini ekleyebilirsiniz.
Bunlara ekstra olarak, hedefin ve kaynağın da aynı olmasını istiyorsanız mirror yapısını kullanabilirsiniz. Bu durumda, hedefteki fazlalık varsa silinir. Yani kaynak ve hedefteki klasör ve dosyalar aynısı gibi olur.
- Mirror işlemlerini ilk olarak test ortamlarında yapınız.
robocopy \\src_ip_addr \\dest_ip_addr /e /MIR /XO /R:3 /W:30 /if *.dcm *.xml /XA:SH /MT:64 /NFL /NP /TEE /log+:"C:\log\backup.log"
Robocopy aracı ile task schedule kullanarak düzenli dosya senkronizasyon işlemi sağlayabilirsiniz. Benzer komutları kullanarak saatlik günlük vb. olarak ilgili sunucularınızı karşılıklı sync durumda tutabilirsiniz.
Önemli: Eğer acil olarak çalışan bir robocopy durdurmak isterseniz cmd den "taskkill /F /IM robocopy.exe" bunu kullanabilirsiniz.
taskkill /F /IM robocopy.exe