lunes, 24 de agosto de 2009

Automatizar la copia de archivos desde al servidor

Muchas veces tienes que copiar un archivo, que no requiere instalación, desde un servidor a todos o a muchos ordenadores de la red. La carpeta destino es la misma en todos los equipos y no tiene normalmente ninguna dificultad añadida.

Llevaba tiempo con este tema en la cabeza, pero siempre encontraba alguna cosa mejor que hacer y al final lo solucionaba de la forma básica o sea, pasando por todos los ordenadores y copiando manualmente los archivos desde el servidor.

Recordaba que había una forma sencilla de implementar un scrip que se ejecutase al inicio del ordenador e hiciera la copia e forma automática, así que me puse a enredar por el servidor haciendo algunas pruebas hasta que al final funciono correctamente.

Explico los pasos para la copia automática de un archivo desde un servidor Windows 2003 Server a equipos con XP y Vista.

Paso 1 Crear la carpeta compartida

El proceso de actualización lo quiero hacer cuando arranque el ordenador. Se va a ejecutar despues de que el equipo esablezca la red, pero las unidades de red no las va a crear hasta que inicie el usuario, lo que va a ser posterior al arranque.

Crear una carpeta en el servidor, asignar los permisos adecuados y asegurarse que se puede acceder vía UNC ( \\servidor\recurso compartido\nombre carpeta).

Paso 2 Crear el scrip

  • Crear un archivo .bat con el comando que tiene que ejecutar. Es el mismo que utilizarías en la línea de comando de tu ordenador. En este caso sería algo así (poniendo la ruta que corresponda a la red)
xcopy file://servidor/recurso/carpeta/archivo "c:\Archivos de programa\carpeta\" /Y

  • Xcopy es un comando muy util para copiar archivos y carpetas
  • file://servidor/... es la ubicación del archivo que queremos copiar
  • c:\archivos de programa es la ubicación de destino del archivo. en este ejemplo lo pongo entre comillas dobles ("") por los espacios en blanco. Si no le pones las comillas dobles no coge correctamente la ruta de destino. Como indico con la ruta de destino una carpeta y no u archivo le pongo al final otra "\", ya que en Vista si no tiene esa barra no lo reconoce como una carpeta y crea un archivo con el nombe de la carpeta con el consiguiente follón.
  • /Y es un parámetro de Xcopy para que no pida la confirmación a la hora de sobreescribir el archivo existente
Paso 3 Crear la politica en el servidor

  • Desde usuarios y equpos de active directory del servidor asignar una nueva politica/directiva al grupo de equipos que querais que esto funcione.
  • Desde las propiedades del grupo --> solapa directivas --> Nueva (indicar un nombre claro) --> Modificar
  • En la ventana que se abre ir a la categoría de Configuración de Equipo-->Configuración de Windows -->Archivos de comando -->Inicio
  • Ahí se puede asignar un nuevo archivo (el que hemos creado antes)
Comentarios
Hay que tener cuidado con los permisos de los usuarios, ya que si no tiene permisos para acceder a una carpeta no va a ejecutar la politica correctamente
NO utilizar el comando "Pause" se queda esperando a que pulses una tecla. El problema es que como todavía no has iniciado la sesión se queda el ordenador cogado hasta que lo resetees
En windows 2008 server se puede hacer más fácil por lo poco que he visto, pero todavía no me he metido con ese tema

3 comentarios:

  1. Consulta, suponiendo que el archivo a reemplazar en las PC clientes, esta alocado en el perfil de usuario: o sea /documents and settings/Fulano

    Existe algun parametro para que lo copie sea cual sea el usuario que inicia secion? algo como: %username% Podrias poner un ejemplo del .bat?

    me seria de gran ayuda!

    ResponderEliminar
  2. Hola

    si lo quieres copiar a su perfil puedes utilizar la variable %userprofile%

    Este sería un ejemplo de lo que poner dentro del .bat

    Copia un archivo de la carpeta del servidor a la carpeta del perfil de usuario que inicie la sesión

    xcopy \\Servidor\datos$\actualizacion\version2.exe "%userprofile
    %\" /Y

    ResponderEliminar
  3. Un detalle, en W7 ( no estoy seguro en vista) si quieres que se ponga en el escritorio tienes que utilizar la carpeta Desktop, para la carpeta Mis Documentos la carpeta Documents, etc

    ResponderEliminar