Z pewnością każdy z nas potrzebował stworzyć szybką kopię zapasową naszych plików. Dzisiaj pokaże wam niezwykle prosty patent, na wykonanie kopii plików za pomocą polecenia robocopy.
Osobiście korzystam z tego polecenia od jakiegoś czasu i nigdy mnie nie zawiodło. Składnia robocopy jest dość banalna załóżmy, że chcemy wykonać backup zawartości folderu:
D:\Dokumenty
Do lokalizacji:
F:\Backup\Dokumenty
Podstawowa składnia polecenia wygląda zatem następująco:
robocopy "D:\Dokumenty" "F:\Backup\Dokumenty"
Jednak na niewiele się nam ona zda gdyż szybko okaże się, że w ten sposób kopiujemy jedynie pliki we wskazanym przez nas folderze, wszystkie podfoldery są pomijane. Aby uwzględnić foldery możemy użyć parametru /S a jeszcze lepiej /E który skopiuje również puste katalogi:
robocopy "D:\Dokumenty" "F:\Backup\Dokumenty" /E
Dam sobie rękę uciąć, że często coś zmieniacie w strukturze swoich dokumentów np. segregujecie swoje zdjęcia czy też muzykę przenosząc je pomiędzy folderami. Wypadałoby nakłonić robocopy, aby uwzględniał te zmiany i usuwał nieistniejące już foldery/pliki z naszej kopi zapasowej prawda ? Zatem zamiast parametru /E wykorzystamy parametr /MIR
robocopy "D:\Dokumenty" "F:\Backup\Dokumenty" /MIR
Teraz jeżeli korzystacie z linków symbolicznych o których już pisałem, i z jakiegoś powodu chcecie je pominąć w trakcie tworzenia kopii musicie do polecenia dodać parametr /XJD a jeżeli chcecie pominąć jeszcze pliki systemowe użyjcie parametru /XA:SH zatem nasza składnia zaczyna wyglądać następująco:
robocopy "D:\Dokumenty" "F:\Backup\Dokumenty" /MIR /XJD /XA:SH
Ale to jeszcze nie wszystko. Jednym z większych “bajerów” jakie posiada robocopy to jego reakcja na próbę skopiowania pliku, który aktualnie jest w użyciu. Standardowo natrafiając na taki plik wyświetla nam się taki komunikat:
Czyli bohater naszego artykułu poczeka sobie 30 sekund i ponowi próbę. Jeżeli nie uda mu się skopiować pliku po milionie prób (to nie jest żart…) plik zostanie pominięty. Musimy zatem nakłonić robocopy, aby po pierwsze zmniejszył czas pomiędzy próbami kopiowania parametrem /w:x oraz co jest bardziej oczywiste liczbę prób skopiowania pliku /r:x gdzie pod x podajemy czas w sekundach.
robocopy "D:\Dokumenty" "F:\Backup\Dokumenty" /MIR /XJD /XA:SH /R:5 /W:15
W moim przypadku skrypt będzie czekał 15 sekund a po piątej nieudanej próbie po prostu go pominie.
Mam nadzieję, że do tego czasu jeszcze niczego nie zagmatwałem, pozostał nam jeszcze jeden parametr który warto znać. Standardowo robocopy zajmuje się jednym plikiem jednocześnie co przy listowaniu katalogów potrafi mu zająć za dużo naszego czasu. Parametr /MT:x określa iloma operacjami robocopy zajmie się jednocześnie. W moim przypadku wystarcza mi 15 wątków zatem dodajemy kolejny parametr do naszego polecenia:
robocopy "D:\Dokumenty" "F:\Backup\Dokumenty" /MIR /XJD /XA:SH /R:5 /W:15 /MT:15
Dzięki czemu sprawimy, że cała operacja zajmie znacznie mniej czasu oczywiście tylko w przypadku, jeżeli zrobiliśmy już co najmniej jedną kopię zapasową za pomocą naszego skryptu.
Mam nadzieję, że dość jasno wytłumaczyłem wam jak korzystać z robocopy. Wyżej wymienione parametry to tylko wierzchołek góry lodowej, aby uzyskać dostęp do wszystkich parametrów wystarczy w wierszu poleceń wpisać
robocopy /?
a wyświetlą nam się wszystkie dostępne parametry m.in. pomijanie plików starszych niż x dni, większych od x bajtów itd. Skoro znacie już składnię tego polecenia z pewnością dostosujecie polecenie robocopy do swoich potrzeb.
Nie musicie za każdym razem wklepywać polecenia w wiersz poleceń. Po prostu zapiszcie je np. w notatniku z rozszerzeniem *.cmd np. backup.cmd i w chwili potrzeby po prostu uruchomcie je jako administrator.
Jak widzicie do wykonania nawet dość zaawansowanego backupu danych wcale nie potrzebujecie zewnętrznych aplikacji wystarczy odrobinę sprytu i dość podstawowa wiedza którą się właśnie z wami podzieliłem.