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
分 時 日 * * 自分のユーザ名 バッチファイルのパス