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 je reçois "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?
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 sur le côté distant identique à la section locale, vous devez manuellement mkdir
chaque chemin et utiliser mput *
pour envoyer tout le contenu de ce répertoire du côté distant.
Deux options pour vous faciliter la tâche:
Arrêtez d'utiliser la commande FTP primitive (ncftp est une bonne alternative)
Utilisez tar pour tarer les dossiers, envoyer le fichier et extraire de l'autre côté.
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.
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
Secure Copy scp a un indicateur -r récursif que vous pourriez trouver utile.