特定サーバーはFTPしか使えない状況。
そのサーバーから毎日のデータを読み取りGithubにアップしてほかのサーバーにDeployしないといけない状況です。
ここでrsyncはFTPを介して使えないためlftpというツールを見つけました!Linuxならすぐインストールできるので気軽にインストール
apt install lftp
ubuntuなのでaptを使いました。もしCentOS系列ならyumでやってみてください。
ファイルは毎日増え続けるため今日と昨日の日付のファイルのみ同期させたい。
サーバーからは削除したりするけど同期元は削除されたら困る。
とのことで
日付を今日と昨日をキャッチする
Today=`date '+%Y-%m-%d'`
Yesterday=`date +%Y-%m-%d --date '1 day ago'`
まずはgitレポジトリーに移動して同期
cd /home/giip/syncfiles
git pull origin master
githubから同期したらlftpを利用してファイルを同期
lftp -c "set ftp:list-options -a;
open 'ftp://GEBEDREAM:KFn\$tMef@93.46.41.5';
cd /;
lcd /home/Projects/gebedream/files/company;
mirror --use-cache --verbose --allow-chown --allow-suid --no-umask --parallel=2 --log=/var/log/lftp.log --include-glob *${Today}* --include-glob *${Yesterday}*
"
ワイルドカードを利用して対象ファイルを絞らないと全てをダウンロードしてチェックしちゃうので時間がかなりかかる。
--include-glob *${Today}* --include-glob *${Yesterday}*
同期が終わったら
git pushでgithubにアップします。
git add .
git commit -m "daily sync by ${hn}"
git push origin master
全てを1ファイルにしました!
syncftp2git.sh
#/bin/bash
# lcd : target
Today=`date '+%Y-%m-%d'`
Yesterday=`date +%Y-%m-%d --date '1 day ago'`
hn=`hostname`
cd /home/giip/syncfiles
git pull origin master
lftp -c "set ftp:list-options -a;
open 'ftp://giipuser:giippwd@ftp.giip.net';
cd /;
lcd /home/giip/syncfiles/server01;
mirror --use-cache --verbose --allow-chown --allow-suid --no-umask --parallel=2 --log=/var/log/lftp.log --include-glob *${Today}* --include-glob *${Yesterday}*
"
git add .
git commit -m "daily sync by ${hn}"
git push origin master
これをCrontabに入れれば完了!
人間行動のすべてを自動化!Inter RPA orchestration!
コメント
コメントを投稿