J'ai besoin de télécharger un dossier complet via FTP. Existe-t-il une option pour transférer un dossier et tout son contenu à la fois?
J'ai besoin de télécharger un dossier complet via FTP. Existe-t-il une option pour transférer un dossier et tout son contenu à la fois?
Réponses:
Si vous utilisez un client ftp de ligne de commande standard, la MPUT
commande vous permettra de transférer tous les fichiers correspondant à un modèle (style glob shell), ainsi MPUT *
enverra tous les fichiers dans le répertoire courant. Il y a aussi MGET
pour récupérer des fichiers correspondant à un motif.
Par défaut, les deux MPUT
et MGET
vous inviteront à transférer chaque fichier avant de le faire. Vous voudrez probablement désactiver l'invite avec la commande "PROMPT" (aucun argument; c'est une bascule).
Vous pouvez utiliser ncftpput. Procédez comme suit:
Installez ncftp:
yum install ncftp
miam est en minuscules.
Alternativement:
apt-get install ncftp
2. Exécutez la commande suivante:
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
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 le dernier shareware que j'ai vérifié. Tous prennent en charge le transfert d'un dossier entier, y compris la structure du répertoire.
Un tutoriel simple pour les autres débutants 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 fichiers) est:
ncftpput -u * yourUserNameHere * -p * yourUserPasswordHere * -R * www.yourWebsite.com * / _C: \ yourFolderDirectoryHere \\ * _(en une seule ligne).
Notez que:
-R
est un drapeau pour "récursif"; il fait que la commande copie récursivement tous les sous-dossiers/
(barre oblique) est le répertoire racine de votre site WebC:\yourFolderDirectoryHere\*
sélectionne tout à l'intérieur C:\yourFolderDirectoryHere
Je vais vous proposer une réponse qui - bien qu'elle soit pure force brute et pas élégante du tout - était la seule chose qui a fonctionné pour moi sur la ligne de commande. J'ai créé une liste des fichiers et les ai mis dans un script:
générer votre liste de fichiers:
find my-dir -exec echo "put /Users/username/"{} {} \;
copiez-les 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
Regardez ça .
Vous pouvez également créer par programme un dossier sur le serveur , puis télécharger tous les fichiers dans ce nouveau dossier.
FileZilla est idéal pour cela. Si vous ne voulez rien télécharger / installer, cela peut être fait avec Internet Explorer. Allez dans les options avancées et sélectionnez Enable FTP folder view (outside of Internet Explorer)
. Ensuite, vous pouvez pointer une fenêtre de l'explorateur vers votre serveur FTP et glisser-déposer des fichiers et des dossiers entre les fenêtres de l'explorateur.
Le répertoire cible est un fichier zip. Vous pouvez copier le fichier zip complet sur 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);
}
}
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 \;
puis utilisez sftp pour traiter le fichier:
sftp -C -b sftpbatchfile.txt name@server
-C
est pour la compression, -b
est pour le fichier batch
sftp
programme utilise le protocole SFTP qui est un protocole différent bien qu'il ait quelques lettres en commun. Et vous n'avez pas modifié les enter code here
restes.