Skrypt .bat backup danych


(Leo555) #1

Witam,

Proszę o pomoc z następującym problemem. Chciałbym napisać sobie skrypcik w postaci pliku wsadowego .bat mający za zadanie chronologicznie:

1) zalogowanie się na komputer w grupie roboczej na zasadzie: albo przypisanego na stałe komputera\loginu i hasła albo podania informacji np: "podaj login:" i "podaj hasło:"

2) sprawdzenie czy pliki z komputera źródłowego są takie same jak na docelowym (jesli nie ma, to kopiuje, a jeśli jest plik lub folder jest, to jeśli był to nadpisze a jeśli nie to zostawi bez zmian) - tylko nie chcę żeby pytał czy chcę zastąpić lub nadpisać istniejący plik tylko robił to z automatu. Ewentualnie jak to jest zbyt trudne (dla mnie, bo dla osób obytych w tym dziale to pewnie elementarna wiedza) to pierwsze usunął całą zawarotość folderu z danymi i w to miejsce skopiował jeszcze raz wszytkie dane (będzie się to robiło dłużej, ale może jest to programistycznie prostsze do zrobienia)

Ja napisałem taki banalny programi który działa ale tylko zamienia wszytkie pliki i kopiuje nowe, wada tego jest jeszcze taka że trzeba potwierdzać napdisanie pliku.

Wiem że są gotowe synchronizatory do takiego celu ale zależy mi nad plikiem wsadowym i przy okazji pouczę się od Was czegoś nowego :slight_smile:

Ja mam coś takiego:

@Echo off

cls

cd C:\Documents and Settings\ja\Moje dokumenty

Echo KPIOWANIE DOKUMENTOW .............

xcopy *.* \Czarny\wazne\Dokumenty\ /e

Echo Kopiowanie Dokumentow zakończone...

Echo Kopiowanie zakończone powodzeniem. Naciśnij dowolny klawisz aby zakończyć proces archiwizacji.

pause


(somekind) #2

Jaki system operacyjny?


(Leo555) #3

System Windows XP


(somekind) #4

Szkoda, że to XP, bo od Visty wzwyż masz do dyspozycji Robocopy, które umożliwia bezproblemowe zsynchronizowanie katalogów.

W XP najprościej będzie faktycznie najpierw skasować cały katalog docelowy, a następnie skopiować pliki - tylko to bezsensowna strata czasu :confused:

Aby wyłączyć potwierdzanie musisz dodać parametr /Y do swojego polecenia xcopy.

Ogólnie odpal w konsoli xcopy /? i poczytaj :slight_smile:


(Fiołek) #5

Albo ściągnij robocopy(w pakiecie z Windows Server 2003 Resource Kit Tools).


(Simplex111) #6

Polecenie robocopy z pewnością ma większe możliwości, ale do prostych zastosowań przy synchronizacji folderów stare poczciwe xcopy nadaje się znakomicie. Wystarczy tylko użyć właściwych parametrów. Poniżej przykład:

@echo off

cls

echo Kopiowanie dokumentów

echo.

xcopy "C:\Source\*.*" "\\KompZdalny\Destination\" /E/D/Y

echo Naciśnij dowolny klawisz aby zakończyć proces archiwizacji

echo on

Ten skrypt kopiuje pliki, których czas wersji źródłowej jest późniejszy niż czas wersji docelowej (lub te które nie występują w folderze docelowym). Odpowiada za to parametr /D. Parametr /Y wyłącza monitowanie o potwierdzenie zastąpienia istniejącego pliku docelowego.

Zamiast parametru /D można użyć parametru /M, który oznacza kopiowanie plików z ustawionym atrybutem archiwalnym oraz wyłącza ten atrybut. Każda następna modyfikacja danego pliku włącza z powrotem ten atrybut.

PS. Co do pierwszego pytania o zalogowanie się na komputer w grupie roboczej, nie wiem jak to zrealizować w pliku wsadowym (może ktoś z kolegów coś doradzi). Natomiast w mojej sieci (dwa komputery połączone zwykłą skrętką) powyższy skrypt z powodzeniem kopiuje odpowiednie pliki na komputer zdalny. Jedyny warunek jest taki, aby zezwolić użytkownikom sieciowym na zmianę plików w folderze Destination na komputerze zdalnym