FTPでファイル同期 (lftp使用)

rsync使えない環境用

## lftpに食わせるバッチファイル
# vim lftp_sync.lftp
---
# パッシブモード
set ftp:passive-mode on

# これがないとdot-fileが無視される
set list-options -a

# デフォルト設定だと、死ぬほどリトライしまくるらしいので控えめに
set net:timeout 60
set net:max-retries 10
set net:reconnect-interval-base 10
set dns:max-retries 10
set dns:fatal-timeout 60

# 最大使用帯域: 100Mbps、コネクション数: 1 に制限
set net:limit-rate 13107200:13107200
set net:connection-limit 1

# FTPS (自己証明書)の場合
set ssl:verify-certificate no
set ftp:ssl-auth TLS
set ftp:ssl-force true
set ftp:ssl-allow yes
set ftp:ssl-protect-list yes
set ftp:ssl-protect-data yes

# ファイル名がShift-JISで文字化けする場合
set ftp:charset sjis

open -u hoge_user,hoge_passwd hogeftp.example.com

# mirror src_on_remotehost dest_on_localhost
# --dry-run: テスト実行
# 本番同期時は --delete つけると良い
# /tmp/lftp_cmd.log に実行されるコマンドが出力される
mirror -a \
    --dry-run \
    --verbose \
    --log=/tmp/lftp_cmd.log \
    -X log/* \
    /home/hoge /var/www/

close
quit
---

# ミラーリング実行
time lftp -f lftp_sync.lftp

おまけ

# コマンドエイリアス設定
lftp> alias ll ls -la

# gzip済みのログも見れるよ
lftp> zcat hoge.log.gz