2016-04-07 3 views
1

J'ai un serveur Windows 2012 sur lequel j'essaie de copier un dossier via FTP. Le dossier contient plusieurs dossiers à l'intérieur et la taille est d'environ 12 Go. Quelle commande peut être utilisée pour copier l'arborescence entière, y compris tous les dossiers et fichiers qu'elle contient.Copier des dossiers via FTP sous Windows

  • Je ne peux pas compresser ce dossier.
  • J'ai également essayé d'utiliser mget* mais il copie tous les fichiers de tous les dossiers mais n'a pas créé la structure de dossier.
  • Je ne peux pas utiliser la commande TAR car l'invite affiche "commande invalide".
+0

http://stackoverflow.com/questions/14630932/windows-command-line-ftp-to-deploy-website, http://superuser.com/questions/133380/use -mput-to-transfer-a-directory-using-ftp – CodeCaster

Répondre

2

Le client FTP de ligne de commande Windows, le ftp.exe, ne prend pas en charge les transferts d'annuaire récursifs.


Vous devez utiliser un client FTP tiers pour cela.

Par exemple avec WinSCP FTP client, vous pouvez utiliser un fichier-batch comme:

winscp.com /command^
    "open ftp://user:[email protected]/"^
    "get /folder/* c:\target\"^
    "exit" 

Il téléchargera automatiquement tous les fichiers et sous-dossiers dans le /folder.

Pour plus de détails, voir le guide WinSCP au automating file transfers from FTP server. Il y a aussi un guide pour convertir Windows ftp.exe script to WinSCP.

(je suis l'auteur de WinSCP)

-1

Le répertoire cible est un fichier zip. Vous pouvez copier le fichier zip complet dans le serveur FTP en utilisant le code ci-dessous.

//Taking source and target directory path 
string sourceDir = FilePath + "Files\\" + dsCustomer.Tables[0].Rows[i][2].ToString() + "\\ConfigurationFile\\" + dsSystems.Tables[0].Rows[j][0].ToString() + "\\XmlFile"; 

string targetDir = FilePath + "Files\\Customers\\" + CustomerName + "\\" + SystemName + "\\";                      
foreach (var srcPath in Directory.GetFiles(sourceDir)) 
{ 
    //Taking file name which is going to copy from the sourcefile            
    string result = System.IO.Path.GetFileName(srcPath); 

    //If that filename exists in the target path 
    if (File.Exists(targetDir + result)) 
    { 
     //Copy file with a different name(appending "Con_" infront of the original filename) 
     System.IO.File.Copy(srcPath, targetDir + "Con_" + result); 
    } 
    //If not existing filename 
    else 
    { 
     //Just copy. Replace bit is false here. So there is no overwiting. 
     File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), false); 
    } 

}