Robocopy.exe – zaawansowane kopiowanie, synchronizowanie i raportowanie danych


 

strong_CMD_150Robocopy.exe, to narzędzie działające w Wierszu Poleceń Windows stworzone z myślą o replikacji lub migracji plików i katalogów pomiędzy serwerami. Tworzenie loga z wynikiem operacji, działanie jak skrypt/usługa, czy możliwość wznawiania nieudanej operacji czyni to narzędzie niezwykle poręcznym i lepszym niż większość programów GUI. Ponadto Robocopy.exe działa wielowątkowo (domyślnie obsługuje 8 plików w tym samym czasie), co wyraźnie skraca czas migracji danych.
Narzędzie to znajduje się w systemach od Visty/2008 w górę.

Oto praktyczne przykłady zastosowania Robocopy.exe:

Najprostsza możliwa operacja, czyli kopiowanie zawartości katalogu C:\Folder1 do C:\Folder2 pomijając puste katalogi:

robocopy.exe C:\Folder1 C:\Folder2

Kopiowanie zawartości katalogu C:\Folder1 do C:\Folder2 wraz z pustymi katalogami:

robocopy.exe C:\Folder1 C:\Folder2 /E

Wyświetlenie plików większych niż 1MB (1024 bajty):

robocopy.exe c:\Folder1 d:\folder_docelowy /min:1024 /l

Należy zaznaczyć, że folder docelowy jest obowiązkowy, lecz żadne pliki nie zostaną przekopiowane. Odpowiada za to parametr /l. Wynik polecenia będzie podobny do tego:

robocopy1

Wyświetlenie plików MNIEJSZYCH niż 1MB (1024 bajty)

robocopy.exe c:\Folder1 d:\folder_docelowy /max:1024 /l

Zapisanie wyniku do loga:

robocopy.exe c:\Folder1 d:\folder_docelowy /LOG:c:\log.txt

Przeniesienie plików starszych niż 7 dni (oprócz plików będących w użyciu)

robocopy.exe c:\Folder1 d:\folder_docelowy /move /minage:7

W tym miejscu podam kilka podobnych opcji

/maxage: pliki NIE-starsze niż N dni

/minage: pliki NIE-młodsze niż N dni

/maxlad: pliki nie używane krócej niż N dni

/minlad: pliki nie używanie dłużej niż N dni

Jeżeli N przekracza liczbę 1900 należy podać datę w formacie RRRRMMDD

 

Mirror, czyli synchronizowanie katalogów

To polecenie zsynchronizuje dwa katalogi – skopiuje pliki i katalogi (również puste) do katalogu docelowego, a także skasuje z katalogu docelowego pliki i katalogi, których już nie ma w katalogu źródłowym.

robocopy.exe \\server1\udział \\server2\udział /MIR

…lub to samo dla dysków X(źródłowy) i Y (docelowy):

robocopy.exe X:\DIR Y:\DIR /MIR

 

Zaawansowane synchronizowanie udziałów sieciowych:

robocopy.exe \\server1\udział \\server2\udział /MIR /FFT /Z /XA:H /W:2

/FFT używa datowania system FAT zamiast NTFS.

/Z pozwala wznowić zadanie zamiast rozpoczynać je od nowa (na przykład w przypadku starty połączenia sieciowego)

/XA:H ignoruje ukryte pliki

/W:2 zmniejsza czas ponownej próby z domyślnych 30 sekund na 2.

 

Kopiowanie różnicowe, czyli backup z użyciem robocopy.exe

To polecenie skopiuje nam tylko pliki i katalogi zmodyfikowane w ciągu 1 dnia:

robocopy.exe „c:\folder1” „c:\backup-%date% ” /MAXAGE:1

Upewnijcie się tylko, czy Wasz format daty zawiera dozwolone znaki. U mnie na przykład jest to RRRR-MM-DD.

 

Przenoszenie uprawnień, atrybutów, lub dat z użyciem Robocopy.exe

Oto przykład kopujacy uprawnienia (ACL)

robocopy.exe c:\folder1 c:\folder2 /Copy:S /IS /IT

D dane

atrybuty

T czasy

S uprawnienia NTFS

O właściciele

U informacje audytowe

Jak pewnie zauważyliście, domyślne kopiowanie (robocopy.exe C:\Folder1 C:\Folder2
) zawiera w sobie ukryte: /Copy:DAT
/IS – od „Include same files”, czyli takie, które już istnieja w katalogu docelowym, mają ten sam rozmiar, czas i atrybut.

/IT – od “Include tweaked files”, czyli takie które już istnieją w katalogu docelowym, mają ten sam rozmiar i czas, ale inny atrybut.

Wspomniana we wstępie wielowątkowość domyślnie wynosi 8. Możemy zwiększyć ten parametr np. do 24:

robocopy.exe C:\Folder1 C:\Folder2 /MT:24

Kopiowanie katalogów wraz z czasem (timestamp) głównego katalogu:

robocopy.exe C:\Folder1 C:\Folder2 /MIR /dcopy:T

 

Limit zużycia łącza

Parametr /IPG:750 ograniczy zużycie łącza do około 1Mbps, co sprawi, że transfer danych nie spowoduje problemów sieciowych :)

robocopy.exe /ipg:750 \\serwer1\udział \\server2\udział

Myślę, że powyższe przykłady z grubsza prezentują niesamowita wszechstronność narzędzia robocopy.exe. Jeśli szukacie narzędzia, które pozwala kasować pliki po dacie modyfikacji, zachęcam do zapoznania się z FORFILES.
Jeśli macie jakieś pytania lub komentarze, piszcie śmiało :)


Podobne Tematy:

  • Anonim

    Dzięki za przedstawienie kolejnego ważnego narzędzia admina :) Niestety wkradły się drobne literówki do artykułu np. synhronizacji

  • Benko

    Chciałbym np. o godz. 16.00 podłączyć pena do mojego laptopa i chciałbym aby ustawić w harmonogramie zadań aby mi nadpisało tylko zmodyfikowane pliki lub skopiowało nowe pliki z jakiegoś określonego miejsca na lapku. Da się? Czy to robi się gdzie indziej?

    • Łukasz Skalikow

      Ok, ale z czym konkretnie masz problem? Skonfigurowanie zadania w harmonogramie chyba nie wymaga wyjaśnienia. Wystarczy tam wpisać częstotliwość (np codziennie), godzinę i komendę np: robocopy.exe c:\katalog f:\katalog /MIR

      Musisz jedynie upewnić się, że pendrive widziany jest zawsze pod tą samą litera (gdy na przykład włożysz kartę SD lub podepniesz dysk usb, to litera, którą powinien mieć pendrive będzie inna).

  • Anonim

    Witam…
    Szukam komendy/polecenia umożliwiającego wykonania kopii plików. Problem polega na tym, że chciałbym aby w jednym wierszu zawarte były dwa polecenia wykonania kopiowania różnych plików do tego samego katalogu.
    Krzysztof Kozłowski

    • Zoidberg

      Próbowałeś łączyć polecenia za pomocą && ?

      komenda1 && komenda2 && komenda3

      • Anonim

        Dziękuję, działa…
        pozdrawiam
        Krzysztof Kozłowski

  • Anonim

    Działa, dziękuję bardzo
    pozdrawiam
    Krzysztof Kozłowski

  • ppeppe

    A ja chciałbym poprosić o polecenie, które będzie kopiować z dysku C:\program files/test/g*.txt pliki(g*.txt) na dysk D:\kopia, ale tak ażeby nie nadpisywał tych pików(g*.txt) na dysku D. Ma kopiować tylko nowe nazwy.

  • Krump

    Witam, ja mam małe pytanko, otóz robiaz kopie profilów wyłaczam zkopiowania katalog C:Users%username%AppData, ale chce z niego skopiować %appdata%MicrosoftSignatures*.* jest to możliwe? jakie dać uwzględnienie bo opcja /IF nie działa

    • A jakbyś robił kopiowanie w 2 wersach? W jednym wersie kopiował %appdata%MicrosoftSignatures*.* a w drugim cały profil z wykluczeniem całego C:Users%username%AppData? To trochę partyzanka, ale powinno działać.

      • Krump

        Własnie wiem, że tak mogę zrobić, ale chciałem tego uniknąć i zrobic to porządnie, dlatego pytam.

        • Śmiem stwierdzić że w Robocopy nie da się jednocześnie wykluczyć folderu z wyjątkiem jednego lub kilku wskazanych. Potwierdzają to różne fora, jakie wczoraj przejrzałem. Myślę, że twórcy specjalnie na to nie pozwalają, bo przy wielu folderach, performance byłby strasznie zdegradowany.

        • Krump

          to kicha bo psuje to troche życie

  • mruk

    Bardzo fajny artykuł, lecz ja mam trochę inne zapytanie.

    Chodzi o kopiowanie po sieci z jednego komputera PC1 katalogu (baza wraz z
    podkatalogami i znajdującymi się tam plikami) na drugi PC4. Obydwa komputery są
    w tej samej sieci lan.

    Kopie mają być robione co tydzień oraz 1 raz w miesiącu.

    Zależy mi by nazwa kolejnej kopii otrzymywała nazwę w postaci dzień miesiąc rok
    i oznaczeń literowych.

    Gdzie „t” gdy chodzi o tydzień a z literką „m” gdy chodzi o
    miesiąc. Wymyśliłem sobie, że wszystko oprę o harmonogram zadań. Wszystkie
    komputery mają W7 prof.

  • DK

    Czy da się tym kopiować same atrybuty i uprawnienia (zabezpieczenia) folderów?