.net - sirve - ¿File.Copy() desde una red compartida a otra compartida en la misma máquina, copia el archivo a través de la red?
para que sirve una carpeta compartida (5)
Si mi cliente .NET usa System.IO.File.Copy para copiar un archivo de / server1 / share1 / file1.txt a / sever1 / share2 / file2.txt , ¿los datos del archivo se leen al cliente y luego se vuelven a escribir? hasta el servidor? En caso afirmativo, ¿hay alguna forma de que un cliente .NET pueda copiar un archivo en un servidor a otra ubicación en el mismo servidor sin tener que realizar un corte circular del archivo? ¿Hay alguna diferencia si el recurso compartido de destino es el mismo que el recurso compartido de origen?
El contenido del archivo debe pasar por la máquina que realiza la operación Copiar. La única forma de evitar esto es ejecutar programas en la (s) máquina (s) de destino que realizan la transferencia sin la máquina del cliente en el medio. como FXP que usa FTP para transferir servidor a servidor.
Sin embargo, la apertura de esta vía también puede abrir una brecha de seguridad y sospecho que muchos administradores serían reacios a permitir esto.
Esa es una pregunta excelente: parece que no puedo encontrar una respuesta definitiva, así que quizás lo mejor sea disparar Wireshark para una prueba.
Sí lo hace. Puedo decir esto por experiencia personal al copiar archivos Zip de 10 GB entre máquinas. La máquina "cliente" estaba en una costa diferente de América que las otras dos máquinas. Entre las dos máquinas directamente de una de ellas tomó un tiempo razonable. Tratar de iniciar la copia desde la máquina en la otra costa tomó ~ 10 horas :(
Si es posible hacer un movimiento en lugar de una copia, eso debería suceder al instante. De lo contrario, debe poner un servicio en la máquina de destino para que pueda llamar de forma remota.
Esta es una vieja pregunta, pero no creo que haya una respuesta correcta aquí.
De hecho, hay 2 preguntas (3 preguntas, pero la tercera es redundante).
La primera pregunta es si un proceso .Net que se ejecuta en una (3) máquina cliente copia un archivo de un recurso compartido de red a otro recurso compartido de red, ¿hace una diferencia si los recursos compartidos de origen y destino están en la misma computadora (diferente del cliente ) frente a 2 computadoras diferentes? La respuesta es claramente no. No hay ningún mecanismo, ningún túnel secreto entre los recursos compartidos de red. Los datos deben viajar al cliente y luego al otro compartir. No importa si la operación es una copia o un movimiento, y en realidad no importa si las acciones están en la misma computadora que el cliente (y realmente se accede a las carpetas como recursos compartidos de red con una ruta UNC y no como carpetas locales).
La segunda pregunta es, ¿cómo se puede evitar este viaje de ida y vuelta? Aquí hay algunas sugerencias:
- Si el origen y el destino están en el mismo recurso compartido, mover un archivo no requiere un viaje de ida y vuelta, porque el sistema operativo solo actualiza las referencias en el sistema de archivos.
- Un proceso que se ejecuta en la máquina con el recurso compartido de origen o destino puede realizar la copia sin una ida y vuelta al cliente. Este proceso puede ser una copia remota, etc. si cualquiera de los hosts ejecuta Linux. En un host de Windows, puede instalar un servicio WCF que copie los archivos cuando llega una solicitud de un cliente.