File Server: Migrar shares de un servidor a otro

Si leiste el articulo de Cambiar permisos en shares con RMTSHARE + PowerShell tal vez hayas echado en falta información sobre como migrar shares masivamente.
Con los comandos net share y permcopy (herramienta del Kit de Recursos de Windows) crearemos desde linea de comandos los recursos compartidos y clonaremos los permisos del share que tenian en el servidor origen.

Lo primero que tenemos que hacer es exportar un listado de los shares desde el servidor origen.



Nos genera un txt con 5 columnas separadas por tabulador: nombre del share, ruta, tipo, numero de conexiones y descripción, pero solo nos interesan las dos primeras.

Shared$ K:\Datos\Shared
Financiero$ K:\Datos\Financiero
Direccion$ K:\Datos\Direccion
Contabilidad$ K:\Datos\Contabilidad

Corregiremos las rutas del fichero para que coincidan con las rutas de las carpetas en el servidor destino y tendremos cuidado con los caracteres especiales que puedan contener: tildes, eñe... ya que los bat no los representan correctamente.

  • Para que el bat pinte una ñ, utilizaremos el caracter ascii Alt+207, que dibujara el simbolo ¤
  • Para que el bat pinte una á, utilizaremos el caracter ascii Alt+255, que dibujara el simbolo   (blanco)
  • Para que el bat pinte una í, utilizaremos el caracter ascii Alt+173, que dibujara el simbolo ¡
  • Para que el bat pinte una ó, utilizaremos el caracter ascii Alt+189, que dibujara el simbolo ¢
  • Para que el bat pinte una ú, utilizaremos el caracter ascii Alt+156, que dibujara el simbolo £


Mediante el siguiente bat recorreremos el fichero, crearemos los shares (primero con permiso everyone Full Control) y despues clonaremos el permiso de los shares de origen en los shares en destino.

@echo off
set servidororigen=SERVERFS01
set servidordestino=SERVERFS02
set listado=listadoshares.txt
REM CUIDADO CON LAS TILDES!! á= é =‚ í=¡ ó=¢ ú=£ ñ=¤
REM Separador de columnas [Tab]
For /F "delims=  eol=* tokens=1,2" %%i IN (%listado%) do (
echo ------%%i-------
REM creamos el share
net share %%i="%%j" "/GRANT:EVERYONE,FULL"
REM copiamos los permisos de origen 
permcopy \\%servidororigen% %%i \\%servidordestino% %%i
)

Comentarios