Avatar billede marmad Nybegynder
18. november 2004 - 14:23 Der er 9 kommentarer og
1 løsning

Script til backup

Hej

Jeg har nu selv rodet lidt frem og tilbage med en løsning til backup i DOS 6.22. Jeg vil nøjes med en ekstra disk, som jeg flytter en "kopi" af data over på. Forestiller mig at scripte mig ud af det. Men jeg er ikke hård nok på det område. Jeg regner med at bruge "backup" kommandoen til formålet, og så tage backup engang om dagen. Vil så gerne have at hver backup bliver lagt i hver sin mappe på backup-disken - Monday, Thuesday....

Er der nogen der vil hjælpe?

M
Avatar billede ejvindh Ekspert
25. november 2004 - 15:32 #1
Backup er vist ikke en intern kommando i dos. Men man kan bruge Xcopy istedet. Det er lidt langhåret at bruge ugedage som navne på mapperne, men man kan bruge dato istedet. Du skal nok rette linie 2 og 3 til efter dine behov:
----------
@echo off
set kilde=c:\
set back=d:\

ECHO SET date=%%3>dato1.bat
DIR/A-D/-W/L/-P DATO*.BAT  | FIND "dato1" >dato2.bat
CALL dato2.bat
DEL dato?.bat
xcopy %kilde%*.* %back%%date%\*.* /y /s
pause >nul
------------
Ulempen ved min metode er, at du hele tiden får nye mapper, og ikke får slettet de gamle. Jeg fandt på nettet et bud på, hvordan man kan slette mapper der er 7 dage gamle, men jeg kan ikke rigtig få det til at virke. Det kan være du har bedre held (og tålmodighed med debugging:
http://www.experts-exchange.com/Operating_Systems/MSDOS/Q_20947290.html
Avatar billede ejvindh Ekspert
25. november 2004 - 16:20 #2
Hvis fortløbende sletning er vigtig for dig, så fandt jeg på denne metode til at sørge for, at der kun er et vist antal mapper med backups. Disse mapper har så blot fortløbende nummering. Du kan tilrette antallet i linie 4:
---------------------
@echo off
set kilde=c:\
set back=d:\
set /a maxantal=7
If not exist antal.bat goto first
:videre
call antal.bat
set /a nrny=%nr%+1
echo set /a nr=%nrny% >antal.bat

xcopy %kilde%*.* %back%%nrny%\*.* /y /s
If %nrny% LEQ %maxantal% goto end
set /a nrslet=%nrny%-%maxantal%
del %back%%nrslet%\*.* /f /s /q
rmdir %back%%nrslet% /s /q
goto end

:first
echo set /a nr=0 >antal.bat
goto videre
:end
Avatar billede ejvindh Ekspert
30. november 2004 - 12:57 #3
Kunne det bruges til noget?
Avatar billede marmad Nybegynder
30. november 2004 - 13:34 #4
Har ikke testet det endnu... men havde egentlig accepteret svaret.. prøver igen :) tak for hjælpen!
Avatar billede ejvindh Ekspert
30. november 2004 - 13:37 #5
Nå, alt i orden! Du har nok også været ramt af Ekspertens nedbrud henover weekenden. Det har jeg også selv. Jeg takker for point. Du vender bare tilbage, hvis der er problemer...
Avatar billede marmad Nybegynder
10. december 2004 - 10:22 #6
Hej igen.. Jeg kan bare ikke få det til at køre... Umiddelbart er der ikke noget i variablerne?!? skriver jeg fx ECHO %maxantal% skriver den ingenting?!?
Avatar billede ejvindh Ekspert
10. december 2004 - 11:16 #7
Det lyder mærkeligt, eftersom maxantal jo bliver sat til 7 i 4. linie. Kan du ikke prøve at copy/paste din kode ind i denne tråd, så skal jeg prøve at se om der er noget der er gået galt. Hvis din kode er helt identisk med ovenstående 2. forslag, skal jeg lige prøve at forske lidt i forskelle mellem batch-kommandoer i Dos6.22 og så XP's batch-kommandoer (som er dem, jeg har testet på...).
Avatar billede marmad Nybegynder
10. december 2004 - 11:31 #8
Den er identisk... Hvis du gider og har tid er det jo perfekt ;-)
Avatar billede ejvindh Ekspert
10. december 2004 - 12:08 #9
Fejlen er, at Dos6.22 ikke kender /a parameteren for SET. Det gør det lidt kompliceret med en løsning, fordi det så ikke er muligt at arbejde med en parameter der er nummerisk, og som man kan addere/substrahere på). Jeg har dog en ide, men når nok ikke at poste før efter weekenden.
Avatar billede ejvindh Ekspert
10. december 2004 - 16:08 #10
Jeg nåede det alligevel. En ny udgave igen. Denne udgave giver dig (efterhånden) 7 mapper med hver sin sikkerhedskopi af det kopierede område (du tilretter linie 2 og 3). Jeg faldt for fristelsen til at kalde dem noget der ligner ugedage, men de passer altså kun, hvis du konsekvent hver dag backuper én gang, og starter på den rigtige ugedag (mandag).

En lidt mere elegant (og efterhånden også hurtigere) løsning ville være at erstatte linierne 10-12 med denne linie:
xcopy %kilde%*.* %back%\%nrny%\*.* /y /d /s
Det ville give en "incremental backup" - dvs. at du blot kopierer de filer der er blevet tilføjet og ændret siden sidst. Men ulempen er, at den så ikke FJERNER de filer du har slettet siden sidst.
------------------------------------
@echo off
set kilde=c:\
set back=d:\
If not exist antal.bat goto first
:videre
call antal.bat
goto nydag
:videre2
echo set nr=%nrny% >antal.bat
del %back%%nrny%\*.* /f /s /q
rmdir %back%%nrny% /s /q
xcopy %kilde%*.* %back%\%nrny%\*.* /y /s
goto end

:first
echo set nr=sun >antal.bat
goto videre

:nydag
if %nr%==sun goto sund
if %nr%==mon goto mond
if %nr%==tue goto tues
if %nr%==wed goto wedn
if %nr%==thi goto thir
if %nr%==fri goto frid
if %nr%==sat goto satu

:sund
set nrny=mon
goto videre2

:mond
set nrny=tue
goto videre2

:tues
set nrny=wed
goto videre2

:wedn
set nrny=thi
goto videre2

:thir
set nrny=fri
goto videre2

:frid
set nrny=sat
goto videre2

:satu
set nrny=sun
goto videre2

:end
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester