ローカルディレクトリをリモートサーバーにコピーするLinuxシェルスクリプトを作成しています(既存のファイルを削除しています)。
ローカルサーバー: ftp
およびlftp
コマンドが使用可能ですnoncftp
または任意のグラフィカルツール。
リモートサーバー: FTP経由でのみアクセスできます。 rsync、SSH、FXPはありません。
ローカルファイルとリモートファイルをリストしてlftpスクリプトを生成し、実行することを考えています。もっと良い方法はありますか?
注:変更されたファイルのみをアップロードすることはプラスですが、必須ではありません。
lftp は、特にlftp mirror
を使用して、これを1つのステップで実行できるはずです。
編集:lftpコマンドの構文は紛らわしく、私が投稿した元の呼び出しは機能しません。このようにしてみてください:
lftp -e "ミラー-R {ローカルディレクトリ} {リモートディレクトリ}" -u {ユーザー名}、{パスワード} {ホスト}
note-e
スイッチへの引数を囲む引用符。
cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*
これは私にとってはうまくいきました、他の多くの試みは失敗しました。 lftpに入ると、より多くの情報が以下を介して利用可能になります:
help mput
Lftpのミラーモードを使用するというPhilの考えに基づいて、このコマンドはトリックを実行します。
lftp -c 'open -e "mirror /tmp/thedir ftp://nico:mypass@remotehost/~/destination/" ftp://nico:mypass@localhost'
欠点は、ローカルサーバーがFTPサーバーを実行している必要があることです。
ようやく答えが出ました!!!シェルスクリプトftpmirror.shを作成します。
#!/bin/bash
path = /local-dir-path
lftp -e "mirror -R $path /$path" -u username,password ftp-server-ip
Lftpパッケージがインストールされていない場合は、yumを使用してインストールします。