スキップしてメイン コンテンツに移動

lftpを利用してサーバーとGithubを同期させろ!

特定サーバーは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!








コメント