Espacio en disco y batch
Dikmas
Mensajes publicados
393
Estado
Miembro
-
dionysoos Mensajes publicados 85 Estado Miembro -
dionysoos Mensajes publicados 85 Estado Miembro -
Bonjour
J'ai créé un fichier batch afin de faire une sauvegarde de ma base mysql.
La sauvegarde fonctionne très bien, avec création d'un fichier de sauvegarde pour chaque jour de la semaine (je remercie encore chuka pour m'avoir très fortement aidé).
Un problème se pose. Sur certains serveurs où je dois mettre en place la stratégie de sauvegarde, l'espace disque ne permet pas la création de plusieurs fichiers de sauvegarde.
Par conséquent, j'aimerais que, si l'espace disque est insuffisant pour sauvegarder complètement les bases, un message soit envoyé (par mail ou dans un fichier log), disant à l'administrateur que l'espace disque est faible.
Autrement dis, je voudrais savoir si il existe un moyen de connaitre l'espace disque restant.
Merci d'avance
J'ai créé un fichier batch afin de faire une sauvegarde de ma base mysql.
La sauvegarde fonctionne très bien, avec création d'un fichier de sauvegarde pour chaque jour de la semaine (je remercie encore chuka pour m'avoir très fortement aidé).
Un problème se pose. Sur certains serveurs où je dois mettre en place la stratégie de sauvegarde, l'espace disque ne permet pas la création de plusieurs fichiers de sauvegarde.
Par conséquent, j'aimerais que, si l'espace disque est insuffisant pour sauvegarder complètement les bases, un message soit envoyé (par mail ou dans un fichier log), disant à l'administrateur que l'espace disque est faible.
Autrement dis, je voudrais savoir si il existe un moyen de connaitre l'espace disque restant.
Merci d'avance
Configuration: Windows XP Firefox 3.0.3
10 respuestas
-
Hola,
Acabo de modificar el script para que haga lo que pides; en el bucle for cuando se asigna un valor a NbKoFree con la orden SET no olvides añadir /a para indicar que es un valor numérico.
@echo off
rem contenido del comando CHKDSK puesto en Temp.txt
CHKDSK > C:\Temp.txt
rem recuperación de la línea que contiene el número de ko disponibles en el disco
FOR /F "delims=" %%a IN ('findstr "Ko" C:\Temp.txt') DO ECHO %%a > C:\Temp1.txt
rem recuperación del número de asignación disponible
FOR /F "tokens=1 delims= " %%i IN (C:\Temp1.txt) DO SET /a NbKoFree=%%i
Echo te queda: %nbKoFree% ko en el disco
rem prueba si el valor de la variable es menor que el valor definido
IF %NbKoFree% LSS 37000000 ECHO Espacio en disco insuficiente >> D:\fichier.txt -
Nadie puede ayudarme? (Es un poco un up no solicitado pero realmente necesito ayuda :S)
-
Hola, no hay ningún comando que haga automáticamente esta tarea, pero con un poco de sapiencia puedes lograrlo con el comando CHKDSK. Te devolverá un resultado como este:
C:>CHKDSK
El tipo de sistema de archivos es NTFS.
Advertencia! No se especificó el parámetro F.
Ejecución de CHKDSK en modo de sólo lectura.
CHKDSK está verificación de archivos (etapa 1 de 3)...
La verificación de archivos ha terminado.
CHKDSK está verificación de índices (etapa 2 de 3)...
La verificación de índices ha terminado.
CHKDSK recupera archivos perdidos.
CHKDSK está verificación de descriptores de seguridad (etapa 3 de 3)...
La verificación de descriptores de seguridad ha terminado.
CHKDSK ha encontrado espacio libre marcado como asignado en la
tabla bitmap de la tabla maestra de archivos (MFT).
Corrección de errores en el mapa del volumen.
Windows ha detectado problemas en el sistema de archivos.
Ejecute CHKDSK con la opción /F para corregirlos.
39013852 KB de espacio en disco en total.
25569392 KB en 214858 archivos.
60520 KB en 6680 índices.
0 KB en sectores defectuosos.
290016 KB usados por el sistema.
65536 KB usados por el archivo de registro.
13093924 KB disponibles en el disco.
4096 bytes en cada unidad de asignación.
9753463 unidades de asignación totales en el disco.
3273481 unidades de asignación disponibles en el disco.
Solo tienes que devolver el resultado con echo a un archivo de texto temporal, procesarlo para recuperar solo la línea que nos interesa
por lo que esa línea es "3273481 unidades de asignación disponibles en el disco".
Luego la procesas para obtener solo 3273481
para hacer estos tratamientos mira el comando FOR /F ;)
Y una vez que hayas recuperado ese valor haces un simple cálculo
unidades de asignación disponibles en el disco X bytes en cada unidad de asignación
el resultado será el tamaño restante en tu disco duro en bytes.
Puede parecer complicado, pero te aseguro que es muy sencillo, buena suerte. -
Gracias por tu respuesta. Veré si logro arreglármelas.
-
@echo off
rem contenido del comando CHKDSK colocado en Temp.txt
CHKDSK > C:\Temp.txt
rem recuperación de la línea que contiene el número de ko disponibles en el disco
FOR /F "delims=" %%a in ('findstr "Ko" C:\Temp.txt') DO ECHO %%a > C:\Temp1.txt
rem recuperación del número de asignaciones disponibles
FOR /F "tokens=1 delims= " %%i in (C:\Temp1.txt) DO SET NbKoFree=%%i
Echo il vous reste : %nbKoFree% ko sur le disque
Voilà quelque chose dans le genre, je viens de le tester, ça fonctionne. Par contre, le temps que la commande CHKDSK s'exécute, 5 bonnes minutes, tu pourrais croire que l'appli a planté mais non.
Donc ça marche bien mais c'est quand même assez long :( -
-
Hola,
Si pudieras dárnosla, estaría encantado, no la conozco. -
Hola
Gracias, dionysoos. Aparte de que tarda un poco, funciona.
Tendría otra pregunta.
Me gustaría que si %nbKoFree% es inferior a 37 000 000 Ko (por ejemplo) escriba "espacio en disco insuficiente" en un archivo .txt.
Hay que usar la instrucción IF, pero el signo "<" no funciona. ¿Existe alguna forma de hacerlo?
IF %nbKoFree% < inferior a > 37000000 ECHO Espacio en disco insuficiente >> D:\archivo.txt -
funciona en Windows XP Pro, pero no en 2003 Server :/
Ejecuta el comando CHKDSK
No me crea el archivo Temp1.txt
por lo tanto, no sabe dónde buscar la variable %NbKoFree%
hice un simple copiar/pegar de XP Pro a 2003 Server, la arquitectura es exactamente la misma. -
No sé, tal vez una cuestión de derecho en escritura a verificar.