Automatikus mentés virtuális Windowsból szerverre

Olyan problémával kerültem szembe, aminek a megoldása a végeredményt látva nem tűnt túl bonyolultnak, mégis több órányi kutatás, tesztelés eredménye a következő megoldás.

A feladat az volt, hogy egy virtuális gépen futó alkalmazás adatbázisát minden nap automatikusan mentsem egy másik gépre/szerverre/NAS-ra. A nehézséget az okozta, hogy a hálózati meghajtók csak akkor "léteznek" a rendszerben, ha a felhasználó be van jelentkezve. Ez egy virtualizált gép esetében nem feltétlenül van így.

A megoldás 2 lépésből áll:

1. lépés: másolást végző futtatható állomány elkészítése (autobackup.bat)

net use X: \\192.168.1.2\Backup /USER:admin password
robocopy c:\Program X: /xo
net use X: /delete

Az adott IP cím minta, ide a szerver/NAS elérési címét kell megadni, ahogyan az adott könyvtár eléréséhez szükséges felhasználónévvel és jelszóval is hasonló a helyzet.
A "Robocopy" egy nagy fájlok másolására használható Windows alkalmazás. Az "/xo" kapcsoló megakadályozza a régebbi fájlok újbóli másolását/felülírását. Ez abban az esetben jöhet jól, ha a mentés alap könytára helyben is tartalmaz több mentés állományt (pl. számlázó program napi mentése esetén).

2. lépés: Ütemezés

Ehhez a Vezérlőpult > Felügyeleti eszközök > Feladatütemező szolgáltatását kell indítanunk, majd olyan ütemezést állítunk be, ahol megadjuk, hogy mely fiókkal fusson, de akkor is, ha az nincs bejelentkezve. Emellett a kívánt időzítés is megadható, így a mentések folyamatosan futnak napi/heti rendszerességgel...

 

Ütemezett hálózati mentés

Egy partnernél futottam bele a problémába. Egy telepített alkalmazásról (számlázó program) a beállítások alapján napi mentést készített a program maga. Viszont meg kellett oldani, hogy egy hálózati meghajtóra is átkerüljön a mentés.

Ütemezett feladat nem használja az UAC beállításait, így a felhasználó által bemappelt meghajtó sem látszik!

Ennél fogva a megoldás a következő:

REM felcsatolom UAC-on kivül a meghajtót
net use X: \\<serverIP>\<directory> /USER:username passwd
robocopy c:\<source>\<directory>\ X: /xo
REM Lekapcsolódok a szerverről
net use X: /delete

Az /xo kapcsoló csak a két könyvtár közti fájlok közül az újakat másolja. Azhaz ha egy régi fájlném szerepel mindkét helyen, de a forrás útvonalon újabb a létrehozási/módosítási dátum, felülírja.