サーバーにログインしています(PuTTYを使用)。そこからFTPを使用して別のサーバーに接続しています。 mputを使用して、最初のサーバーから2番目のサーバーにいくつかのフォルダーをコピーしたいと思います。
お気に入り:
ftp> mput folder1 folder2 folder3
しかし、「folder1:プレーンファイルではありません」などと表示されます。これらの各フォルダーには、サブフォルダーとファイルがあります(一部はバイナリー、一部はバイナリーではありません)。
圧縮して転送せずに、目的を達成するにはどうすればよいですか?
コマンドラインFTPはかなり原始的です。
リモートサイトにファイル/フォルダーを再帰的に送信することはできません。
ローカルと同じようにリモート側でディレクトリ構造を再作成する場合は、手動で各パスをmkdir
し、mput *
を使用してそのディレクトリ内のすべてをリモート側に送信する必要があります。
これを簡単にする2つのオプション:
原始的なFTPコマンドの使用を停止する(ncftpは良い代替手段です)
Tarを使用して、フォルダーをtarで圧縮し、ファイルを送信し、向こう側で抽出します。
私は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 {} \;
動作するようです。
Mputは再帰を使用しないため、これは通常のftpプログラムでは不可能です。 ncftpを使用してから、「mput -r folder」を呼び出すことができます。
よろしく、ファビアン
Secure Copy scpには、便利な-r再帰フラグがあります。