کاربران Linux 🐧 هم میتوانند همانند کاربران ویندوز و… از اطلاعات خود بکاپ بگیرند. روش های مختلفی برای انجام این کار وجود دارد که همه آنها قابل اعتماد نیستند. در این مطلب از کلاسیک وب به آموزش بکاپ گرفتن از لینوکس میپردازیم.
چگونه در لینوکس از فایل ها بکاپ بگیریم؟
?How to Backup Linux System
اگر از لینوکس استفاده می کنید، می توانید از اطلاعات خود بکاپ بگیرید. در این مطلب از کلاسیک وب نحوه بک آپ گرفتن از اوبونتو و لینوکس را آموزش می دهیم. در این آموزش به تمامی نکات لازم انتقال داده ها و گرفتن نسخه پشتیبان اشاره می کنیم. با ادامه این مطلب ما را همراهی کنید.
بکاپ از لینوکس با دستور rsync و هارد اکسترنال: بخش اول
برای بکاپ گرفتن از لینوکس باید از هارد اکسترنالی استفاده کنید که Mount شده باشد. در این حالت وقتی آن را به کامپیوتر وصل میکنید، به صورت خودکار با سیستم Mount میشود. باید مسیر درایو را بدانید. در GNOME فایل مرورگر Nautilus را باز کنید و نام درایو را در نوار کناری پیدا کنید. نشانگر موس را روی نام درایو هارد اکسترنال ببرید. حال میتوانید مسیر درایو را مشاهده کنید.
در مثال ما نشان میدهد که Mount point فایل سیستم درایو اکسترنال، /media/dave/SILVERXHD است.
اگر فایل مرورگر شما چنین چیزی را نشان نمی دهد، باید در هادر اسکترنال بگردید و پنجره ترمینال را در آنجا باز کنید. سپس دستور pwd را اجرا کنید تا بتوانید مسیر را پرینت کنید.
حال برای این که بتوانید با دستور rsync محتوا را از دایرکتوری به مقصد بکاپ کپی کنید، باید از دستور زیر استفاده کنید.
گزینه -r (recursive) موجب میشود تا rsync تمامی زیرشاخههای دایرکتوری و محتوای آنان را کپی کند.
rsync -r /home/dave/Documents/ /media/dave/SILVERXHD/
کپی فایل انجام میشود و شما به خط دیگری در صفحه دستورات برده میشوید. اگر درایو اکسترنال را نگاه کنید، متوجه دایرکتوریهایی میشوید که در بخش Documents directory قرار دارند.
ls
حال باید Source Directory و محتوای آن را کپی کنید. اگر میخواستید دایرکتوری Documents و محتوای آن در درایو اکسترنال کپی شود، / را از آخر /home/dave/Documents در دستوری مانند دستور زیر بردارید:
rsync -r /home/dave/Documents /media/dave/SILVERXHD/
اگر اجازه بدهید تا کپی دوم هم انجام شود، متوجه میشوید که Documents directory کپی شده است و محتوای آن در آن دایرکتوری قرار دارد و در روت درایور اکسترنال نیست.
بکاپ لینوکس از دایرکتوری خاص: بخش دوم
برای گرفتن بکاپ از لینوکس و دایرکتوری خاص، باید نام دایرکتوری را به مسیر هدف اضافه کنید. مثلا میخواهیم محتوای /home/dave/Documents را در دایرکتوری backups که در درایو اکسترنال وجود دارد، کپی کنیم. دستور زیر را باید اجرا کنیم:
rsync -r /home/dave/Documents/ /media/dave/SILVERXHD/backups/
حال درایو اکسترنال را چک کنید. میتوانید دایرکتوری بکاپ را مشاهده کنید که در آن ایجاد شده است و در آن محتوای دایرکتوری /home/dave/Documents هم وجود دارد.
ls
ls backups
حال برای حفظ File Ownership و مجوزها، از -a (archive) برای حفظ ویژگیهای فایلها مانند تاریخهای اصلاح، مالکیت فایل، مجوزهای دسترسی و…برای فایلهای کپی شده، پیوندها و فایلهای بلاک خاص استفاده میکنیم.
rsync -ra /home/dave/Documents/ /media/dave/SILVERXHD/backups/
برای استفاده از حالت Verbose Mode که rsync را مجبور میکند تا لیستی از فایلهای کپی شده ایجاد کند، باید از دستور زیر استفاده کنید:
rsync -rav /home/dave/Documents/ /media/dave/SILVERXHD/backups/
خلاصهای از بکاپ برای شما نمایش داده خواهد شد:
Sent: بایتهای منتقل شده به هدف
Received: بایتهای دریافت شده از میزبان
Bytes/sec: نسبت انتقال موثر
Total size: نشان دهنده آن میزان اندازهای از داده است که اگر از دستور rsync استفاده نمی کردید، منتقل می شد. در اجراهای بعدی این دستور، تنها تفاوتهای فایلها منتقل خواهد شد. این رقم نشان دهنده دادههایی است که نیازی به انتقال ندارند.
Speedup: این نسبت نشان دهنده میزان داده هایی است که باید انتقال پیدا میکرد و مجموع دادههایی که وجود دارد. اگر نیاز باشد که rsync تمام فایل ها را به صورت کامل کپی کند، مثلا برای اولین بار که اجرا می شود، سرعت به ۱٫۰ افزایش خواهد یافت. در اجرای بعدی، انتقال بهیه میشود. فقط تفاوت بین فایلها را ارسال خواهد کرد، نه کل فایلها را. فایلهایی که تغییر نداشتند، نادیده گرفته خواهند شد. این رقم نشاندهنده نسبت بین مقدار کمی از دادههایی است که در برابر حجم کل فایلها، نیاز است منتقل شود.
بکاپ گرفتن از لینوکس: بخش سوم
دستور –P موجب میشود تا rsync پس از کپی هر فایل، یک گزارش کوچک ارائه دهد. برای گرفتن بکاپ از لینوکس با Progress، باید دستور زیر را وارد کنید:
rsync -raP /home/dave/Documents/ /media/dave/SILVERXHD/backups/
سپس میتوانید اطلاعات زیر را مشاهده کنید:
Byte size: میزان داده انتقال یافته برای این فایل
Percentage: درصد انتقال فایل
B/s: نسبت انتقال داده
Time remaining: میزان زمان باقی مانده برای انتقال فایل
xfr#: تعداد فایلهایی که در آن لحظه منتقل شدهاند
to-chk: تعداد فایلهای باقی مانده که نیاز به چک و تایید شدن توسط الگوریتم دارند.
شما میتوانید به فرایند انتقال سرعت ببخشید. برای این کار باید از –z استفاده کنید. این کار موجب میشود تا فایلها در زمان انتقال فشرده شوند اما در دایرکتوری هدف به حالت عادی برگردند. این دستور برای فایلهای بزرگ مناسب است و تاثیر چندانی روی فایلهای کوچک ندارد.
در اینجا ما از –partial هم استفاده میکنیم. این مورد موجب میشود تا فایلهایی که به دلیل مشکلات شبکه نصفه منتقل شدهاند، حذف شوند. –partial موجب میشود تا rsync فایلهای نصفه را در هدف جا بگذارد.
نکته: اگر فکر میکنید ممکن است فردی فایل نصفه را با فایل کامل اشتباه بگیرد، از این مورد استفاده نکنید.
rsync -ravz –partial /home/dave/Documents/ /media/dave/SILVERXHD/backups/
در مثال ما، میتوانید تصویر زیر را مشاهده کنید:
در اینجا سرعت افزایش یافته است اما میزان آن بسیار کم و در حد دو صدم درصد است. این سرعت میتواند برای شما بسیار بیشتر باشد.
اگر با ارور Permission denied در لینوکس مواجه میشوید، مطلب حل خطای Permission denied در لینوکس کالی ، اوبونتو و… را مطالعه کنید.
استفاده از دستور rsync برای بکاپ گرفتن از لینوکس با کمک شبکه
تا این جای کار نحوه بکاپ گرفتن از لینوکس با هارد اکسترنال را آموزش دادیم. برای استفاده از یک شبکه محلی به عنوان هدف برای بکاپ گرفتن، از مسیر آن شبکه باید در خط دستور استفاده کنید. یک دستگاه ذخیرهسازی متصل به شبکه یا NAS در شبکه وجود دارد که ما در اینجا از آن استفاده خواهیم کرد.
میتوانید از همان شیوه که پیشتر برای شناسایی مسیر استفاده کرده بودیم، بهره ببریم. نشانگر موس را روی ارتباط آن دستگاه در Nautilus ببرید.
هیچ مورد خاصی برای بکاپ گرفتن از این روش وجود ندارد. تمامی موارد همان چیزهایی هستند که پیشتر اشاره کردیم.
rsync -ravz –partial /home/dave/Documents/ /media/dave/NAS/dave/backups/
خروجیها هم به همان شکل خواهند بود:
البته در بخش Bytes/sec کمی تغییر وجود دارد که قابل انتظار بود. اگر rsync را دوباره اجرا کنید، میتوانید مشاهده کنید که هیچ فایلی برای انتقال وجود ندارد زیرا هیچ تغییری رخ نداده است اما مقدار کمی بایت برای انتقال و دریافت وجود دارد. این مورد هم برای مقایسه لیست فایلها با فایلهای منبع است.
نرخ افزایش سرعت در این مثال یک مرتبه بهتر شده است. در عمل، ممکن است این مورد متفاوت باشد.
بکاپ گرفتن از لینوکس با کمک SSH
دستور rsync بکاپ گیری از لینوکس در ارتباط SSH را هم پشتیبانی میکند. برای این کار باید نام کاربری اکانت و لوکیشن SSH را در خط دستوری بیاوریم. در اینجا از نام شبکه استفاده میکنیم اما شما می توانیم از آدرس آی پی استفاده کنید.
به نقل قول : بین جزییات SSH و شروع مسیر شبکه دقت کنید:
rsync -ravz –partial /home/dave/Documents/ dave@sulaco.local:/home/dave/Backups/
از شما خواسته میشود تا رمز اکانت کاربری remote machine را وارد کنید. این رمز همان رمز دستگاه منبع شما نیست.
بکاپ تکمیل خواهد شد. البته سرعت انتقال این روش کمی پایین تر است. علت آن هم رمزگشایی و رمزگذاریهایی است که در secure shell این ارتباط رخ میدهد.
بکاپ گیری خودکار از لینوکس
شما میتواند فرایند بکاپ از لینوکس را به صورت اتوماتیک اجرا کنید:
crontab -e
ما بکاپ خودکاری برای هر روز ایجاد کردیم که در ساعت ۰۴:۳۰ انجام میشود. البته اگر کامپیوتر در آن ساعت روشن باشد. دستورات به همان شکل خواهند بود و هیچ تغییری پیدا نمیکنند.
با Ctrl+O میتوانید تغییرات را بنویسید و با Ctrl+X میتوانید ویرایشگر nano را ببندید.
نرم افزار بکاپ گیری از لینوکس
اگر با ظاهر این دستورات مشکل دارید و با آنها راحت نیستید، میتوانید از نرم افزار بکاپ گیری از لینوکس مانند luckyBackup و Grsync استفاده کنید. این گونه ظاهر دستورات شکل تازهای به خود میگیرد.
برنامه Grsync بیشتر تمرکز بر شکل ظاهری rync دارد. در این برنامه میتوانید دسترسی آسانی به گزینههای مختلف rsync داشته باشید.
برنامه LuckyBackup هم دستور rsync را به شکل سادهتری نمایش میدهد. این برنامه میتواند اسکرین شاتهای مختلفی از بکاپ بگیرد و شما هر زمان که خواستید میتوانید به هر کدام از آنها roll back کنید.
برای نصب Grsync در اوبونتو از دستور زیر استفاده کنید:
sudo apt-get install grsync
برای نصب آن در Fedora از دستور زیر استفاده کنید:
sudo dnf install grsync
برای نصب آن در Manaro از دستور استفاده کنید:
sudo pacman -Syu grsync
برای نصب luckyBackup در اوبونتو از دستور زیر استفاده کنید:
sudo apt-get install luckybackup
برای نصب آن در Fedora از دستور زیر استفاده کنید:
sudo dnf install luckybackup
در Manjaro باید luckyBackup را از Arch User Repository (AUR) نصب کنید. می توانید این کار را با پکیج منیجر pamac انجام دهید.
بکاپ گرفتن از اوبونتو با Shell Scripts: بخش اول
یکی از راحت ترین راهها برای بکاپ از اوبونتو این است که از Shell Scripts استفاده کنید. به عنوان مثال، یک اسکریپت میتواند برای این استفاده شود که تشخیص دهد از کدام دایرکتوری بکاپ گرفته شود. این دایرکتوریها هم به tar utility ارسال خواهند شد که فایل آرشیوی درست میکند. این فایل آرشیو میتواند کپی و به محل دیگری منتقل شود. این آرشیو میتواند روی فایل سیستم ریموت مانند NFS mount هم ایجاد شود. این تار میتواند یک فایل آرشیو از میان فایلها یا دایرکتوریهای مختلف ایجاد کند. همچنین تار میتواند فایلها را فیلتر کند تا اندازه فایل آرشیو کمتر شود.
اسکریپت شل زیر از تار برای ایجاد یک فایل بایگانی در یک فایل سیستم NFS که به صورت ریموت Mount شده است، استفاده میکند. نام فایل بایگانی با استفاده از ابزارهای خط دستوری تعیین میشود.
#!/bin/bash
####################################
#
# Backup to NFS mount script.
#
####################################
# What to backup.
backup_files=”/home /var/spool/mail /etc /root /boot /opt”
# Where to backup to.
dest=”/mnt/backup”
# Create archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file=”$hostname-$day.tgz”
# Print start status message.
echo “Backing up $backup_files to $dest/$archive_file”
date
echo
# Backup the files using tar.
tar czf $dest/$archive_file $backup_files
# Print end status message.
echo
echo “Backup finished”
date
# Long listing of files in $dest to check file sizes.
ls -lh $dest
بکاپ گرفتن از اوبونتو با Shell Scripts: بخش دوم
$backup_files: متغیری که فهرستی از دایرکتوری هایی را که میخواهید از آنان پشتیبانی بگیرید، نمایش میدهد. این فهرست مطابق با نیازهای شما سفارشی میشود.
$day: متغیری که روزهای هفته را نشان میدهد. این مورد زمانی استفاده میشود که بخواهید یک فایل بایگانی برای هر روز هفته ایجاد کنید و تاریخچه آنان را داشته باشید. راه های دیگری هم برای انجام این کار وجود دارد. مثلا استفاده از Date utility.
$hostname: نام کوتاه شده میزبان سیستم. استفاده از نام میزبان در فایل آرشیو به شما این امکان را میدهد تا فایل بایگانی روزانه را از چندین سیستم در یک دایرکتوری قرار دهید.
$archive_file: نام کامل فایل آرشیو یا بایگانی.
$dest: مقصد فایل آرشیو. دایرکتوری باید ایجاد شود و در این مورد قبل از اجرای اسکریپت بکاپ، نصب شود.
status messages: پیام های اختیاری که با استفاده از ابزار echo روی کنوسل پرینت میشوند.
tar czf $dest/$archive_file $backup_files: دستور تار که برای ایجاد فایل آرشیو استفاده می شود.
c: یک آرشیو ایجاد میکند.
Z: بایگانی را از طریق دستور gzip در لینوکس فشرده و فیلتر میکند.
F: خروجی یک فایل بایگانی. در غیر این صورت، خروجی تار به STDOUT ارسال میشود.
ls -lh $dest: بخش اختیاری که فهرست طولانی دایرکتوری مقصد –l را در قالب –h پرینت میکند تا قابل خواندن شود. این عمل برای چک کردن سریع اندازه فایل آرشیو مناسب است. البته این بررسی نباید جایگزین تست فایل آرشیو شود.
این یک مثال ساده از بکاپ گیری shell script بود. با این حال، گزینههای زیادی وجود دارد که میتوانید در چنینی اسکریپتی بگنجانید.
نحوه استفاده از اسکریپت برای بکاپ گرفتن از اوبونتو: بخش اول
برای اجرای اسکریپت در زمان بکاپ گرفتن اوبونتو میتوانید اسکریپت ذکر شده را کپی و رد یک فایل پیست کنید. مثلا فایلی به نام backup.sh. فایل هم باید قابل اجرا باشد:
chmod u+x backup.sh
سپس از یک Terminal prompt:
sudo ./backup.sh
این بهترین راه برای تست کردن اسکریپت است تا مطمئن شوید همه چیز به درستی کار میکند.
روش دیگر این است که اسکریپت را با ابزار Cron اجرا کنید. با این شیوه میتوایند آن را در زمان و تاریخ خاصی اجرا کنید. Cron از طریق ورودیهای یک فایل crontab پیکربندی میشود. فایلهای crontab به فیلدهای زیر تقسیم میشوند:
# m h dom mon dow command
m: دقیقهای که دستور اجرا میشود. میتواند بین ۰ تا ۵۹ باشد.
H: ساعت اجرای دستور. بین ۰ الی ۲۳
Dom: روزی از ماه که دستور اجرا میشود.
Mon: ماهی که دستور اجرا میشود. بین ۱ الی ۱۲٫
Dow: روزی از هفته که دستور اجرا میشود. بین ۰ الی ۷٫ ممکن است روز شنبه با ۰ یا ۷ نمایش داده شود.
Command: دستوری که باید اجرا شود.
برای تغییر یا اضافه کردن ورودیهای مختلف در فایل crontab، باید از دستور crontab –e استفاده شود. علاوه بر این، محتوای فایل crontab را میتوانید با دستور crontab –l مشاهده کنید.
برای اجرای اسکریپت backup.sh با Cron که پیشتر به آن اشاره کردیم، باید دستور زیر را در صفحه ترمینال وارد کنید:
sudo crontab -e
نکته: با استفاده از sudo برای اجرای دستور crontab –e بخش root user ویرایش خواهد شد. اگر میخواهید از دایرکتوریهایی بکاپ بگیرید که فقط کاربران روت به آن دسترسی دارند، باید به این نکته توجه کنید.
ورودی زیر را با فایل crontab اضافه کنید:
# m h dom mon dow command
۰ ۰ * * * bash /usr/local/bin/backup.sh
نحوه استفاده از اسکریپت برای بکاپ گرفتن از اوبونتو: بخش دوم
حال اسکریپت backup.sh هر روز ساعت ۱۲ بعد از ظهر اجرا میشود.
نکته: این اسکریپت باید در دایرکتوری /usr/local/bin/ کپی شود تا این ورودی به درستی اجرا شود. این اسکریپت را میتوانید در هر جایی از فایل سیستم قرار دهید. مسیر اسکریپت را به درستی تغییر دهید.
وقتی آرشیو را ایجاد کردید، حتما آن را تست کنید. برای این کار میتوانید فایلی را از آن Restore کنید. برای مشاهده فهرستی از محتوای آرشیو دستور زیر را در ترمینال اجرا کنید:
tar -tzvf /mnt/backup/host-Monday.tgz
برای ری استور کردن فایل از آرشیو در دایرکتوری دیگر دستور زیر را اجرا کنید:
tar -xzvf /mnt/backup/host-Monday.tgz -C /tmp etc/hosts
-C در تار فایل استخراج شده را به دایرکتوری خاصی میبرد. در مثال بالا فایل در /etc/hosts file to /tmp/etc/hosts استخراج میشود. تار ساختار دایرکتوری موجود در آن را دوباره ایجاد میکند.
همچین توجه داشته باشید که “/” در جلوی مسیر فایلی که Restore میکنید، باقی مانده است.
برای ری استور کردن همه فایلها از دستور زیر استفاده کنید:
cd /sudo tar -xzvf /mnt/backup/host-Monday.tgz
نکته: با این کار فایلهای روی فایل سیستم دوباره رایت میشوند.
نظرات و پیشنهادات شما؟
در این مطلب از کلاسیک وب نحوه بکاپ گرفتن از لینوکس را آموزش دادیم. آیا موفق شدید از داده های خود بکاپ بگیرید؟ لطفاً نظرات و پیشنهادات خود را در بخش دیدگاه با ما در میان بگذارید.
آخرین دیدگاه ها
تا کنون دیدگاهی ثبت نشده است.