web-dev-qa-db-ja.com

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

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

ローカルサーバー: ftpおよびlftpコマンドが使用可能ですnoncftpまたは任意のグラフィカルツール。

リモートサーバー: FTP経由でのみアクセスできます。 rsync、SSH、FXPはありません。

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

注:変更されたファイルのみをアップロードすることはプラスですが、必須ではありません。

19
Nicolas Raoul

lftp は、特にlftp mirrorを使用して、これを1つのステップで実行できるはずです。

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

lftp -e "ミラー-R {ローカルディレクトリ} {リモートディレクトリ}" -u {ユーザー名}、{パスワード} {ホスト}

note-eスイッチへの引数を囲む引用符。

40
Phil Hollenback
cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*

これは私にとってはうまくいきました、他の多くの試みは失敗しました。 lftpに入ると、より多くの情報が以下を介して利用可能になります:

help mput
1
austin

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

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

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

1
Nicolas Raoul

ようやく答えが出ました!!!シェルスクリプトftpmirror.shを作成します。

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

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

0
Kiran Zinjurde