24 votes

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

Je suis connecté à un serveur (à l'aide de Putty). De là, je me connecte par FTP à un autre serveur. Je veux copier plusieurs dossiers du premier serveur au deuxième serveur en utilisant mput.

Comme :

ftp> mput folder1 folder2 folder3

Mais j'obtiens "folder1 : not a plain file"... 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 zipper le matériel et le transférer ensuite ?

22voto

David Pokluda Points 4284

Le 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épertoire identique à celle du côté distant, vous devez manuellement mkdir chaque chemin et utiliser mput * pour envoyer tout ce qui se trouve dans ce répertoire vers le côté distant.

Deux options pour faciliter les choses :

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

  2. Utilisez tar pour mettre les dossiers sous forme de tar, envoyez le fichier et extrayez-le de l'autre côté.

19voto

J'ai fait un bash script :

#!/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 a suivi avec

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

semble fonctionner.

11voto

artemisworks Points 1

Ceci n'est pas possible avec le programme ftp normal car mput n'utilise pas la récursion. Vous pouvez utiliser ncftp et ensuite appeler 'mput -r folder'.

Meilleurs voeux, Fabian

0voto

Ouvrir powershell accédez au 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. Profitez-en. N'oubliez pas d'ajouter mput * pour transférer tous les fichiers du répertoire de base.

0voto

Michael Points 11

Secure Copy scp possède un drapeau récursif -r qui peut s'avérer utile.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X