delestage auto des backup plus anciens que 7 jours sur FTP

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
civodul88
Batcheur occasionnel
Messages : 1
Enregistré le : 01 avr. 2012 10:35

delestage auto des backup plus anciens que 7 jours sur FTP

Message par civodul88 »

bonjour a tous Wink

voila plusieurs jours que cherche une solution pour supprimer mes backups de mon serveur ftp plus anciens que x temps automatiquement.

mon serveur tourne avec un windows 2008r2,j'utilise un batch en tâches planifiée pour envoyer les sites et leurs BDD sur le serveur ftp.
mais le probléme est que lorsque l'éspace de stockage ftp est au maximum de ca capacité les backups nne se font plus.
si j'oublis de faire un nettoyage manuel sur le serveur ftp je me retrouve avec des backups trops anciens.

sur le principe de mon batch un dossier "sites_backups" est a la racine du serveur ftp ,dans ce dossier le batch crée un dossier renomé avec la date du jour "AA/DD/MM' qui contient une archive zip pour chaque site.

je voudrais donc en partant du dossier AA/DD/MM pouvoir comparer la date actuel à celles des dossiers et suprimmer automatiquement les dossiers plus anciens de 7 jours.

voici le fichiers batch dans son état actuel :

Code : Tout sélectionner

@echo off

set Annee=%DATE:~6,4%
set Mois=%DATE:~3,2%
set Jour=%DATE:~0,2%

set today=%Annee%-%Mois%-%Jour%
for /f "tokens=1" %%i in ('date /t') do set thedate=%%i

set mm=%thedate:~3,2%
set dd=%thedate:~0,2%
set yyyy=%thedate:~6,4%

if %dd%==08 (
set dd=8 ) else (
if %dd%==09 (
set dd=9 ) )

if %mm%==08 (
set mm=8 ) else (
if %mm%==09 (
set mm=9 ) )

set /A dd=%dd% - 20
set /A mm=%mm% + 0

if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
if %mm%==12 goto SET31

goto ERROR

:SET31
set /A dd=31 + %dd%
goto DONE

:SET30
set /A dd=30 + %dd%
goto DONE

:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto DONE

:SET29
set /A dd=29 + %dd%

:DONE
if /i %dd% LSS 10 set dd=0%dd%
if /I %mm% LSS 10 set mm=0%mm%
set past=%yyyy%-%mm%-%dd%

set db_host=localhost
set db_user=
set db_pass=
set SCRIPT_NAME="c:\ftp_script.ftp"
set ftp_host=machin.net
set ftp_user=toto
set ftp_pass=mon mot de passe
set ftp_dir=le dossier racine du FTP

set db_name=site1 sourcebans
"c:\mysqldump.exe" -h %db_host% -u %db_user% -p%db_pass% --complete-insert --create-options --add-drop-table %db_name% > "C:\chemin \temp\site1.sql"
"c:\7z.exe" a -tzip c:\site1.zip -r C:\chemin racine\site1\*.*
@del "C:\chemin \temp\site1.sql"

set db_name=site2
"c:\mysqldump.exe" -h %db_host% -u %db_user% -p%db_pass% --complete-insert --create-options --add-drop-table %db_name% > "C:\C:\chemin \temp\site2.sql"
"c:\7z.exe" a -tzip c:\site1.zip -r C:\chemin racine\site2\*.*
@del "C:\chemin \temp\site2.sql"

::ETC ETC


set db_name=mysql
"c:\mysqldump.exe" -h %db_host% -u %db_user% -p%db_pass% --complete-insert --create-options --add-drop-table %db_name% > "c:\mysql_structure.sql"
"c:\7z.exe" a -tzip c:\mysql_structure.zip c:\mysql_structure.sql
@del "c:\mysql_structure.sql"

echo open %ftp_host%>> %SCRIPT_NAME%
echo %ftp_user%>> %SCRIPT_NAME%
echo %ftp_pass%>> %SCRIPT_NAME%
echo binary>> %SCRIPT_NAME%
echo cd %ftp_dir%>> %SCRIPT_NAME%
echo prompt>> %SCRIPT_NAME%
echo mdel %past%/*.*>> %SCRIPT_NAME%
echo rmdir %past%>> %SCRIPT_NAME%
echo mkdir %today%>> %SCRIPT_NAME%
echo cd %today%>> %SCRIPT_NAME%
echo mput c:\*.zip>> %SCRIPT_NAME%
echo disconnect>> %SCRIPT_NAME%
echo bye>> %SCRIPT_NAME%
ftp -s:%SCRIPT_NAME%
::SUPPRESSION DES ZIP TEMP SUR LE SERVEUR
@del "c:\site1.zip"
@del "c:\site2.zip"
::ETCETC
@del %SCRIPT_NAME% /q
=====================================================
je précise que je suis un newbies en batch ^^
y aurait il une âme charitable qui pourrais me sortir de cette impasse en vous remerciant à l'avance.;)

j'ai tenter de faire ceci dans un nouveau batch mais cela ne fonctionne pas :(
=============================================================

Code : Tout sélectionner

@echo off

set Annee=%DATE:~6,4%
set Mois=%DATE:~3,2%
set Jour=%DATE:~0,2%

set today=%Annee%-%Mois%-%Jour%
for /f "tokens=1" %%i in ('date /t') do set thedate=%%i

set mm=%thedate:~3,2%
set dd=%thedate:~0,2%
set yyyy=%thedate:~6,4%

if %dd%==08 (
set dd=8 ) else (
if %dd%==09 (
set dd=9 ) )

if %mm%==08 (
set mm=8 ) else (
if %mm%==09 (
set mm=9 ) )

set /A dd=%dd% - 20
set /A mm=%mm% + 0

if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
if %mm%==12 goto SET31

goto ERROR

:SET31
set /A dd=31 + %dd%
goto DONE

:SET30
set /A dd=30 + %dd%
goto DONE

:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto DONE

:SET29
set /A dd=29 + %dd%

:DONE
if /i %dd% LSS 10 set dd=0%dd%
if /I %mm% LSS 10 set mm=0%mm%
set past=%yyyy%-%mm%-%dd%
set ftp_host=macihn .net
set ftp_user=toto
set ftp_pass=mon passe
set ftp_dir=sites_backups
echo open %ftp_host%>> %SCRIPT_NAME%
echo %ftp_user%>> %SCRIPT_NAME%
echo %ftp_pass%>> %SCRIPT_NAME%
echo binary>> %SCRIPT_NAME%
echo cd %ftp_dir%>> %SCRIPT_NAME%
 for /f "tokens=6,7,8,*" %%a in (ftp_dir) do (
    echo %%d
 )
echo %%c %%a %%b - %%d
call :month %%a
call :days %%c %month% %%b
IF !days! LEQ 4 echo DEL %%d >>ftpdel*/.zip
echo disconnect>> %SCRIPT_NAME%
echo bye>> %SCRIPT_NAME%
ftp -s:%SCRIPT_NAME%
========================================================
Répondre