Polecenie 'robocopy' w Windows, czyli "Cudze chwalicie, swego nie znacie".

"robocopy" jest potężnym narzędziem o którym wie niewielu użytkowników, służącym do masowego kopiowania/przenoszenia/synchronizacji plików i katalogów.

Wpis został zainspirowany przez @koszotorobur który dokonał wpisu "jak w prostych 8 krokach zainstalować polecenie 'rsync' w systemie Windows" 

Polecenie 'robocopy' jest wbudowane w systemach Windows 10/11 więc nie trzeba niczego instalować.
Uruchamiamy command line: "windows+R", wpisujemy 'cmd' i enter.
Po wpisaniu "robocopy" otrzymamy bardzo podstawowe informacje o składni tego polecenia, czyli:

ROBOCOPY source destination

Banalne, prawda? Więc gdzie tutaj potęga tego narzędzia? Wystarczy wpisać 'robocopy /?" i otrzymamy spis kilkudziesięciu parametrów tego polecenia.
Na co pozwala to polecenie?
M.in. na:

  • kopiowanie podkatalogów - wszystkich, albo tylko niepustych, albo tylko do X poziomu zagłębienia
  • kopiowanie atrybutów, uprawnień, strumieni danych
  • przenoszenie plików i katalogów
  • tworzenie struktury katalogów
  • monitorowanie źródła (jeśli coś się zmnieni, to polecenie wykona się jeszcze raz)
  • harmonogram pracy polecenia
  • kopiowanie linków symbolicznych
  • kopiowanie w wielu wątkach jednocześnie
  • filtrowanie plików według wielu parametrów
  • mirror katalogu

Przykład z życia?
Tak wygląda to polecenie u mnie - robię w ten sposób mirror dysku sieciowego do katalogu lokalnego:

robocopy w: "e:\backup" /MIR /COPYALL /DCOPY:DAT /E /XD w:\@Recently-Snapshot /R:5 /W:5 /ndl /nfl /nc /ns /np

Czyli:
"kopiuj pliki z dysku W: do katalogu e:\backup
/MIR - mirror katalogu
/COPYALL - kopiuj wszystkie dodatkowe parametry: dane, atrybuty, czas, uprawnienia, dane właściciela, dane audytu)
/DCOPY:DAT - podobnie, ale dla katalogów (dane, atrybuty, czas)
/E - kopiuj podkatalogi, nawet te puste
/XD w:\@recently-snapshot - wyklucz pliki o takich nazwach z kopiowania - XD, czaicie? 
/R:5 - w razie błędu powtórz 5 razy próbę skopiowania
/W:5 - czekaj 5 sekund między próbami
/NDL - nie loguj nazw katalogów
/NFL - coś o hokeju  a serio, to nie loguj nazw plików
/NC - nie loguj klas plików
/NS - nie loguj wielkości plików
/NP - nie pokazuj procentów

Dużo tego 'nie loguj', ale im mniej na ekranie, tym szybciej się kopiuje, a ja tam mam prawie 2 miliony plików 

Polecam wszystkim chętnym na zapoznanie się z tym poleceniem.

Wrócę jeszcze na moment do unixowego polecenia 'rsync'. Te narzędzia świetnie się uzupełniają. rsync potrafi np. podpiąć się do innego komputera poprzez różne protokoły (czego robocopy nie umi), sam sposób synchronizacji też jest zupełnie inny niż w robocopy, ale znowu robocopy jest narzędziem stricte pod Windows i potrafi kopiować różne metadane plików, czego rsync nie potrafi.

ps: jest jeszcze drugie, podobne polecenie, ale o mniejszej potędze: 'xcopy'. Też warto podejrzeć co potrafi.

#technologia #windows #robocopy #komputery
VanQuish

Ciekawe, jest też takie polecenie odnośnie kasowania plików według kryterium ?

LovelyPL

Komentarz usunięty przez moderatora

LovelyPL

@Dzemik_Skrytozerca Przecież napisałem, żeby tam dać na końcu -WhaiIf, więc nie wiem po co ta agresja.

koszotorobur

@LovelyPL - ja sem inspirator!

I do tego oddałeś należny ukłon w stronę rsynca

LovelyPL

@koszotorobur bo rsync to mocarz w swojej kategorii Każdy używa tego, co mu jest potrzebne. Ja tam nie hejtuję linuxa, bo nie ma czegośtam, co ma Windows, bo znowu linux ma mnóstwo rzeczy, których mi brakuje w systemie MS

Jak chcę zrobić synchronizację czy kopię serwera mailowego tak, żeby go nie wyłączać, to używam rsynca. Jak robię kopię dysku sieciowego podpiętego do MSAD ze wszystkimi jego właściwościami, to używam robocopy albo innych narzędzi Windowsowych, bo rsync nie umi skopiować metadanych - co nie jest dziwne, bo to narzędzie z innego systemu

RedDucc

@LovelyPL nigdy nie słyszałem o robokopie, zawsze wszyscy używali xcopy trzeba będzie się pochwalić przed współpracownikami ( ಠ ͜ʖಠ)

RACO

Może już czas przesiąść się z win8.1

the_good_the_bad_the_ugly

@RACO omujborze chłop z własnej woli tyle czasu siedzi na 8.1. Niebywałe.


Żeby nie było: nie hejtuję ciebie tylko win 8.1

vredo

@the_good_the_bad_the_ugly Też na tym siedzę, gówno to jest ale człek się przyzwyczaił.

RACO

@the_good_the_bad_the_ugly  człowiek się przyzwyczaja do pewnych rzeczy. Po prostu wzbraniam się przed konfiguracja wielu softów pod nowe środowisko.


Za to na 3 innych łapkach mam win 10/11

the_good_the_bad_the_ugly

@vredo @RACO ha! z tego samego powodu trzymam się win10 jak tonący brzytwy

vredo

@the_good_the_bad_the_ugly A ja tęsknię za 7 xd

vredo

@the_good_the_bad_the_ugly Czyli nie jestem sam a myślałem, że to tylko taki chory mój sentyment.

the_good_the_bad_the_ugly

@LovelyPL dzięki za wrzutkę. Warto sobie to wrzucić w Task Schedulera i robić cykliczną kopię na backupowy dysk czy lepiej wykorzystać inne narzędzia?

LovelyPL

@the_good_the_bad_the_ugly To już zależy co i jak chcesz kopiować.

Ja używam i robocopy i takiego fajnego narzędzia (jest płatne, ale wersja free też istnieje, z ograniczeniami) - SyncBack.

https://www.2brightsparks.com/freeware/index.html


Osobiście w firmie używamy wersji Pro i mamy tam kilkaście zadań wrzuconych, typu - codziennie kopiuj pliki które zmieniły sie przez ostatnie 24 godziny. Przed kopiowaniem stwórz katalog o nazwie yyyy-mm-dd. Albo "sprawdzaj czy w katalogu X coś się zmieniło. Jesli tak, to przerzuć zmienione pliki w inne miejsce". itd.

Marchew

@koszotorobur Używam, polecam.

zboinek

@LovelyPL czy twoje polecenie robi kopie inkrementalna czy za kazdym razem wali wszystko?

LovelyPL

@zboinek robocopy działa na poziomie plików, więc przewala całe pliki, ale jak dajesz opcje typu /MIR to oczywiście kopiuje tylko to, co się różni w źródle i w celu, a nie wszystko od nowa za każdym razem (no, chyba, że chcesz, to ci będzie kopiować zawsze wszystko)

zboinek

@LovelyPL rozumiem, że modyfikacje wtedy też mi przerzuci? W sensie patrzy np. na date ostatniej modyfikacji

Helpdesk

Backup na Seagate zrobiony. Jutro przyjeżdża 1tb SSD, montaż i instalacja Steam OS 3.0 bo na tym da się grać i Gównosoft WX zostanie do gier linuksoodpornych

Catharsis

@LovelyPL A czy rsync z parametrem -a nie kopiuje brakujących metadanych o których mówisz czy to coś innego?

LovelyPL

@Catharsis są parametry dotyczące atrybutów czy ACL, ale z moich testów (niezbyt licznych) i tego, co mówi google wynika, że rsync nie kopiuje poprawnie listy uprawnień czy atrybutów rozszerzonych. Podobnie ze strumieniami danych.

Ale to nie dziwi, bo jest to narzędzie linuxowe i nie ma w nim zaimplementowanych pewnych funkcji specyficznych wyłącznie dla Windows.

Możliwe, że są jakieś forki tego polecenia, które to potrafią, ale nie znam. I nie szukam, bo to, co potrzebuję robię narzędziami, które mam

czasnaplacki

@LovelyPL NFL to nie hokej

LovelyPL

@czasnaplacki Kurde, fakt - i cały wpis psu w d....

Zaloguj się aby komentować