Home > Windows Uzerine > ROBOCOPY ile File Migration

ROBOCOPY ile File Migration

Selamlar,

Geçen günlerde bir proje sebebiyle yaklaşık 175 GB dosya büyüklüğüne sahip ama içeriğinde neredeyse 10.000.000 dosya olan bir paylaşımı, başka bir storage üzerine kopyalamam gerekti. Aslında dosya boyutu küçük bir rakam, fakat 10.000.000 dosya gerçekten göz korkutacak cinsten. Bunu normal copy/paste yöntemi ile yapmak cidden zaman kaybı oluşturacak ayrıca bir problem anında loglamasıda olmadığı için nerede kaldığını kestirmek güç olacaktır. Bende bunun için ROBOCOPY tool kullanmayı uygun gördüm. Ve kullanılabilirliğiyle memnun kaldığım bu ürün hakkında yazmak istedim. Bunu gerçek hayatta ve kritik bir projede kullandığım için sizlerin de gönül rahatlığıyla kullanabileceğinizi belirtmek isterim. 

Öncelikle ROBOCOPY Windows 2008 ve sonrası için yerleşik olarak gelmekte. Windows 2008 öncesi içinde aşağıdaki linkten faydalanabilirsiniz. Ben W2K8 R2 SP1 üzerinde uyguladım.

http://www.microsoft.com/en-us/download/details.aspx?id=17657 

Öncelikle ROBOCOPY nedir kısa bir açıklamak gerekiyor.

Usage :: ROBOCOPY source destination [file [file]…] [options]

Robocopy Kaynak_Dosya Hedef_Dosya Switchler

ROBOCOPY ; komut satırı üzerinden Kaynak Storage’den ( C: diskiniz yada diğer diskleriniz yada network üzerindeki bir paylaşımda olabilir ) Hedef Storage ( C: diskiniz yada diğer diskleriniz yada network üzerindeki bir paylaşımda olabilir ) üzerine, vereceğimiz çeşitli komutlar ile kopyalama yapılmasını sağlar.

Robocopy ile kullanabileceğimiz bazı switch’leri anlatmak gerekirse ( benim sık kullandıklarım )

/S :: copy Subdirectories, but not empty ones. ( Alt dizinleri ile beraber alır fakat boş dosyalar hariç )

/E :: copy subdirectories, including Empty ones. ( Alt dizinleri ile beraber alır, boş dosyalar dahil )

/B :: copy files in Backup mode. ( Backup mode’la kopyalama yapar )

/SEC :: copy files with SECurity (equivalent to /COPY:DATS) ( Dosyaları security’leri ile kopyalar )

DATS -> D = Data A = Attributes T = Time Stamps  S = NTFS Access Control List ( ACL )

/COPYALL :: COPY ALL file info (equivalent to /COPY:DATSOU). ( Dosyaları tüm bilgileri ile kopyalar )

DATSOU -> D = Data A = Attributes T = Time Stamps  S = NTFS ( ACL ) O = Owner İnformation U = Auditing İnformation

/SECFIX :: FIX file SECurity on all files, even skipped files. ( Sadece Security’leri düzenler. Kopyalamaz )

/PURGE :: delete dest files/dirs that no longer exist in source. ( Kaynaktan data silinmişte hedeftende silinmesini sağlar) kullanırken dikkat edin lütfen. 

/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE). ( Kaynaktan data silinmişte hedeftende silinmesini sağlar) kullanırken dikkat edin lütfen. Yazının sonları bununla ilgili

/MOV :: MOVe files (delete from source after copying). ( Kaynak dosyadan taşıma yapar )

/MOVE :: MOVE files AND dirs (delete from source after copying). ( Kaynak dosyadan taşıma yapar )

/256 :: turn off very long path (> 256 characters) support. ( Dosya adları 256 karakterden fazlaysa kullanılır.)

/XC :: eXclude Changed files. ( Değişen dosyaları kopyalamaz)

/XN :: eXclude Newer files. ( Yeni dosyaları kopyalamaz )

/XO :: eXclude Older files. ( Eski dosyaları kopyalamaz ) iki kere kopyalama yapıldığında zaman kazanmak için kullanırız.

/R:n :: number of Retries on failed copies: default 1 million. ( Hata verdiği zaman kaç kere deneyeceğini belirtie. Default 1 milyon kez dener )

/W:n :: Wait time between retries: default is 30 seconds. ( Deneme süreleri arasındaki bekleme zamanıdır )

/LOG:file :: output status to LOG file (overwrite existing log). ( yapılan işlemi loglamak için kullanılır )

/LOG+:file :: output status to LOG file (append to existing log). ( Yeni kopyalama yapıldığı zaman hazır log dosyası üzerine yazar )

Evet şimdi sıra deneme yapmaya geldi.

Öncelikle CMD üzerinde robocopy /? Yazarak ayrıntılı bilgiye ulaşalım. Burada bütün switch’ler mevcut.

Aşağıdaki komutta şunu yapıyoruz

Kaynak Dosya -> C:\Kaynak_Test

Hedef Dosya -> F:\Hedef_Test

Switch’ler -> /E /MIR /W:1 /R:5 /SEC /LOG:”C:\LOG.txt”

Burada demek istediğim C:\Kaynak_Test altındaki tüm klasör ve dosyaları F:\Hedef_Test altına security haklarıyla kopyala. Bunu yaparlen C:\altına log dosyasını yaz. /MIR ile aynı tree ile kopyalamasınıda sağlıyoruz.

LOG dosyası aşağıdaki gibidir.

Şimdi sıra geldi Hedef dosyaya. Hedef_Dosya önce boşken

Komutu yazdıktan sonra datalarım geldi

Benim yaptığım projede dosya sayısının fazlalığı ve zaman darlığı yüzünden iki kez kopyalamak zorunda kaldık. Proje’ye geçiş Cuma akşamı olacaktı. Bu sebeple önce full kopya aldım. Sonra Perşembe günü kullanıcıların erişimin engelleyip dataların  hepsini alma sadece değişen dosyaları kopyala dedim. Bu bana yaklaşık 20 saat kazandırdı. Ve Cuma akşamı için hazır oldu.Bu arada Evet iki kopyalama yaklaşık 65 saat sürdü 😀

Aşağıdaki komutta ise şunu yapıyoruz

Kaynak Dosya -> C:\Kaynak_Test

Hedef Dosya -> F:\Hedef_Test

Switch’ler -> /E /MIR /XO /W:1 /R:5 /SEC /LOG:”C:\LOG_Degisenler.txt”

Burada demek istediğim C:\Kaynak_Test altındaki değişen klasör ve dosyaları F:\Hedef_Test altına security haklarıyla kopyala. Değişmeyenler aynen kalsın.Bunu yaparken C:\altına log_degisenler isimli log dosyasını yaz.

Log_Degisenler Aşağıdaki gibidir. Newer, New  Dir ve New File uyarılarına dikkat edelim. Değişenleri almış sadece.

/MIR Komutuna Dikkat !!!

Bu komutu kullanırken dikkat edilecek nokta, hedef dosyada yani kopyalamanın yapılacağı yerde data olmaması gerekir. Sebebi /MIR komutu burada ne varsa silecek kaynak dosyadakileri kopyalayacaktır. Yani kaynak ve hedef dosya eşleşecektir. Önemli datalarınızın olduğunu düşnürsek geri dönüşü olmayan felaketler olabilir.

Örnek olarak hedef dosyada daha önce UMUT_KARAKAŞ isimli klasör varken.

Aşağıdaki gibi komutuları kullandıktan sonra

UMUT_KARAKAŞ dosyası geri gelmeyecek şekilde silinecektir. Sebebi Kaynak_Test dosyası ile eşitlenmiş olmasıdır. Kaynak_Test dosyası altında UMUT_KARAKAŞ  isimli bir klasör yoktu.

Log dosyasına dikkat edecek olursak, *EXTRA dir -1 yapmış. Yani güle güle UMUT_KARAKAŞ klasörü.

Evet gördüğünüz gibi kullanışlı ve hızlı olan ama birazcık dikkat gerektiren ROBOCOPY ile file migration projenizi gerçekleştirebilirsiniz. W2K8 ve üzerin versiyonlarda ve bedava 😀

Kaynak : http://technet.microsoft.com/en-us/library/cc733145(v=ws.10).aspx 

Başka tecrübeleri paylaşabilmek dileğiyle…

UMUT KARAKAŞ

Categories: Windows Uzerine
  1. January 1, 2013 at 07:33

    Eline sağlık

  2. Gökhan
    September 25, 2013 at 16:20

    Başarılı bir çalışma olmuş, elinize sağlık, teşekkür ederiz paylaşım için.

    • September 25, 2013 at 16:29

      Umarım işinize yaramıştır.

  3. Sebahattin KÖSE
    October 8, 2013 at 11:00

    Teşekkürler. Sağlam bir araç…

  4. jokerass@mynet.com
    October 9, 2013 at 08:40

    şöyle bir sıkıntı gördüm bilmiyorum çözümü varmıdır. eğer klasör isminde boşluk varsa kopyalama yapmıyor.. örneğin c:\program files

    geçersiz parametre #3 : “files”

    • October 9, 2013 at 09:32

      Başına ve sonuna çift tırnak koyarak yapabilirsiniz.

  1. January 17, 2014 at 16:10

Leave a reply to karakas444 Cancel reply