比例道
| フロントページ | 新着 | 一覧 |
<-domain ijino tamedesu

FTPによるファイル同期バッチ処理

ミラーサイトの同期をcronとftpコマンドで行う

要件

  • 変更のあったファイルあるいは直近X日以内に変更のあったファイルのみを対象とする

getの場合

ftpmirrorを使う

  • これはperlスクリプトなのでmakeは不要で,ダウンロード展開したファイルを/usr/local/lib/ftpmirrorにそのまま配置する
  • configディレクトリ内のdefault-sampleファイルをdefaultに変えて編集

 # passive mode for data transfer
 ftp-passive = 1
 # we don't unlink file. only rename.
 unlink = rename
 # our home directory.
 home-directory = /home/hogehoge

  • configディレクトリ内に同期先サイト毎のファイルabcを作る.内容は

 ftp-server = xxx.abc.com
 remote-directory = /
 local-directory = ~/tacoika
 ftp-list-method = list
 remote-timezone = +0900

  • /etc/crontabに追加

 45 3 * * 2 hogehoge /usr/local/lib/ftpmirror/ftpmirror abc


putの場合

方針

  • findにて直近X日以内に変更のあったファイルを選別
  • ftpの標準入力にコマンドファイルを流し込むバッチファイルにてput転送

実例

  • バッチファイル

 #!/bin/bash
 mkdir /tmp/hogehoge
 find /original -mindepth 1 -mtime -X -exec cp "{}" /tmp/hogehoge \;
 ftp -i -n < コマンドファイル
 rm -rf /tmp/hogehoge

  • コマンドファイル

 open サイト名
 user ユーザ名 パスワード
 cd 転送先ディレクトリ
 lcd /tmp/hogehoge
 mput *
 close
 bye

  • /etc/crontab

 分 時 日 * * 自分のユーザ名 バッチファイルのパス


Linux