Linux - FTP サーバとローカルでディレクトリ同期!
Updated:
FTP サーバ上のディレクトリとローカルマシン上のディレクトリを同期する方法についての記録です。
0. 前提条件
- LMDE 2(Linux Mint Debian Edition 2), または、 Debian GNU/Linux 9.5 での作業を想定。
- FTP サーバとの同期には lftp コマンドを使用する。
- インタラクティブな処理ではなく、自動で一括して処理できるようスクリプトファイルを使用する。
1. lftp コマンドのインストール
lftp コマンドを使用するので、未インストールならインストールする。
$ sudo apt install lftp
2. FTP スクリプトファイルの作成
FTP 処理を行うスクリプトファイルを作成する。(以下は IERS(国際地球回転観測事業)から EOP データ(地球回転パラメータ)を取得する例)
File: lftp_bulletin_b.txt
1
2
3
4
5
6
open ftp://ftp.iers.org/products/eop/bulletinb
mirror -e -n -x metadata iau1980 file/bulletin_b_iau1980
mirror -e -n -x metadata iau2000 file/bulletin_b_iau2000
mirror -e -n -x 'metadata|xml' format_2009 file/bulletin_b_format_2009
close
quit
open siteで接続先 URL を指定して FTP 接続を確立する。- ユーザ名やパスワードを指定する必要があれば、
-u user[,pass]で指定する。 - ポートを指定する必要があれば、
-p portで指定する。
- ユーザ名やパスワードを指定する必要があれば、
mirror [OPTS] [source [target]]で同期する。-eは同期元が削除されれば同期先も削除するオプション。(--deleteと同じ)-nは新しいファイルのみ処理するオプション。(--only-newerと同じ)-x RXは同期を除外するファイル/ディレクトリを指定するオプション。(--exclude=RXと同じ。RXは拡張正規表現で指定)
closeで FTP 接続を閉じる。quitで処理終了。- その他、多数のオプションあり。後述の参考サイト等で確認すること。
3. 同期の開始
コマンドラインで FTP スクリプトファイルを指定して実行する。
$ lftp -f lftp_bulletin_b.txt
当方は、実際には、 bash スクリプト化したものを cron で定期的に実行するようにしている。
4. 参考サイト
以上。
Comments