FTP でミラー?lftp活用術!

古都の老兵
2022-09-22
2022-09-22

はじめに

FTPサーバ上のファイルをミラーリングしたいと思った事はありませんか?
全部再度コピーできれば問題はありませんが、大量にあったり毎回は時間が掛かるという場合にはちょっと現実的ではないこともあるでしょう。
一般的にミラーリングならrsyncを使う事を考えるわけですが、相手はFTPしかサポートしていない場合には残念ながら使えません。
そこでlftpコマンドの出番です!

やり方

通常は相手がFTPサーバならftpコマンドを使うと考えますが、lftpコマンドにはftpコマンドには無い色々便利な機能があります。
特にミラーリング機能は通常のftpコマンドにはない機能で場合によってはとても使い勝手が良い機能だといえるでしょう。

# lftp -d -u user01,(パスワード) host0033
---- Resolving host address...
---- 1 address found: 192.168.9.36
lftp user01@host0033:~> cd /home/save
---- Connecting to host0033 (192.168.9.36) port 21
<--- 220 Operation successful
:
:
lftp user01@host0033:/home/save> ls
:
:
total 112
drwxr-xr-x 23 user01 user01 16384 Apr 28 15:49 20220419
drwxr-xr-x 13 user01 user01 16384 Apr 20 10:00 20220420
drwxr-xr-x 8 user01 user01 16384 Apr 24 23:00 20220424
drwxr-xr-x 26 user01 user01 16384 Apr 25 23:00 20220425
drwxr-xr-x 26 user01 user01 16384 Apr 26 23:00 20220426
drwxr-xr-x 26 user01 user01 16384 Apr 27 23:00 20220427
drwxr-xr-x 19 user01 user01 16384 Apr 28 16:00 20220428
---- Got EOF on data connection
---- Closing data socket
<--- 226 Operation successful
lftp user01@host0033:/home/save> mirror -v 20220428

これでミラーリングが開始されます。日付も元の日時が引き継がれるので色々活用できそうですね。

応用編としてlftpコマンドはFTPサーバだけでなく、FTP, FTPS, HTTP, HTTPS, HFTP, FISH, SFTPといったプロトコルのサーバにも使えます。

# lftp http://ftp.riken.jp/Linux
cd: received redirection to `http://ftp.riken.jp/Linux/'
cd ok, cwd=/Linux
lftp ftp.riken.jp:/Linux> ls
drwxr-xr-x -- /
drwxr-xr-x -- almalinux
drwxr-xr-x -- centos-stream
drwxr-xr-x -- centos-vault
drwxr-xr-x -- centos
:
:
drwxr-xr-x -- ubuntu
lftp ftp.riken.jp:/Linux> mirror -v almalinux

最後に

如何だったでしょうか、lftpコマンドにはftpコマンドでは出来ない色々な活用方法がありますの皆さんも調べて活用してみてください。
尚、ミラーについても

mirror -v -x log -X *.swp public_html

と-xで除外ファイルやディレクトリ名を指定。-Xだと複数マッチが使えたりもします。