dポイントプレゼントキャンペーン実施中!

Linuxでファイルを転送するシェルを作成しております。

コピー元と同じ階層構造でコピーしたいのですが、
ftp内で mkdir をする時にオプションの -p は使えないのでしょうか?
さきほどやってみたのですが、うまくいきません。

Target="share/1G/1T"
ftp -i -v -n 10.156.1.xxx <<END
user UserName PW
bin
mkdir -p $Target *1G/1Tというフォルダを一気に作成したい。
cd $Target
#put $Target/test.txt /Target/test.txt
bye
END

ftpのコピー先に、フォルダ階層をいっきに作成する方法はありますでしょうか?

A 回答 (2件)

使えません。

Linuxのmkdirコマンドとftpのmkdirコマンドは似ていて非なるものです。

そこで、以下のようにすれば期待されている動作に近い形になるかと思います。

Target="share/1G/1T"

( echo 'user UserName PW'
echo 'bin'
IFS=/
for subdir in "$Target"; do
echo "mkdir $subdir"
echo "cd $subdir"
done
#echo 'put $Target/test.txt /Target/test.txt'
echo 'bye' ) | ftp -i -v -n 10.156.1.xxx

ただ、上記はディレクトリが最初から存在していた場合についてあまり
考慮されていません(処理は継続されますが、550のコードが出力されてしまいます)
    • good
    • 0
この回答へのお礼

お礼がおそくなりすみません。
ありがとうございました。

ftpの特性がわかってきました。
また、非常に参考になりました。ありがとうございます。

お礼日時:2012/08/30 11:01

ftpにこだわらないのならrsyncはどうでしょうか、相手が空のディレクトリならそのままコピーになりますし、--deleteをつけると余分なものは消してくれます。


参考
http://www.maruko2.com/mw/rsync_でディレクトリの同期(バックアップ)
「ssh と組み合わせリモートマシンにコピーする」
あたりが参考になるのではないかと
    • good
    • 0
この回答へのお礼

お礼がおそくなりすみません。
こういう方法もあること、参考になりました。ありがとうございます。

お礼日時:2012/08/30 11:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!