آموزش بکاپ گیری از لینوکس با rsync به زبان ساده

يکي از نکات مهمی که هر SysAdmin باید به اون توجه ويژه داشته باشه بکاپ گیری از فایل ها وسیستم عامل هاست. در محیط های سازمانی بزرگ، روش های مختلفی برای Backup گرفتن از يک سرويس هست. محيط پياده سازی هم مي تونه روي روش انتخاب شده براي بکاپ گیری تأثیر گذار باشه. به عنوان مثال اگر سرور شما در محيط هاي مجازی سازی شده  راه اندازی شده باشه، اين مسئله مي تونه تأثیر زیادی روي تکنولوژي و روش انتخابي شما براي بکاپ گیری شما داشته باشه.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

روش بکاپگیری که امروز مي خوايم بررسيش کنيم روشی هستش فارغ از محيط پياده سازی شما، يکي از کارامد ترین روش هاي بکاپ گرفتن از سیستم عامل هاي لينوکسی هستش به نام rsync و خيلي از نرم افزارهاي بکاپ که از محيط هاي GUI برخوردار هستند درواقع از اين همين ابزار در لايه هاي پايين تر استفاده مي کنن.برای بکاپ گیری از سیستم به طور کامل با استفاده از rsync از دستور زیر استفاده می کنیم:

sudo rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/mnt/*","/media/*","/lost+found"} /mnt/BACKUP


خب، بریم سراغ تحلیل اين کامند:

در ابتدای دستور از sudo استفاده شده که اگه عمليات Backup گيري رو با یوزر root انجام نميديد باید زده بشه. چونکه قرار به فايلهايي دسترسی داشته باشیم که نياز به سطح دستری root داریم.اون عبارت / که مي بينید (که قبل و بعدش هم space خورده) آدرس مبدأ هست، به اين معنا که تمامي فایل های موجود در Root Directory رو مي خوايم ازش کپی بگیریم، به استثنای Directoryهايي که exclude شده.

عبارت /mnt/BACKUP/ که مي بینید، مقصد عمليات بکاپ گیریمون هست. يعني از فايل ها، بکاپ گرفته میشه و توي اين مسیر قرار مي گیره که مي تونه یک مسیر local باشه، يک دسک mount شده باشه يا يک Directory تحت شبکه باشه… بعد از معرفي مبدأ بکاپگیری، از آپشن exclude استفاده شده که از اهميت بسیار بالايي برخوردار هست. از اين directory هاي نباید بکاپ گرفته بشه که مورد به مورد بررسیشون مي کنيم:

مسیر /media/ مسیری هست که معمولا به عنوان mount point دیفالت براي مدياهاي usb و… ازش استفاده می شه که قرار نیست از محتويات اين مدياهاي خارجي بکاپ گرفته بشه. براي مسیر /mnt/ هم به همين صورت.مسیر /lost+found/ براي ذخیره فايل هاي Corrupted و فايل هايي که دچار مشکل شدن توسط سیستم عامل مورد استفاده قرار مي گیرن، که هم خيلي به درد نمي خورن و هم اين که بعضي وقتا سيستم عامل، اين فايل هارو نمي تونه بخونه. اگه یه همچين فايلي در اين مسیر وجود داشته باشه، عمليات rsync با مشکل مواجه میشه.

مسیر هاي  /dev/ و /proc/ و /sys/ شامل فايل هايي هستند که واقعا فايل نیستن و اصطلاحاً pseudo file هستند. اين فایل ها نماينده هايي هستند براي سخت افزارتون، processهايي که توسط cpu سیستم در حال اجرا هستند و… از اين فايل ها هم نبايد بکاپ گرفته بشه چرا که سیستم عامل در زمان boot شدن اين فايل ها رو ايجاد مي کنه و محتوياتش تغيير خواهد کرد.مسیر /tmp/ هم که شامل فايل هاي موقتي هستند که توسط سیستم عامل ايجاد مي شن و ارزش بکاپ گیری ندارن.حالا شما با توجه به خصوصياتي که سرورتون داره ممکنه نياز باشه یه سری مسیرهارو به قسمت exclude اضافه بکنید مثل  /var/ يا مسیری که DB توش دارید و...

توجه داشته باشید که عبارت

--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/mnt/*","/media/*","/lost+found"}

رو می تونید به صورت زیر هم بنویسید:

--exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/mnt/* --exclude=/media/* --exclude=/lost+found

و هيچ تفاوتی باهم ندارن.خب، حالا بریم سراغ چهارتا آپشن aAXv و چند تا آپشن دیگه که مي تونيد ازشون استفاده کنین:


v- که مخفف verbose هست آپشنی هست که باعث میشه در زمان اجرای دستور بهتون خروجي بيشتری نمايش داده بشه.
a- باعث میشه که Attributeهاي اصلي فايل ها (مثل Permissionها، ownerها و...)، در عمليات کپی تغيير نکنه و ثابت باقي بمونه.
A- باعث میشه که اگه رو فايل هاتون ACL دارید، مقادرش در عمليات کپی تغيير نکنه و ثابت باقي بمونه.
X- باعث میشه مقادیر Extended Attributeهاي فايل هاتون در عمليات کپی تغيير نکنه و ثابت باقي بمونه.

چندتا Option مفید ديگه هم مي تونيد ازش استفاده کنید در ادامه توضیح مي دم:
اگه فايلي دارید که حجمش زیاد هست و زمان کپي کردنش طول مي کشه مي تونيد از Progress-- استفاده کنید. اين آپشن باعث مي شه که درصد کپي شده فايل نمايش داده بشه.با استفاده از آپشن dry-run-- قبل از اينکه عمليات بکاپتون رو انجام بديد مي تونيد کامندي که زدید رو و شرايط موجود رو تست کنيد بدون اينکه عمليات بکاپ گیری رو انجام بدید.
delete-- يک آپشن خيلي مهم در rsync محسوب مي شه که با استفاده از اون عمليات بکاپ به صورت Incremental  انجام می شه. یعنی فایل هاي جديد که در مبدأ تشکيل شدند رو در مقصد کپی مي کنه و فايل هايي که در مبدأ تغيير کردن رو مياد Overwrite مي کنه. اگه فايلي هم در مبدأ پاک شده باشه، مياد و اون فايل رو از مقصد هم پاک مي کنه.
خب، در انتها چندتا نکته خدمتتون عرض مي کنم تا نحوه عملکرد مکانیزم بکاپ با استفاده از rsync براتون واضح تر شه.نکته اول اينکه خیلی از نرم افزارهاي بکاپ هستن که خروجي هر کدوم از بکاپ هايي مي گیرن يک (یا حالا دو سه تا) فايله. Rsync اين طوری نیست. Rsync مياد و از تک تک فايل هاتون کپي مي گیره و شما به تمام فايل ها به صورت مستقیم دسترسی داريد. این نکته مي تونه مزايا و معايبی داشته باشه که باید مد نظر قرار بدید.
نکته دوم هم اين که rsync به Disk Layout شما کاری نداره و صرفا مياد و فايل هارو از مبدأ به مقصد کپی مي کنه و کاری نداره که مبدأ شما از چه Partitionهايي تشکیل شده. براي سیستم هاي تک پارتیشن اين مسئله مهم نيست ولي زماني که شما چندتا پارتیشن دارید، LVM دارید و… در زمان بازگرداني بکاپ بايد حتما به اين نکته توجه داشته باشید. پس قبل از بازگردانی باید  Disk Layout رو به شکلي که باید تغيير بدید.

نکته سوم اینکه encrypt کردن بکاپ ها می تونه مزیت های امنيتي بالايي به همراه داشته باشه.

نکته بعدي اين که اگر مي خوايد از سیستم عاملتون در چندین State بکاپ داشته باشید، یا باید آدرس مقصد رو در بکاپهاتون تغيير بديد يا گزینه بهتر اين که بکاپ قبلی رو یه جا کپی کنید و از سیستمتون نسبت به بکاپ کپی شده Incremental بکاپ بگیرید (استفاده از rsync با آپشن delete--)
نکته مهم بعدي اين که حتما هر از چند گاهی (يا حد اقل يک بار) بکاپ هارو بازگردانی کنید تا از صحت اونها اطمينان حاصل کنید.
نکته اخر هم اين که به rsync به عنوان به ابزار copy فايل نگاه کنید که Optionهاي زیادی داره. اصن یکی از کاربردهای مهم rsync کپي فايل هاست ولي اين رو هم بدونيد که براي بکاپ گيري يکي سیستم عامل های لینوکسی از مهم ترین ابزارها محسوب میشه.

پیروز و سربلند باشید...


مهیار کباری
مهیار کباری

مهیار کباری، حدود 10 سال سابقه کار دارم در سازمان های و نهادهای دولتی، بانک ها و مؤسسات مالي اعتباری، بیمه ها و سازمان فناوری اطلاعات در حوزه های شبکه، امنیت اطلاعات و زیرساخت سرویس در قالب های مشاوره، طراحي، پياده سازی و راهبری. در حوزه های Cisco، Juniper، Fortinet، F5، VMWare، Server&Storage، Linux و Penetration Test به صورت White Hat فعاليت های خوبی داشتم. بیش از ۴ سال مدیر فنی دپارتمان امنيت و کمتر از یک سال مدیر فنی مرکز داده مؤسسه اعتباری نور بودم و الان هم به صورت Free Lancer فعاليت مي ک

نظرات