2010-09-15 15 views
1

Si mon client .NET utilise System.IO.File.Copy pour copier un fichier de \ server1 \ share1 \ file1.txt dans \ sever1 \ share2 \ file2 .txt, les données du fichier sont lues au client, puis réécrites sur le serveur.Copier un fichier sur un chemin réseau sans le transférer sur ma propre machine

Existe-t-il un moyen facile d'accélérer un peu les choses en mettant un processus sur la machine du réseau qui fait vraiment la copie?

Je ne recherche pas de conseils sur la programmation d'un tel service. Je préférerais trouver l'outil ou la fonctionnalité Windows qui le fait déjà.

Répondre

3

Cela ressemble à un travail pour telnet ou ssh, mais cela peut être difficile à mettre en place. Je vous recommande de regarder PsExec de Microsoft qui vous permet d'exécuter des programmes sur une machine distante. Vous pouvez simplement utiliser le programme copy trouvé dans system32 via PsExec.

Il n'est pas nécessaire de créer votre propre programme pour cela, utilisez simplement les outils de ligne de commande trouvés sur la machine cible.

0

Presque certainement. Je peux penser à un couple de base moyens de le faire:

  1. Créer simple console applicaton qui prend les chemins source et destination/noms de fichiers, et effectue une File.Copy(). Placez-le sur la machine distante dans un endroit connu. Appelez ensuite le processus sur la machine distante à l'aide de PsExec. Votre application cliente doit fonctionner en toute confiance pour invoquer un processus par programme, et l'utilisateur exécutant l'application doit avoir l'autorisation d'exécuter des programmes sur le serveur distant.

  2. Créez une méthode Web simple qui prend à nouveau la source et la destination et effectue la copie. Cela nécessite de configurer IIS sur le serveur réseau avec les autorisations requises pour accéder aux fichiers en dehors du "sandbox" IIS. Cependant, il nécessite moins d'autorisations de code client.

+0

Pourquoi créer une application de console? Quel est le problème avec Windows propre copie? –

+0

Vous pouvez accorder l'accès à votre propre application console sans nécessiter d'accès par programmation à Windows/System32, vous pouvez effectuer une validation côté serveur des règles métier supplémentaires de la copie à effectuer, vous pouvez enregistrer les modifications de la structure de fichier pour des raisons d'audit, etc. Dans le cas de base, il n'y a rien de "faux" avec la copie de Windows, mais ces choses pourraient être utiles maintenant ou plus tard. – KeithS

0

FYI CopyFileEx le fait déjà si votre client et serveur sont Vista et versions ultérieures. Donc, ne pas pointer dans la duplication de cet effort dans ce cas.

-scott