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