Se il mio client .NET utilizza System.IO.File.Copy per copiare un file da \ server1 \ share1 \ file1.txt a \ sever1 \ azione2 \ file2.txt, fa i dati del file vengono lette giù al client e poi riscritto sul server? In caso affermativo, esiste un modo in cui un client .NET può copiare un file su un server in un'altra posizione sullo stesso server senza eseguire il round-trip del file? Fa la differenza se la quota di destinazione è la stessa della condivisione di origine?File.Copy() da una condivisione di rete a un'altra condivisione sulla stessa macchina copia il file sulla rete?
risposta
Sì, sì. Posso dire questo per esperienza personale con la copia di file Zip da 10 GB tra le macchine. La macchina "client" si trovava su una costa diversa dall'America rispetto alle altre due macchine. Tra le due macchine direttamente da uno di loro è stata presa una quantità ragionevole di tempo. Cercando di avviare la copia dalla macchina sull'altra costa sono state necessarie circa 10 ore :(
Questa è una domanda eccellente: non riesco a trovare una risposta definitiva, quindi forse la cosa migliore sarebbe attivare Wireshark per un test.
Il contenuto del file deve passare attraverso la macchina che esegue l'operazione Copia. L'unico modo per aggirare questo è eseguire i programmi sul computer di destinazione) che esegue il trasferimento senza la macchina client nel mezzo, come ad esempio FXP che utilizza FTP per trasferire server su server
Tuttavia, l'apertura di questo percorso potrebbe anche aprire una scappatoia di sicurezza e sospetto che molti amministratori sarebbero riluttanti a consentire questo
Se è possibile eseguire una mossa anziché una copia, ciò dovrebbe avvenire immediatamente, altrimenti è necessario mettere un servizio sul computer di destinazione in modo da poterlo chiamare da remoto.
Davvero? Puoi provarlo? – flipdoubt
Non sono sicuro di cosa intendi per "dimostrare" qui. L'ho appena dimostrato a me stesso in Windows Vista. Provaci. Usa Explorer sulla macchina A per accedere a una condivisione sulla macchina B, e 'Taglia' una grande sottocartella e 'Incolla' da qualche altra parte sotto la stessa condivisione. Si muoverà all'istante. –
Come spiegato da @cdonner, funzionerà solo se le due cartelle si trovano sulla stessa condivisione. Se ci sono due diverse condivisioni, lo spostamento verrà eseguito come copia + cancella includendo un round-trip al client. – Anlo
Questa è una vecchia domanda, ma non penso che ci sia una risposta corretta qui.
Ci sono in effetti 2 domande (3 domande, ma il 3 è ridondante).
La prima domanda è se un processo .Net in esecuzione su un (terzo) computer client copia un file da una condivisione di rete a un'altra condivisione di rete, fa la differenza se le condivisioni di origine e di destinazione si trovano sullo stesso computer (diverso dal client) rispetto a 2 computer diversi? La risposta è chiaramente no. Non esiste alcun meccanismo, nessun tunnel segreto tra le condivisioni di rete. I dati devono viaggiare verso il cliente e poi verso l'altra condivisione. Non fa differenza se l'operazione è una copia o uno spostamento e in realtà non fa alcuna differenza se le condivisioni si trovano sullo stesso computer del client (e si accede effettivamente alle cartelle come condivisioni di rete con un percorso UNC e non come cartelle locali).
La seconda domanda è: come si può evitare questo round-trip? Ecco alcuni suggerimenti:
- Se la sorgente e il target si trovano sulla stessa condivisione, lo spostamento di un file non richiede un round trip, in quanto il sistema operativo aggiorna solo i riferimenti nel file system.
- Un processo in esecuzione sulla macchina con la sorgente o la condivisione di destinazione può eseguire la copia senza un ritorno al cliente. Questo processo può essere una copia remota ecc. Se uno degli host esegue Linux. Su un host Windows, è possibile installare un servizio WCF che copia i file quando arriva una richiesta da un client.
- 1. Esiste una coda che funziona sulla condivisione di rete?
- 2. Copia file su rete tramite condivisione file, autenticazione utente
- 3. Creazione di una rete di condivisione file P2P/decentralizzata
- 4. collegamento a una directory sulla rete
- 5. WebRTC sulla rete locale?
- 6. Copia di file tramite rete (richiede autenticazione)
- 7. Una connessione a localhost esce sulla rete?
- 8. Serializzazione Java sulla rete
- 9. Creazione di una chiave asimmetrica sulla rete
- 10. Come accedere alla condivisione C $ in una rete?
- 11. Come condividere jboss sulla rete
- 12. Accesso all'host virtuale dal computer sulla stessa rete locale
- 13. Come accedere a Condivisione di rete da Raspberry Pi con IoT Core nell'app UWP
- 14. Socket.io/node.js sulla rete locale?
- 15. Cookie corruzione sulla rete mobile
- 16. il caching del browser quando i file vengono serviti da un file-condivisione di rete
- 17. Servizio Windows non può accedere alla condivisione di rete
- 18. Comando PowerShell per copiare file sulla macchina remota
- 19. Passando una funzione sulla rete in Haskell
- 20. SQL violazione di condivisione di file CE per più processi sulla macchina locale
- 21. Impossibile accedere ai file su una condivisione di rete mappata da un servizio Windows
- 22. Abilita il dispositivo Android ad accedere a IIS Express mentre sulla stessa rete
- 23. Delphi scrive su una condivisione di rete usando TFilestream blocca il file quando la rete va persa
- 24. Come posso rilevare l'iPhone sulla rete?
- 25. WinDbg perde il debug della connessione sulla rete e il blocco della macchina di destinazione
- 26. Come eseguire il file batch dalla condivisione di rete senza il messaggio "UNC percorso non supportato"?
- 27. Come ottenere l'icona associata da un file di condivisione di rete
- 28. IP Camera, come rilevarlo sulla rete?
- 29. .net File.Copy molto lento durante la copia di molti file di piccole dimensioni (non in rete)
- 30. File.Copy() al file server con credenziali di rete
Perché non votare la sua domanda allora? Forse lo hai ed è stato nuovamente votato di nuovo, ma sembra che molte persone dimentichino di votare per buone domande. – Ash
Grazie per il +1 e grazie per il suggerimento sullo strumento.Aggiornerò la mia domanda con l'output dello strumento come prova della risposta "sì" accettata, non appena ne avrò l'occasione. – flipdoubt