Comment FTP plusieurs dossiers vers un autre serveur en utilisant mput sous Unix?

18

Je suis connecté sur un serveur (en utilisant Putty). à partir de là, je me connecte via FTP à un autre serveur. Je veux copier plusieurs dossiers du premier serveur vers le deuxième serveur en utilisant mput.

Comme:

ftp> mput folder1 folder2 folder3

Mais j'obtiens "dossier1: pas un fichier ordinaire" ... et ainsi de suite. Chacun de ces dossiers a des sous-dossiers, des fichiers (certains binaires, d'autres non).

Comment puis-je accomplir ce que je veux sans compresser le contenu, puis le transférer?

7ochem
la source

Réponses:

19

FTP en ligne de commande est assez primitif.

Vous ne pouvez pas envoyer récursivement des fichiers / dossiers vers un site distant.

Si vous souhaitez recréer une structure de répertoires du côté distant de la même manière que le local, vous devez manuellement mkdirchaque chemin d'accès et utiliser mput *pour envoyer tout le contenu de ce répertoire vers le côté distant.

Deux options pour vous faciliter la tâche:

  1. Arrêtez d'utiliser la commande FTP primitive (ncftp est une bonne alternative)

  2. Utilisez tar pour tarer les dossiers, envoyer le fichier et extraire de l'autre côté.

Philip Reynolds
la source
1
+1 pour tar-> put-> untar
dave
1
-1 Parce que la question demande "Comment puis-je accomplir ce que je veux sans compresser le contenu puis transférer?", Ce qui implique que la personne n'a pas accès au shell de la machine distante.
Steen Schütt
11

Ce n'est pas possible avec le programme ftp normal car mput n'utilise pas la récursivité. Vous pouvez utiliser ncftp puis appeler «dossier mput -r».

Meilleurs voeux, Fabian

halfdan
la source
C'est exactement ce que j'ai fait récemment sur une box RHEL 5. Dans le package EPEL, l'exécutable est nommé ncftpput.
Suppressingfire
Ne peut rien changer dans la configuration du serveur. Je suis juste un utilisateur ...
Cela dépend de votre client. Pas sur le serveur.
halfdan
Je préfère le faire de cette façon. Je vous remercie.
Mojtaba Rezaeian
11

J'ai fait un script bash:

#!/bin/bash
ftp_site=ftp.yoursite.net
username=my_user_name
passwd=my_password
remote=/path/to/remote/folder
folder=$1
cd /path/to/local/folder/$folder
pwd
ftp -in <<EOF
open $ftp_site
user $username $passwd
mkdir $remote/$folder
cd $remote/$folder
mput *
close
bye

et l'a appelé avec

find . -type d -exec ./recursive-ftp.sh {} \;

semble fonctionner.

Stein Åsmul
la source
0

Secure Copy scp a un indicateur -r récursif que vous pourriez trouver utile.

Michael
la source
La question concerne l'accès ftp simple .. pas scp / sftp!
Mojtaba Rezaeian
-1

ouvrez le CD powershell dans le répertoire que vous souhaitez télécharger, exécutez les commandes suivantes:

1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all
2. notepad .\mput_all

Collez les résultats dans votre fenêtre ftp. Prendre plaisir. N'oubliez pas non plus d'ajouter mput * pour transférer tous les fichiers du répertoire de base.

Apprenez Powershell
la source
6
Depuis quand PowerShell fonctionne-t-il sur un système Unix?
Michael Hampton