پشتیبان گیری روزانه، هفتگی و ماهانه با tar، rsync و cron در لینوکس
بکاپ گیری در لینوکس با دستورات rsync، tar و cron
در این آموزش، یاد خواهید گرفت چگونه پشتیبان گیری روزانه، هفتگی و ماهانه را در Ubuntu/Debian با یک اسکریپت ایجاد کنید. برای این کار، از دستورات tar، find و rsync به همراه cron برای خودکار کردن پشتیبان گیری استفاده خواهیم کرد.
پشتیبانگیری روزانه:
دستور tar زیر یک فایل آرشیو فشرده از پوشه /var/www/html را در پوشه /home/tony/backup/daily/ ایجاد خواهد کرد. همچنین دستور find تمام پشتیبانهای روزانه را که قدیمی تر از 7 روز پیش هستند، حذف خواهد کرد.
tar -zcf /home/tony/backup/daily/backup-$(date +%Y%m%d).tar.gz -C /var/www/html find /home/tony/backup/daily/* -mtime +7 -delete
پس از تغییر برطبق نیازهای خود، این دو دستور را در یک اسکریپت به نام backup-daily.sh قرار دهید.
پشتیبان گیری هفتگی
دستور tar زیر یک آرشیو فشرده از پوشه /var/www/html در پوشه /home/tony/backup/weekly/ ایجاد می کند. دستور find تمام پشتیبانگیریهای هفتگی قدیمیتر از 31 روز یا 1 ماه را حذف میکند.
tar -zcf /home/tony/backup/weekly/backup-$(date +%Y%m%d).tar.gz -C /var/www/html find /home/tony/backup/weekly/* -mtime +31 -delete
پس از تغییر برای نیازهای خود، این دو دستور را در اسکریپتی به نام backup-weekly.sh قرار دهید.
پشتیبان گیری ماهانه
دستور tar زیر یک آرشیو فشرده از پوشه /var/www/html در پوشه /home/tony/backup/monthly/ ایجاد می کند. دستور Find تمام پشتیبانگیریهای ماهیانه را که بیش از ۳۶۵ روز یا ۱ سال دارند حذف میکند.
tar -zcf /home/tony/backup/monthly/backup-$(date +%Y%m%d).tar.gz -C /var/www/html find /home/tony/backup/monthly/* -mtime +365 -delete
پس از تغییر برای نیازهای خود، این دو دستور را در اسکریپتی به نام backup-monthly.sh قرار دهید.
با Cron پشتیبان گیری را خودکار کنید
می توانید یک cronjob برای فراخوانی اسکریپت های پشتیبان روزانه، هفتگی و ماهانه ایجاد کنید. ویرایشگر cron را با دستور crontab -e باز کنید و در حالی که مسیر کامل واقعی فایل های اسکریپت خود را مشخص می کنید، موارد زیر را اضافه کنید.
15 0 * * * sh /home/tony/backup-daily.sh 30 0 * * 1 sh /home/tony/backup-weekly.sh 45 0 1 * * sh /home/tony/backup-monthly.sh
اگر با سینتکس cron آشنا نیستید، این کاری است که تنظیمات بالا انجام می دهد:
اسکریپت پشتیبان گیری روزانه را هر روز در ساعت 12:15 صبح اجرا می کند.
اسکریپت پشتیبان هفتگی را هر دوشنبه ساعت 12:30 صبح اجرا می کند.
اسکریپت پشتیبان گیری ماهانه را اول هر ماه در ساعت 12:45 صبح اجرا می کند.
خارج کردن پشتبان گیری از سرور و ذخیره
در مرحله بعد، ایده خوبی است که فایل های پشتیبان محلی خود را بردارید و از آنها در سیستم دیگری نسخه پشتیبان تهیه کنید. دلیل اینکه ما می خواهیم این کار را انجام دهیم که در صورتی که این سرور را از دست بدهید یا مورد حمله قرار بگیرد امیدی به بازیابی داشته باشید
ما می توانیم با دستور rsync یک نسخه کامل از دایرکتوری پشتیبان محلی خود و هر چیزی که در آن است را در سرور دیگر ایجاد نماییم.
rsync -a --delete /home/tony/backup/ root@161.35.143.122:/path/to/remote/backups/
به فلگ حذف در بالا توجه کنید(–delete). این تضمین میکند که بکآپهایی را که به صورت محلی با دستور find حذف کردهایم، در سرور راه دور نیز دیگر نگهداری نمی شوند. به عبارت دیگر، /home/tony/backup/ در سیستم محلی یک تصویر آینه ای و دقیقا مشابه از /path/to/remote/backups/ در سیستم راه دور خواهد بود.
برای اجرای دستور rsync بدون نیاز به ارائه رمز عبور، باید کلید عمومی را روی سرور راه دور نصب کنید. اگر نمی دانید چگونه این کار را انجام دهید، می توانید این ویدیو را تماشا کنید تا SSH به سرور راه دور بدون پسورد را بیاموزید
آخرین کاری که باید انجام دهید ایجاد یک cronjob برای اجرای دستور rsync است.
0 2 * * * rsync -a --delete /home/tony/backup/ root@161.35.143.122:/path/to/remote/backups/
خط بالا این امکان را فراهم می کند که به صورت خودکار پس از ایجاد هر فایل پشتیبان نسخه ای از آن به سرور راه دور نیز ارسال گردد.