web-dev-qa-db-ja.com

Unixでmputを使用して複数のフォルダを別のサーバーにFTPする方法は?

サーバーにログインしています(PuTTYを使用)。そこからFTPを使用して別のサーバーに接続しています。 mputを使用して、最初のサーバーから2番目のサーバーにいくつかのフォルダーをコピーしたいと思います。

お気に入り:

ftp> mput folder1 folder2 folder3

しかし、「folder1:プレーンファイルではありません」などと表示されます。これらの各フォルダーには、サブフォルダーとファイルがあります(一部はバイナリー、一部はバイナリーではありません)。

圧縮して転送せずに、目的を達成するにはどうすればよいですか?

18
Mircea

コマンドラインFTPはかなり原始的です。

リモートサイトにファイル/フォルダーを再帰的に送信することはできません。

ローカルと同じようにリモート側でディレクトリ構造を再作成する場合は、手動で各パスをmkdirし、mput *を使用してそのディレクトリ内のすべてをリモート側に送信する必要があります。

これを簡単にする2つのオプション:

  1. 原始的なFTPコマンドの使用を停止する(ncftpは良い代替手段です)

  2. Tarを使用して、フォルダーをtarで圧縮し、ファイルを送信し、向こう側で抽出します。

19
Philip Reynolds

私は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

そしてそれを

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

動作するようです。

12
daniel

Mputは再帰を使用しないため、これは通常のftpプログラムでは不可能です。 ncftpを使用してから、「mput -r folder」を呼び出すことができます。

よろしく、ファビアン

11
halfdan

Secure Copy scpには、便利な-r再帰フラグがあります。

0
Michael