البته منظورم از زود تند سریع مراحل کار هست وَاِلّا بدیهی که Backup اونم از کل سیستم مخصوصا بار اول زود تند سریع نمیشه!
خب دستور های مثل dd یا dc3dd یا حتی کپی کردن فایل های مهم تو هارد دیگه یا حتی سرویس ابری از راه حل هایی هست که اکثرمون وقتی فایلامون مهم میشن ازشون استفاده میکنیم.
اگر بعد از یکبار backup گرفتن از سیستم بخوایم دوباره از کل اون سیستم backup بگیریم؛
backup قبلی رو پاک میکنیم و جدیده رو جایگزین می کنیم ؟!
backup جدید رو روی یه دیسک دیگه نگه میداریم ؟!
یا میشینیم دونه دونه فایل هارو بررسی میکنیم ببینیم کدومشون تغییر کردن فقط اونارو جایگزین کنیم ؟!
راه حل اول و دوم ایراداتی داره :
تو حالتی که تعداد فایل ها زیاد باشن عملا راه حل سوم هم کارایی نداره.
کار این دستور این که یک مبداء و یک مقصد بهش میدیم . مقصد رو با مبداء مقایسه میکنه هر چی اضافه یا کم داشته باشه رو تو مقصد تغییر میده . backup گرفتم به این روش اولین بار با کپی فایل معمولی هیچ فرقی نداره چون تو مقصد هیچی نیست و کل مبداء رو تو مقصد کپی میکنه.
اما برای بار دوم که از کل سیستم backup میگیرم با این روش فقط اون قسمت هایی که تغییر کردن رو کپی یا حذف میکنه (برای حذف کردن باید تعیین کنیم براش به صورت پیشفرض اینکارو نمیکنه).
و نکته جذاب این برنامه اینه که خیلی خیلی سریع اینکارو میکنه. من بار اول که از کل فایل های سیستمیم backup گرفتم کل حجمی که کپی کرد ۱۲۷ گیگ شد که شامل کل دایرکتوری های bin/ و lib/ و lib64/ و var/ بود که همونطور که میدونید این دایرکتوری های پر از فایل های ریز ریز هستن.
بار دوم تمام این فایل هارو تو ۴۱ ثانیه چک کرد و ۸۴ مگ که اضافه شده بود رو به مقصد اضافه کرد که غالبا log file بودن . طبیعی اگر فایل حجیمی اضافه شده باشه به سیستم، زمان این پشتیبان گیری به نسبت حجم فایل های جدید بیشتر میشه.سریع بودن این عملیات و زمان کمی که لازم داره باعث میشه هم backup ما معتبر باشه هم طول عمر دیسک ها بالاتر بره.
یک مزیت دیگه ی این برنامه اینه که میتونید بهش بگید یه سری آدرس هارو نادیده بگیره.
خب این به چه درد میخوره؟ یه سری از دایرکتوری ها نیازی به backup گرفتن ندارن چون تو هر بار boot شدن سیستم، محتواشون به کلی عوض میشه مثلا دایرکتوری proc/ که پروسس ها رو نگه میداره با tmp/ که فایل های موقتی رو نگهداری میشه ویا حتی cach های سیستم و برنامه ها.
شکل دستور اینطوری که:
rsync -aArXv --delete --exclude={"/home/hal9000/.cache/*","/home/hal9000/.mozilla/*", "/dev/*","/media/*","/proc/*","/run/","/mnt/*","/tmp/*","/sys/*","/lost+found/*"} /* /media/hal9000/backup/
دستور بالا رو مستقیم میتونید کپی پیست کنید البته با تغییر مقصد.
خب rsync که مشخص بود بریم سراغ توضیح آرگومان های کوتاه :
a : آرشیو میکنه یا به بیان ساده تر یه کپی برمیداره دقیقا کاری که ما میخوایم انجام بده
v : با این پارامتر تمام کارهایی که انجام میشه رو صفحه نمایش داده میشه
همونطور که میدونید در حین عمل کپی مواردی مثل زمان ایجاد فایل، مالک فایل و دسترسی های اون تغییر میکنه آرگومان های زیر هر از این قبیل تغییرات جلوگیری میکنن.
A : ها ACL حفظ
o : حفظ مالک فایل
X : حفظ اتریبیوت های فایل مثل دسترسی ها و بیت چسبناک و غیره
g : حفظ گروه فایل
t : حفظ زمان ایجاد فایل
حالا بریم سراغ آرگومان های بلند،مثل همه دستورات دیگه قبل از آرگومان دوتا دَش یا خط فاصله بدون فاصله میاد ولی اینجا من مجبور شدم فاصله اش بدم که دیده بشه.
آرگومان delete - - مشخص میکنه اگر فایلی در مبداء پاک شد موقع backup، از مقصد هم پاک بشه.
و exclude - - که در ادامه مسیر هایی رو داخل {}= اضافه کردیم بهش رو نادیده میگیره یعنی ازشون بکاپ نمیگیره، انگار اصلا وجود ندارن.
مسیر هایی که بهش میدیم باید داخل دابل کوتیشن باشن و با کاما از هم جدا بشه اینطوری:
{"مسیر اول"," مسیر دوم"}=
مسیر هایی که لازم نادیده گرفته بشن اینا هستن :
dev - media - proc - run - mnt - tmp - sys - lost+found -
و cach خود سیستم و برنامه هایی که اطلاعات زیادی رو cach میکنن مثل مرورگر وب:
{"/home/hal9000/.cache/*","/home/hal9000/.mozilla/*"}
در کل خیلی ساده بود ،اگر از یک هارد اکسترنال مشخص استفاده میکنید میتونید برای راحتی بیشتر، کل دستور رو alias کنید و با هر بار تایپ یک کلمه راحت backup تون رو بگیری.
alias backup="کل دستور رو بذارید اینجا"
بدرد خودم که خیلی خورد، امیدوارم شما هم استفاده کنید.