Wpis użytkownika LovelyPL w Technologia
LovelyPLFenomen
86piorunówPolecenie '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" :smiley:
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? :smiley:
/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 :smiley: 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 :smiley:
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.
Komentarze (28)
@LovelyPL NFL to nie hokej
@czasnaplacki Kurde, fakt - i cały wpis psu w d.... :smiley:
@LovelyPL A czy rsync z parametrem -a nie kopiuje brakujących metadanych o których mówisz czy to coś innego?
@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 :smiley:
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
@LovelyPL czy twoje polecenie robi kopie inkrementalna czy za kazdym razem wali wszystko?
@LovelyPL rozumiem, że modyfikacje wtedy też mi przerzuci? W sensie patrzy np. na date ostatniej modyfikacji
@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)
@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?
@koszotorobur Używam, polecam.
@the_good_the_bad_the_ugly - ja zwykłym użytkownikom do ustawiania cyklicznych/zaplanowanych prac z plikami polecam program FreeFileSync: https://freefilesync.org/manual.php?topic=schedule-batch-jobs
FreeFileSyncDownload FreeFileSync 14.6. FreeFileSync is a free open source data backup software that helps you synchronize files and folders on Windows, Linux and macOS.FreeFileSync.org@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.
Free backup software - no strings attachedBackup and synchronize files and data, copy in either direction, email logs, run programs before and after, schedule automatic backups and much more.2brightsparksMoże już czas przesiąść się z win8.1
@the_good_the_bad_the_ugly Czyli nie jestem sam a myślałem, że to tylko taki chory mój sentyment.
@vredo a kto nie tęskni?
@the_good_the_bad_the_ugly A ja tęsknię za 7 xd
@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 Też na tym siedzę, gówno to jest ale człek się przyzwyczaił.
@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
@LovelyPL nigdy nie słyszałem o robokopie, zawsze wszyscy używali xcopy :face_exhaling: trzeba będzie się pochwalić przed współpracownikami ( ಠ ͜ʖಠ)
@LovelyPL - ja sem inspirator!
I do tego oddałeś należny ukłon w stronę rsynca :saluting_face:
@koszotorobur bo rsync to mocarz w swojej kategorii :smiley: 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 :smiley:
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 :smiley:
Ciekawe, jest też takie polecenie odnośnie kasowania plików według kryterium ?
@Dzemik_Skrytozerca Przecież napisałem, żeby tam dać na końcu -WhaiIf, więc nie wiem po co ta agresja.
NIE UZYWAC.
Za takie żarciki powinien być ban na miesiąc i tytuł Troll-Psuj.
Zgłoszone do moderacji.
Dla postronnych, jeśli puścicie te komendę z wysokimi uprawnieniami, będziecie mieć komputer z Windows do reinstalacji (lub naprawy).
Opis działania polecenia: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-item?view=powershell-7.4
Remove-Item (Microsoft.PowerShell.Management) - PowerShellThe Remove-Item cmdlet deletes one or more items. Because it's supported by many providers, it can delete many different types of items, including files, folders, registry keys, variables, aliases, and functions.MicrosoftKomentarz usunięty przez moderatora
@VanQuish - na Linuksie kasowanie plików według kryterium to betka ... na Windowssie to nie wiem.
BTW jak masz Git Bash na Windzie to masz polecenie unixowe find.