ثبت تغییرات فایل‌ها بصورت خودکار توسط Git

ابزارها برای این بوجود میان که ما بتونیم به اهداف خودمون برسیم، هرچه سریعتر به هدف برسیم و خروجی بهتری داشته باشیم می‌تونیم بگیم که از ابزار مناسبی استفاده کرده بودیم.
چند وقتی بود بعضی کدها شروع کرده بودن به مفقود شدن، درست مثل اینکه یکی اونارو گروگان گرفته باشه ولی تماسی برای دریافت پول نکرده. برای همین تصمیم گرفتیم که تو اون محله شهر که کدها مفقود میشن سیستمی راه بندازیم که بطور دائم و بصورت بازه‌ای کدهارو ارسال کنه به یک سرور دیگه و بقولی بکاپ بگیره ازشون.
پس یک ریپوزیتوری گیت راه انداختیم و بکمک xargs و cron job بطور متناوب فایل‌های تغییر یافته رو به یک ریپوزیتوری تو سرور دیگه پوش می‌کنیم.
فایل زیر وظیفه کامیت و پوش کردن فایل‌های تغییر یافته رو برعهده داره

1
2
3
4
5
#!/bin/sh
cd /PATH/TO/REPO
find . | grep -i '\.r$' | xargs -i git add {}
git commit -am "modified files on `date +'%Y-%m-%d %H:%M:%S'`";
git push origin master

مهمترین یخش کد فوق، سطر سوم هست که فایل‌های با پسوند .r رو پیدا کرده و اونارو به گیت اضافه می‌کنه. گیت خودبه‌خود امکان جست‌جوی فایل‌ها در لایه‌های مختلف درون دایرکتوری‌ها رو نداره و نمی‌تونیم مستقیما به گیت بگیم هرچی فایل با پسوند .r درون فولدرها هست رو اضافه کن برای همین دست به دامان find، grep و xargs شدیم.
کد فوق رو درون یک فایل به اسم autobackup.sh ذخیره و دسترسی اجرایی بهش دادیم. در نهایت هم چون میخوایم فایل‌ها بصورت دوره‌ای بکاپ گرفته بشن یک cron job ایجاد میکنیم تا هر ساعت فایل autobackup.sh رو اجرا بکنه.
برای ایجاد یک job جدید هم کافیه دستور crontab -e رو اجرا کرده و کد زیر رو انتهای فایل اضافه کنیم.

1
0 * * * * /usr/bin /PATH/TO/autobackup.sh