delestage auto des backup plus anciens que 7 jours

Eléphanteau du PHP | 23 Messages

30 mars 2012, 09:37

bonjour a tous ;)

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
=====================================================================

y aurait il une âme charitable qui pourrais me sortir de cette impasse en vous remerciant à l'avance.;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 mars 2012, 13:21

Salut,

Je sais pas si tu a vu ais tu a posté ton message dans PHP débutant :mrgreen:
Pour bash c'est dans autre techno.

En dehors de cela tu doit pouvoir avoir la date de création des dossiers. Des que tu a cette info une suppression est envisageable.
[*] lister le répertoire FTP cible
[*] bouclée sur la liste des fichiers / dossier
[*] si c'est un dossier différent de . Et .. Et qu'il ne. Commence pas par un point tu récupère la date de création et ensuite tu supprimer si aujourd'hui moins date création > 7

Y a moyen de le faire je crois mais je sais plus.

Perso je ferai un script php pour cela, quitte a le lancer en ligne de. Commande

@+
Il en faut peu pour être heureux ......