Symfoware

Symfowareについての考察blog

LFTPでFTPサーバーにミラーリングアップロード

FTPサーバーにコマンドでミラーリングアップロードしたい。
調べてみると、lftpというコマンドが便利そうです。

【lftp】FTPサーバに接続してファイルを転送する
http://lftp.yar.ru/


定期的に実行して、ローカルのファイルをFTPサーバーにミラーリングしたかったので、
設定ファイルに記載する方法を調べました。


インストール



クライアントはUbuntu 14.04です。
apt-getでインストールしました。


$ sudo apt-get install lftp






使い方



lftpを実行した後、helpを実行すると使い方が表示されます。
mirrorの使い方を見てみます。


lftp :~> help mirror
使い方: mirror [OPTS] [remote [local]]

Mirror specified remote directory to local directory

-c, --continue         continue a mirror job if possible
-e, --delete         delete files not present at remote site
     --delete-first     delete old files before transferring new ones
-s, --allow-suid     set suid/sgid bits according to remote site
     --allow-chown     try to set owner and group on files
     --ignore-time     ignore time when deciding whether to download
-n, --only-newer     download only newer files (-c won't work)
-r, --no-recursion     don't go to subdirectories
-p, --no-perms         don't set file permissions
     --no-umask         don't apply umask to file modes
-R, --reverse         reverse mirror (put files)
-L, --dereference     download symbolic links as files
-N, --newer-than=SPEC download only files newer than specified time
-P, --parallel[=N]     download N files in parallel
-i RX, --include RX    include matching files
-x RX, --exclude RX    exclude matching files
                        RX is extended regular expression
-v, --verbose[=N]     verbose operation
     --log=FILE         write lftp commands being executed to FILE
     --script=FILE     write lftp commands to FILE, but don't execute them
     --just-print, --dry-run    same as --script=-

When using -R, the first directory is local and the second is remote.
If the second directory is omitted, basename of first directory is used.
If both directories are omitted, current local and remote directories are used.




ローカルのファイルを削除したら、FTPサーバー側のファイルも削除して欲しいので、

-e



新しいファイルのみ処理して欲しいので

-n



除外したいディレクトリやファイルは-xで指定できるようなのですが、
拡張子が.logのものを除外したい。
lftp Mirror Command Exclude Matching Files [ Regex ]

--exclude-glob *.log



ファイルをputしたいので

-R




ユーザー:ftptest
パスワード:P@ssw0rd
FTPサーバー:192.168.1.103

これらを踏まえ、作成したファイルの内容は以下のようになりました。


open ftptest:P@ssw0rd@192.168.1.103
mirror -e -n --exclude-glob *.log -R ./test




適当にconfというファイル名で保存。
実行してみます。


$ lftp -f conf



これで狙い通りの動きになりました。
うまく行かない時には、デバッグモードで実行。


$ lftp -d -f conf



ログが全て出力されます。


【追記の記事】

lftp 致命的エラー: Certificate verification: Not trusted
lftp エラーになったら実行を中断する(cmd:fail-exit)
lftp 隠しファイル(ドットから始まるファイル)もmirrorする
関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2016/02/14(日) 16:42:10|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<luviでLuaプログラムをバイナリの実行形式に変換する | ホーム | Alpine LinuxにOpenJDK 8をインストールする>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1840-efa4df00
この記事にトラックバックする(FC2ブログユーザー)