web-dev-qa-db-fra.com

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

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?

18
Mircea

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:

  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é.

19
Philip Reynolds

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.

12
daniel

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

11
halfdan

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

0
Michael