ftpまたはlftpを使用してディレクトリをFTPサーバーに再帰的にアップロードする方法は?


19

Linuxシェルスクリプトを作成して、ローカルディレクトリをリモートサーバーにコピーします(既存のファイルを削除します)。

ローカルサーバー: ftpおよびlftpコマンドが使用可能です。グラフィカルツールはありません ncftp

リモートサーバー: FTP経由でのみアクセス可能。rsyncもSSHもFXPもありません。

ローカルファイルとリモートファイルをリストしてlftpスクリプトを生成し、実行することを考えています。もっと良い方法はありますか?

注:アップロードのみ変更されたファイルはプラスであってもよいが、必要ではないでしょう。


ncftpは完全に疑問です。最も簡単な私見だろう。(そして、私はそれを私がそのように使うのでそれをすることを知っています)
Sirex

Sirex:RedHatにデフォルトで付属しているツールを使用したいです。lftpが使用できないことが判明した場合は、ncftpをインストールするための要件をユーザーに追加します。
ニコラスラウル

wput(wgetのようなftp-uploader)の構文:wput dir/ ftp://user:pass@host/dir
kenorb

回答:


39

lftpは、特に次の方法で、これを1ステップで実行できるはずです。lftp mirror

編集:lftpコマンドの構文は混乱し、私が投稿した元の呼び出しは動作しません。このようにしてみてください:

lftp -e "mirror -R {local dir} {remote dir}" -u {username}、{password} {host}

-eスイッチへの引数を囲む引用符に注意してください


1
lftpののミラーモードは、FXPが利用できない場合でも、(私が読んだ後、反対を確信して動作することを私に傾けるための1 tutorials.papamike.ca/pub/lftp.html両方のサーバーを成功させるには、この操作のためにこのプロトコルをサポートしなければならない」と言います")。ただし、この特定のコマンドは、Ubuntuサーバーで失敗します。lftp:mirror:名前またはサービスが不明、不明なコマンド「-R」。
ニコラスラウル

私はlftpをより良く呼び出すことで答えを書き直しました。
フィルホレンバック

ようやく機能するようになりました!動作するにはリモートとローカルを切り替える必要があるようです。更新してください。この回答を受け入れます。ここで働くコマンドラインは次のとおりです。lftpの-e "ミラー-Rを/ tmp / mylocalfilesは/ var / WWW" -u remoteuser、remotepasswordのRemoteServer
ニコララウル

lftpのドキュメントで、-Rを使用するときにローカルとリモートのディレクトリを切り替える必要があることを見たと思いますが、忘れてしまったはずです。私の答えを更新しました。
フィルホレンバック

どのように失敗しますか?'lftp -vvv'を実行してより詳細な出力を試し、何をしようとしているかを判断しましたか?
フィルホレンバック

1

lftpのミラーモードを使用するというPhilの考えに基づいて、このコマンドはトリックを実行します。

lftp -c 'open -e "mirror /tmp/thedir ftp://nico:mypass@remotehost/~/destination/" ftp://nico:mypass@localhost'

欠点は、ローカルサーバーでFTPサーバーを実行する必要があることです。


1
cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*

これは私のために働いた、他の多くの試みが失敗していました。lftpにアクセスすると、次の情報を入手できます。

help mput

2
おそらくmirror -Rここで使用した方が良いでしょう。
-gauteh

@gautehそのとおりです。ベストアンサー^
オースティン

0

ついに答えを得ました!!! シェルスクリプトftpmirror.shを作成します

#!/bin/bash 
path = /local-dir-path
lftp -e "mirror -R $path /$path" -u username,password ftp-server-ip
  • パス= FTPサーバーにコピーするローカルディレクトリ
  • ユーザー名= ftpサーバーのユーザー名
  • パスワード= ftpサーバーのパスワード
  • ftp-server-ip = ftpサーバーのIPアドレス

lftpパッケージがインストールされていない場合は、yumを使用してインストールします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.