Puis-je télécharger un dossier entier en utilisant le FTP ?
Je dois télécharger un dossier complet en utilisant le FTP. Existe-t-il une option permettant de transférer un dossier et tout son contenu en une seule fois ?
Je dois télécharger un dossier complet en utilisant le FTP. Existe-t-il une option permettant de transférer un dossier et tout son contenu en une seule fois ?
Vous pouvez utiliser ncftpput. Faites ce qui suit :
yum est en minuscules.
Alternativement :
apt-get install ncftp
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Si vous utilisez un client ftp en ligne de commande standard, la commande MPUT
vous permettra de transférer tous les fichiers correspondant à un modèle (shell glob-style), donc MPUT *
enverra tous les fichiers dans le répertoire courant. Il existe également la commande MGET
pour récupérer les fichiers correspondant à un modèle.
Par défaut, les deux commandes MPUT
et MGET
vous demanderont si vous souhaitez transférer chaque fichier avant de le faire. Vous voudrez probablement désactiver l'invite avec la commande “PROMPT” (pas d'argument, c'est un basculement).
Utilisez un client FTP tel que LeechFTP ou FileZilla ou quelque chose de similaire. Beaucoup de gens ne jurent que par CuteFTP, mais c'est un shareware, la dernière fois que j'ai vérifié. Tous prennent en charge le transfert d'un dossier entier, y compris la structure des répertoires.
Je vais vous donner une réponse qui - bien que ce soit de la pure force brute et pas du tout élégante - était la seule chose qui fonctionnait pour moi sur la ligne de commande. J'ai créé une liste de fichiers, et je les ai mis dans un script :
générez votre liste de fichiers :
find my-dir -exec echo "put /Users/username/"{} {} \;
copiez et collez-les dans le script :
#!/bin/bash
hostname="my-ftp-host"
username="username"
password="password"
ftp -in $hostname <<EOF
quote USER $username
quote PASS $password
binary
cd 123456
{COPY THE LIST HERE}
quit
EOF
Un simple tutoriel pour les autres novices de Windows comme moi qui se retrouvent ici :
La façon la plus simple de télécharger un dossier entier (avec tous les sous-dossiers et les fichiers qu'il contient) est :
ncftpput -u \*yourUserNameHere\* -p \*yourUserPasswordHere\* -R \*www.yourWebsite.com\* / \_C:\yourFolderDirectoryHere\*\_
(en une seule ligne). Notez cela :
-R
est un drapeau pour “récursif” ; il fait que la commande copie tous les sous-dossiers récursivement /
(slash) est le répertoire racine de votre site web C:\yourFolderDirectoryHere\*
sélectionne tout ce qui se trouve à l'intérieur C:\yourFolderDirectoryHere
.Voir this out .
Vous pouvez également créer par programmation un dossier sur le serveur , et ensuite télécharger tous les fichiers dans ce nouveau dossier.
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);
}
}
FileZilla est parfait pour cela. Si vous ne voulez rien télécharger/installer, vous pouvez le faire avec Internet Explorer. Allez dans les options avancées, et sélectionnez Enable FTP folder view (outside of Internet Explorer)
. Vous pouvez ensuite pointer une fenêtre d'explorateur vers votre serveur FTP et faire un glisser-déposer de fichiers et de dossiers entre les fenêtres d'explorateur.
Ma réponse est une variation de la réponse de @dgig.
Vous pouvez lister tous les fichiers et les enregistrer (y compris la commande put) dans un fichier :
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
et ensuite utiliser sftp pour traiter le fichier :
sftp -C -b sftpbatchfile.txt name@server
-C
est pour la compression, -b
est pour le fichier batch