دفترچه یادداشت فنی

پشتیبان‌گیری افزایشی با rsync

۱۴ مهر ۱۴۰۵

گزینه --link-dest در rsync فایل‌هایی را که از دیروز تغییر نکرده‌اند به‌جای کپی، به نسخه قبلی لینک می‌کند. نتیجه این است که هر پوشه روزانه یک نسخه کامل به نظر می‌رسد، ولی فقط فایل‌های تغییرکرده فضا می‌گیرند.

today=$(date +%F)
rsync -a --delete --link-dest=/backup/latest /srv/data/ /backup/$today/
ln -sfn /backup/$today /backup/latest

این سه خط را در یک فایل بگذارید و با cron هر شب اجرا کنید. برای پاک کردن نسخه‌های قدیمی هم کافی است پوشه‌های قدیمی‌تر از چند هفته را حذف کنید؛ لینک‌ها خودشان مدیریت می‌شوند.