[Batch] Netwerk-folder backup script

Pagina: 1
Acties:
  • 542 views sinds 30-01-2008
  • Reageer

  • hexagram
  • Registratie: Oktober 2006
  • Niet online
Allereest: ik weet niet precies of dit de juiste plek is ervoor, maar aangezien geen van de andere me meer geschikt leken post ik het maar hier :)

Wat ik wil proberen is een batch scriptje te maken (m.b.v. google aangezien ik 0.0 ervanaf weet) om m'n universiteits map met bestanden één keer per dag ofzo nadat ik alles verwerkt hebt te kunnen wegschrijven naar externe hardeschijf en via het netwerk aangesloten laptop.

Hier zien jullie mijn begin (shamefully copied from the intarweb):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
:: %backupcmd% "...source directory..." "%drive%\...destination dir..."

set driveD=D:\Documenten
set driveF=F:\Oscar

set backupcmd=xcopy /s /c /d /e /h /i /r /y

echo ### Backing up university files...
%backupcmd% "%driveD%" "%driveF%\Documenten"

echo Backup Complete!
@pause


Zoals voor de meesten duidelijk zal zijn is het dus een directe kopie van de map D:\Documenten naar de externe hardeschijf, en dan in F:\Oscar.

Wat ik nu echter wil bereiken is dat hij eerst de map verwijderd die op de externe staat (dit in verband met verwijderde bestanden, overgeschreven bestanden etc) en dat hij ook automatisch wegschrijft naar de laptop zodat die de volgende dag de nieuwste bestanden bevat!

Als ik nu naar 'netwerk' ga kan ik dus via \netwerknaam\laptop naam\gedeelde folder (universiteit map) naam\ toe.. maar werkt dit ook als ik hier dan dit van maak?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
:: %backupcmd% "...source directory..." "%drive%\...destination dir..."

set driveD=D:\Documenten
set driveF=F:\Oscar
set laptop=\netwerknaam\laptop naam\gedeelde folder (universiteit map) naam\

set backupcmd=xcopy /s /c /d /e /h /i /r /y

echo ### Backing up university files...
%backupcmd% "%driveD%" "%driveF%\Documenten"
%backupcmd% "%driveD%" "%laptop%\"

echo Backup Complete!
@pause


Zou dit werken zonder dat ik dus iets raars doe met m'n gehele netwerk enzo :P

Extra vraagje: mijn laptop is 'Oscar Laptop' genoemd, moet hier dan bijv. %20 tussen om die spatie te verantwoorden?

Extra vraagje 2: wat is de commando om eerst de map te verwijderen alvorens te kopiëren?

  • Equator
  • Registratie: April 2001
  • Laatst online: 16:25

Equator

Crew Council

#whisky #barista

Waarom gebruik je niet de mirror functie van RoboCopy :?

Heb jij een folder weggemikt uit je source, dan wordt tijdens de mirror deze ook verwijderd in de backup.
Extra vraagje: mijn laptop is 'Oscar Laptop' genoemd, moet hier dan bijv. %20 tussen om die spatie te verantwoorden?
Nope, gewoon "Oscar Laptop" dus tussen quotes. %20 is een spatie in een URL.

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:32
Nee, dit topic staat niet op de juiste plaats. :)

Hier gaat het over programmeren; het maken van batch-scripts hoort thuis in de OS - gerelateerde fora; in dit geval dus Windows Clients

PRG->WCS

https://fgheysels.github.io/


Verwijderd

Oscar,
Als ik het goed begrijp wil jij een netwerk verbinding maken vanaf je uni-pc, naar je laptop, oude map weggooien en de nieuwe er naartoe kopieeren?

Het scriptje wat daar staat is mij te ingewikkeld, al die variabelen zijn niet echt nodig hier.
Ik stel iets dergelijks voor:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
echo Netwerkverbinding maken...
net use Z: "\\Laptop\gedeelde map" wachtwoord /user:gebruikersnaam

rem LET OP, HIER VERWIJDER JE EEN HOOP BESTANDEN
rem ZORG DAT JE NAAR DE GOEDE MAP WIJST!
echo Oude bestanden verwijderen...
del /f /s /q Z:\*.*

echo Nieuwe bestanden kopiëren...
xcopy /s /c /d /e /h /i /r /y "D:\documenten" Z:

echo Netwerkverbinding sluiten...
net use /delete Z:

echo Klaar!
pause


Ik heb het uit de losse pols eruit geblaat, maar volgens mij kom je wel een aardig end in de goede richting zo.
In de net use commando moet je "Laptop" vervangen voor de netwerknaam van je laptop. Dit is dus niet "Laptop Oscar", dat is namelijk de omschrijving. Het opzoeken van je computer/laptopnaam gaat als volgt: Rechter muisknop deze computer > eigenschappen > tabblad netwerk > veldje computernaam
Verder je gebruikersnaam en wachtwoord vervangen voor een naam en wachtwoord die toegang hebben op je laptop.

[ Voor 3% gewijzigd door Verwijderd op 26-10-2007 15:33 ]


  • hexagram
  • Registratie: Oktober 2006
  • Niet online
Bedankt voor de antwoorden en de topic verplaatsing, en mijn excuses voor het verkeerd plaatsen ervan :).

@Equator: Ik had nog nooit van RoboCopy gehoord, en het ziet er functioneel uit, echter niet heel erg anders dan hoe dit batch scriptje er momenteel uit ziet of wel?

@c00: Het is gelukkig iets makkelijker, maar bedankt voor je input! Wat ik bedoel met netwerk is ons interne netwerk hier thuis. Wat ik begrijp uit jou stukje code is dat je eerst verbinding maakt met de andere pc via een username en wachtwoord, iets wat gelukkig niet benodigd is.

Wat je dus doet is een schijf 'Z' maken (die je linkt naar de netwerkmap, in dit geval \\netwerknaam\Laptop\gedeeldemap\ en dan m'n huidige D:\bla daarnaartoe kopiëren.

Dan komt het er (denk ik?) zo uit te zien:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
echo Netwerkverbinding maken...
net use Z: "\\netwerknaam\pcnaam\map"

rem LET OP, HIER VERWIJDER JE EEN HOOP BESTANDEN
rem ZORG DAT JE NAAR DE GOEDE MAP WIJST!
echo Oude bestanden verwijderen...
del /f /s /q Z:\*.*

echo Nieuwe bestanden kopiëren...
xcopy /s /c /d /e /h /i /r /y "D:\documenten" Z:

echo Netwerkverbinding sluiten...
net use /delete Z:

echo Klaar!
pause

Verwijderd

met robocopy vervang je alleen de bestanden die zijn gewijzigd.

daarnaast kan je makkelijk een uitgebreid logfile wegschrijven, zo kan je zien of er ooit iets mis is gegaan. daarnaast zie je zowiezo na elke job een heel logfile, waarin je dus elke dag ziet na de job of alles gelukt is of niet.

daarnaast zou ik dus nooit eerst alles wissen...

  • hexagram
  • Registratie: Oktober 2006
  • Niet online
Goed punt, het is natuurlijk gevaarlijk mocht ik eens een domme fout maken en dan daarna denken van k*t..

Nu moet ik eerlijk zijn, dit is pas het begin van meerder batch bestanden die ik door het hele huis wil gaan gebruiken voor alle familie leden die willen backuppen (foto bestanden, uni bestanden, emails e.d.) en dan hopelijk op een NAS (vandaar ook de netwerk-folder backup)).

Nu even dat RoboCopy installeren en eens in verdiepen, want 7-zip is nou niet iets wat ik dagelijks gebruik.

Het komt er dus op neer in pijltjes vorm:

PC backup --> Extern + Laptop
Laptop backup --> PC + Extern

Mooiste zou nog zijn dat hij automatisch een backup maakt elke 'x' tijdseenheid, maar dat komt over paar jaar wel als ik naar een 'ander' besturings systeem overstap ;)

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Robocopy is vrij eenvoudig te scripten:
code:
1
robocopy "\\server\share" "\\target\share" /Mir /Log:"d:\logs\logfile1.txt" /R:1 /W:5

Werkt het beste als je (met XP tenminste) robocopy in je path hebt staan.
Bij Vista is dat al het geval, daar wordt robocopy standaard bijgeleverd.

Drop de batchfile in een folder, maak een scheduled task aan, desnoods breid je je script een keer uit met een foutcontrole..
Iets als een enkele ping > als er geen resultaat is dan is de PC niet online en breek je de backup af.

[ Voor 28% gewijzigd door alt-92 op 26-10-2007 19:06 ]

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Verwijderd

Als je via de zogenaamde unc namen verbinding wil maken, (dus een \\naam\map manier) heb je de naam van het netwerk niet nodig. \\denaamvanjouwlaptop\denaamvanjemap is dus voldoende in plaats van \\denaamvanjenetwerk\denaamvanjouwlaptop\mapje.

Anders kan je proberen tot je een ons weegt :)
Pagina: 1