Ik draai een webshop op een webserver (remote), hier maak ik regelmatig SQL backups van. Die backups worden in een directory op de FTP opgeslagen.
Ik werd een beetje ziek van het handmatige gedoe -> Nieuwste .sql bestand downloaden, phpMyAdmin browsen, database selecteren en via phpMyAdmin het .sql bestand importeren.
Na eens geprobeerd te hebben het .sql bestand te importeren met de mysql daemon merkte ik dat dit minstens 10x zo snel ging.
Met die conclusie heb ik een beetje uitgezocht hoe ik een batch bestandje schrijf.
De situatie is als volgt; ik heb op die remote ftp de .sql dumps staan, genaamd als (bijv.) db_webshop-20040826093905.sql. (dus db_webshop-$jaar$maand$dag$uur$minuten$seconden.sql)
Dus de volgende globale stappen:
Ik heb het volgende geprobeerd (oude code is uitgecommentaard):
Ik hoop dat iemand me kan helpen met die FOR-statement, alvast bedankt!
Ik werd een beetje ziek van het handmatige gedoe -> Nieuwste .sql bestand downloaden, phpMyAdmin browsen, database selecteren en via phpMyAdmin het .sql bestand importeren.
Na eens geprobeerd te hebben het .sql bestand te importeren met de mysql daemon merkte ik dat dit minstens 10x zo snel ging.
Met die conclusie heb ik een beetje uitgezocht hoe ik een batch bestandje schrijf.
De situatie is als volgt; ik heb op die remote ftp de .sql dumps staan, genaamd als (bijv.) db_webshop-20040826093905.sql. (dus db_webshop-$jaar$maand$dag$uur$minuten$seconden.sql)
Dus de volgende globale stappen:
- Verbind met FTP
- Haal het nieuwste bestand uit de SQL dumps map op
- Download dit bestand
- Verbind met FTP, browse naar directory met SQL dumps
- Haal lijst van bestanden op
- Zoek het nieuwste bestand uit de lijst
- Download dat bestand met het GET commando
- Verbreek FTP verbinding
Ik heb het volgende geprobeerd (oude code is uitgecommentaard):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| @echo off
::
:: Get newest file from given FTP directory
::
set ftp_host=ftp.host
set ftp_user=username
set ftp_passw=password
set ftp_dir=/dir/to/webshop/admin/backups/
set default_dir=D:\webshop\admin\backups\
echo.
echo.
echo *** This script downloads the newest file from the configured FTP
echo to the directory set by the user.
echo.
set /p user_dir=Directory to download file to:
if "%user_dir%"=="" set user_dir=%default_dir%
echo.
echo *** Download directory set to '%user_dir%'
echo.
echo.
:: Create the temporary FTP script file
(
echo %ftp_user%
echo %ftp_passw%
echo cd %ftp_dir%
echo ascii
echo ls
echo quit
) > script.ftp
:: Open FTP connection and get newest file from remote directory
ftp -s:script.ftp %ftp_host% > output.ftp
:: Get latest ftp file
for /f "tokens=1* delims=" %%A IN ('type output.ftp') DO IF "%%A"=="^.sql" set newest_file=%%A
echo.
echo Newest filename = %newest_file%
goto finish
:finish
:: For the paranoid: overwrite the temporary file before deleting it
TYPE NUL >script.ftp
DEL script.ftp
::TYPE NUL >output.ftp
::DEL output.ftp
::FOR /F "tokens=*" %%A IN ('dir %user_dir% /b /o:d') do set lastfile=%%~fA
::POPD
::echo Newest file: %lastfile%
echo.
echo.
echo *** Reading directory finished.
echo.
goto end
:error
echo.
echo An unknown error occured. Isn't it nice and spooky to discover an unknown error?
echo.
goto end
:end
set default_dir=
set user_dir= |
Ik hoop dat iemand me kan helpen met die FOR-statement, alvast bedankt!