فدک - دبیان - همگام سازی فایل‎ها و پشتیبان گیری با Sync
آخرین تغییرات : 2017-07-24تعداد بازدید : 297

همگام سازی فایل‎ها و پشتیبان گیری با Sync


  1. مقدمه
    1. دیمن
    2. آرسینک
  2. نصب
  3. کاربرد محلی
  4. کاربرد سروری
  5. بیشتر

مقدمه

دیمن

در سیستم‌عامل‌های با قابلیت چندکارگی, یک دیمِن (به انگلیسی: Daemon) یک برنامه است که به جای اینکه تحت کنترل مستقیم یک کاربر تعاملی باشد، در پس‌زمینه اجرا می‌شود. به طور سنتی نام دیمن‎ها با حرف d خاتمه می‌یابد. به عنوان مثال، syslogd دیمنی است که قابلیت ثبت رخداد در سیستم‌عامل‌های شبه یونیکس را پیاده‌سازی می‌کند و برنامه‌های کاربردی به کمک این دیمن اطلاعاتی را در فایل‌های ثبت رخداد خود می‌نویسند. یا همچنین sshd دیمنی است که در پس‌زمینه سیستم منتظر اتصالات ورودی اس‌اس‌اچ می‌ماند و آنها را اجابت می‌کند. در سیستم‌عامل‌های یونیکس و شبه یونیکس، فرایند والد یک دیمن، معمولا، اما نه همیشه، فرایندی به نام اینیت است. یک دیمن معمولا به این صورت ایجاد می‌شود که یک فرایند، فرایند فرزندی را منشعب کرده و سپس بالافاصله خارج می‌شود تا باعث شود اینیت فرایند فرزند تولید شده را مال خود کند. به علاوه، دیمن یا سیستم‌عامل باید کارهای دیگری را هم انجام دهد، مثلا باید دیمن مورد نظر از کنترل هر ترمینالی خارج شود و به هیچ ترمینالی وابسته نباشد. چرا که دیمن قرار است در پس‌زیمنه به اجرا درآید و قرار نیست با کاربر به صورت تعاملی ارتباط برقرار کند. به منظور انجام دادن راحت‌تر این کارها، بیشتر سیستم‌عامل‌های یونیکس توابع و رویه‌هایی مانند daemon(3)‎ را پیاده‌سازی کرده‌اند که عملیات فوق را خیلی آسانتر می‌کنند. در اکثر سیستم‌ها، دیمن‌ها اغلب در هنگام بوت شدن سیستم آغاز به کار می‌کنند و خدماتی نظیر پاسخگویی به درخواست‌های شبکه، فعالیت‌های سخت‌افزاری و ... را ارائه می‌دهند.

آرسینک

آرسینک (به انگلیسی: rsync) نام یک نرم‌افزار و همچنین یک پروتکل شبکه برای سیستم‌عامل‌های شبه یونیکس (پورت‌هایی هم برای مایکروسافت ویندوز موجود است) است. این برنامه به منظور همگام‌سازی فایل‌ها و دایرکتوری‌ها از یک مکان به مکانی دیگر، به صورتی که کمترین حجم اطلاعات در شبکه منتقل شود، استفاده می‌شود. برای این کار آرسینک از انکودینگ دلتا در صورت لزوم استفاده می‌کند. همچنین آرسینک می‌تواند عمل انتقال اطلاعات در شبکه را به صورت رمزنگاری شده و با استفاده از SSH انجام دهد. همچنین عمل رمزنگاری با استفاده از SSL هم می‌تواند با استفاده از Stunnel صورت پذیرد. قابلیتی که در آرسینک وجود دارد و دیگر برنامه‌های مشابه آن را ندارند[نیازمند منبع] این است که عمل یکسان‌سازی داده‌ها با تنها یک بار انتقال اطلاعات در هر طرف صورت می‌گیرد که این کار باعث از بین رفتن تاخیر حاصل از ارسال صدها پیام کوتاه در شبکه می‌شود. آرسینک قادر است محتوای یک دایرکتوری را نمایش داده یا کپی کند که کاربر می‌تواند به اختیار خود از فشرده‌سازی و قابلیت بازگشتی هم استفاده کند. آرسینک وقتی که در حالت دیمن اجرا می‌شود، بر روی پورت شماره ۸۷۳ به درخواست‌ها گوش می‌دهد و فایل‌ها را با استفاده از یک پروتکل بومی مخصوص به نام «پروتکل آرسینک» انجام می‌دهد. آرسینک تحت پروانه جی‌پی‌ال نسخه ۳ منتشر می‌شود و یک نرم‌افزار آزاد است.

نصب

کاربرد محلی

rsync -azv /media/Moghadam_ /media/

rsync -azv /home/z/Downloads/a /home/z/Downloads/aa


rsync -avvru --delete /media/Moghadam_ /media/
rsync -avvru --delete /home/z/Downloads/a /home/z/Downloads/aa

کاربرد سروری

کار‌برد‌های دستور rsync در سرور
برای انتقال فایل‌ها در SSH می‌توان از دستور rsync استفاده کرد.
rsync [options] source destination
مثال: انتقال چندین فایل:
rsync myfile.txt [email protected] :/root
به‌جای root می‌توانید از نام کاربری خودتان هم استفاده کنید.
دستور rsync تعدادی گزینه یا Option هم دارد که بهتر است در زمان استفاده از این دستور از آن‌ها استفاده شود:
a- حالت Archive
v- حالت Verbose
z- فشرده‌سازی در زمان انتقال (برای انتقال سریع‌تر)
progress-- برای نمایش فهرست موارد ارسالی
مثال:
rsync -azv --progress *.tar.gz [email protected] :/home
در صورتی که فرمان rsync قطع شد، می‌توانید از گزینه a- استفاده کنید. استفاده از این گزینه، مانع از Overwrite شدن فایل‌ها می‌شود و فقط فایل‌هایی که در مقصد وجود ندارند، منتقل می‌شوند.
دستور rsync در حالت پیش‌فرض با پورت 22 پروتوکل SSH کار می‌کند. در صورتی که سرور مقصد از پورت 22 استفاده نمی‌کرد، می‌توانید از گزینه زیر استفاده کنید:
--rsh='ssh -p22'
به‌جای 22 شماره پورت دلخواه خود را بگذارید.
اگر در زمان اجرای این دستور، خطای زیر را دریافت کردید به‌این علت است که بسته rsync در سرور مقصد، نصب نشده است.
rsync: Connection unexpectedly closed (0 bytes recived so for ) [Sender]
rsync: Error: Rewrote command not found (code 127/ atioc 456) [Sender]
برای نصب این بسته نرم‌افزاری، کافی است دستورات زیر را وارد کنید:
در سرور‌های مبتنی بر Debian:
apt-get install rsync
در سرور‌های مبتنی بر Red Hat:
yum -y install rsync

 

کاربرد پیچیده

 آموزش کاربردی Rsync
علی رضا حبیبی لینوکس - لینوکس
Rsync یک برنامه ساده  و کوچک، همانند یک برنامه انتقال فایل می‌باشد، آخرین نسخه‎ای که در زمان نوشتن این مقاله وجود دارد نسخه  3.0.4 می‌باشد که می‌توانید از سایت رسمی آن با آدرس http://samba.anu.edu.au/rsync دریافت کنید.
با این برنامه حتی می‌توان فقط تغییراتی که بر روی یک فایل  انجام شده را انتقال داد، در نظر بگیرید که شما سروری دارید که مدام مجبورید اطلاعات آن را با سرور دیگر بروز رسانی کنید، برای این کار لازم نیست هر بار اطلاعات مورد نظر را تماما انتقال دهید، با کمک Rsync  می‌توان فقط فایل‎هایی را که در کامپیوتر مبدا و یا مقصد تغییر کرده اند، انتقال داد. این کار فواید بسیاری از جمله، آپلود سریع تر و کم تر شدن ترافیک شبکه و صرفه جویی در پهنای باند مصرفی  را  بدنبال خواهد داشت.
در واقع  Rsync  یک برنامه چند منظوره است که کارهای Backup  & Mirroring   را برای شما انجام خواهد داد.
بعضی امکانات Rsync   عبارت‎اند از :
    پشتیبانی از حفظ اطلاعات فایل منتقل شده، همانند مالک فایل، گروه فایل، مجوز‎های فایل و ...
    عدم نیاز به مجوز کاربر ریشه
    ترانسپرنت شدن با پروتکل‎هایی نظیر ssh ، rsh
    قابلیت استفاده بصورت anonymous  یا authenticated
برای شروع ابتدا مطمئن شوید که برنامه مورد نظر در سیستم شما نصب میباشد من از CentOS 5.2 استفاده می‌کنم کلیه دستوران نوشته شده در این مقاله هم بر اساس همین توزیع می‌باشد.
برای این کار می‌توانید دستور rsync را اجرا کنید و یا خروجی دستور زیر را ببینید :
    #rpm  -q  rysnc
و خروجی بمانند زیر خواهد بود :
[[email protected] ~]# rpm -q rsync
rsync-3.0.4-1.el5.rf
[[email protected] ~]#
در صورتی که برنامه در سیستم شما نصب نبود از دستور زیر استفاده کنید :
    #yum install rsync
در دیگر توزیع‎ها همانند fedora , redhat , debian  هماند بالا میباشد با این تفاوت که در debian می‌بایست از apt-get  استفاده نمایید .
برای راه اندازی شما باید Rsync  را بصورت Daemon   راه اندازی کنید این کار با استفاده از دستور  rsync –daemon در کنسول انجام خواهد شد، فایل پیکربندی آن بصورت پیشفرض در آدرس  etc/rsyncd.conf/  قرار دارد و با کمک Vi  می‌توانید آن را ویرایش کنید. تمام دستگاهایی که برنامه Rsync  را اجرا کنند می‌توانند با دستگاهی که  در آن Rsync Daemon  راه اندازی شده است همزمان شودند.
برای این کار شما باید یک دستگاه را که قرار است نقش سرور را بازی کند بصورت Daemon  راه اندازی کنید همچنین کلاینت‎ها نیز می‌توانند برای بر قراری یک ارتباط دو طرفه در حالت daemon  راه اندازی شوند.
در زیر بعضی از فایل‎های پیکربندی Rsync  را مشاهده می‌کنید
motd file = /etc/rsyncd.motd
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[simple_path_name]
path = /rsync_files_here
comment = My Very Own Rsync Server
uid = nobody
gid = nobody
read only = no
list = yes
auth users = username
secrets file = /etc/rsyncd.scrt
    هر گاه شما بخواهید پیامی را به کاربران خود نمایش بدهید می‌توانید از فایل etc/rsyncd.motd/   استفاده کنید.
    فایل بعدی فایلی است که لاگ‎های مربوط به Rsync  در آن ریخته خواهد شد.
    دو فایل بعدی برای شماره پردازش Rsync  و قفل کردن آن می‌باشد.
    در فایل پیکربندی گزینه Path  مسیری را که فایل‎ها به/ از آن همزمان خواهند شد را نشان می‌دهد,
    Comment مختصری توضیح راجع به مسیر داده شده خواهد بود،
    Uid &Gid  نام کاربری و گروهی که Rsync  با ان اجرا خواهد شد را نشان می‌دهد،
    اگر شما بخواهید دسترسی را به یوزری که از قبل تعریف شده محدود کنید می‌توانید Auth Users  را برای آن مشخص کنید که این کار با فایلSecret  که بصورتplaintext   نوشته می‌شود و با فرمت Key/value  که نشان دهنده نام کاربری و رمز عبور است، انجام می‌شود.
rsync remote-update  یک پروتکل برای Rsync  می‌باشد که تنها  تغییرات صورت گرفته را بین دو ماشین منتقل می‌کند.
دو راه برای اتصال rsync  برای انتقال فایل وجود دارد، یک راه استفاده از  برنامه‎های remote-shell  مانند ssh   بعنوان انتقال است و راه دیگر اتصال به daemon  برنامه Rsync  توسط پروتکل tcp  می‌باشد.
انتقال با remote-shell  هر زمانی که  مسیر‎های منبع و مقصد  محتوی  تنها یک کالن ( : ) بعد از مشخص کردن میزبان باشند استفاده میشود،  اتصال به daemon  برنامه Rsync   تنها زمانی که مسیر‎های منبع و مقصد محتوی دو کالن  ( :: ) بعد از مشخص کردن میزبان  باشند و یا بکار بردن عبارت //:rsync  استفاده میشود
    استفاده از Rsync  :
شما می‌توانید  با مشخص کردن مبدا و مقصد به راحتی از این برنامه استفاده کنید برای مثال :
    rsync  -t *.c foo:src/
شاید این کلی‌ترین دستور برای  rsync   باشد، در این دستور تمامی پترن‎های  شامل c.*  به سیستمی با نام foo، و به دایرکتری src  انتقال پیدا می‌کند , اگر فایلی با نام مشابه در دایرکتری مقصد وجود داشته باشد، rsync remote-update protocol برای بروز رسانی آن فایل‎ها تنها با فرستادن تغییرات شروع به کار می‌کند
    rsync -avz foo:src/bar  /data/tmp
این دستور بصورت recursive  تمامی فایل‎های دایرکتری  src/bar را  در ماشین foo   به دایرکتری   data/tmp  در ماشین فعلی کپی می‌کند. فایل‎ها در حالت آرشیو منتقل می‌شوند که این کار باعث می‌شود تمامی مجوز‎ها و اطلاعات فایل در حین انتقال حفظ شود.
همچنین فشرده سازی باعث کاهش حجم فایل در حین انتقال خواهد شد.
در آخر هم سعی می‌کنیم یک مثال پیچیده را با هم بررسی کنیم
    rsync --verbose  --progress --stats --compress --rsh=/usr/local/bin/ssh --recursive --times --perms --links --delete /www/* webserver:simple_path_name
خوب این دستور rsync   را با گزینه‎های verbose , progress , stats  راه اندازی می‌کند
گزینه Compress برای فشرده سازی اطلاعات و گزینه rsh  برای انتقال اصلاعات بصورت امن از طریق ssh  خواهد بود، خط بعد مشخص می‌کند که Rsync  چطور با فایل‎های  رفتار کند:
Recursive  به آن  می‌گوید که فایل‎ها و دایرکتری‎ها را بصورت recursive  انتقال دهد و اطلاعات زمان و مجوز‎ها را با دو عبارت times  و perms  انتقال دهد همچنین عبارت links نشان دهنده  کپی کردن symbolic‎ها و عبارت Delete  نشان دهنده پاک کردن دایرکتری و فایل‎ها در دایرکتری مقصد که در سیستم فعلی حذف شده‎اند می‌باشد */www/ فایل‎هایی از سیستم من که قرار است توسط Rsync  انتقال داده شوند را نشان می‌دهد و webserver:simple_path_name آدرس کامپیوتر مقصد خواهد بود.
با اجرای دستور فوق تمامی فایل‎های شاخه www  من به کامپیوتر webserver   با حفظ تمامی مجوز‎ها و اطلاعات، انتقال پیدا خواهد کرد.

 

 

بیشتر

با rsync آشنایی دارید؟
تا الان برای انتقال فایل یا راه حل‎های بک اپ گیری از چه روشی استفاده میکردید؟
اگر با rsync آشنایی دارید مطلب رو بخونید اگر کم و کاستی داشت ممنون میشم  اطلاع بدید تا نوشته تکمیل تر بشه و اگر آشنای ندارید  اگر سوالی داشتید خوشحال میشم کمک کنم به شما.
rsync چیست:
rsync برای انتقال فایل یا یکسان سازی (سینک کردن) در سیتسم‎های یونیکس استفاده میشه که با استفاده متد فشرده سازی zlib میتونه با کاهش حجم اقدام به انتفال فایل‎ها بکند.
موارد استفاده :
جهت انتقال فایل بین سرور یا یکسان سازیی فایل‎ها در سرورها یا پیاده سازی سیستم‎های بک اپ گیری منظم .
روش استفاده:
جهت استفاده از rsync باید در دو سرور مبدا و مقصد نصب باشه برای نصب در سنت او اس – فدورا و خانواده rpm:
yum install rsync
در سیستم عامل‎های debian base :
apt-get install rsync
چون rsync تحت ssh هست حتما پورت ssh روی دو سرور باز باشه که دچار مشکل نشید
در دستور rsync ما یک مبدا داریم و یک مقصد برای فایل‎ها شما میتونید دستور را هم در سرور مبدا و هم در سرور مقصد اجرا کنید که نتیجه یکسان خواهد بود در زیر چند نمونه مثال برای rsync   گفته میشه  دستوراتی در سرور مبدا و دستوراتی هم در سرور مقصد البته فراموش نکنید میتونید همین کار را در یک سرور هم انجام بدید مثلا جهت بک اپ گیری مستمر از فایل‎های جدید در‎هارد دیگر سرور که برای این نمونه هم مثالی گفته میشه
چند تا تنظیم برای rsync
با -v متوجه میشید الان دستور داره چه چیزایی رو منقل میکنه
با -a حالت ارشیو هست که اجازه میده owner‎ها و دسترسی‎ها
با -z فایل‎ها را کمپرس میکنید.
با -h خروجی‎ها رو طوری نشون میده که قابل خواندن باشه برای شما مثلا اعداد رو تبدیل میکنه
مثال اول: انتقال در یک سرور:
rsync -zvh backup.tar /tmp/backups/
فایل backup.tar را در فولدر/tmp/backups/ قرار میدهد اگر فولدر وجود نداشته باشد فولدر را ایجاد میکند
مثال دوم: کپی یا یکسان سازی پوشه‎ها در سیستم
rsync -avzh /root/rpmpkgs /tmp/backups/
محتویات پوشه /root/rpmpkgs را در پوشه /tmp/backupsکپی یا sync میکند.
مثال سوم: کپی از سرور به سرور دیگر
rsync -avz rpmpkgs/ [email protected]:/home/
محتویات پوشه rpmpkgs/را در سرور ۱۹۲٫۱۶۸٫۰٫۱۰۱ و در پوشهhome sync میکنید
مثال چهارم: کپی از سرور دیگر به سرور کنونی
rsync -avzh [email protected]:/home/tarunika/rpmpkgs /tmp/myrpms
محتویا پوشه /home/tarunika/rpmpkgs از سرور ۱۹۲٫۱۶۸٫۰٫۱۰۰ را به پوشه /tmp/myrpms همین سرور sync میکند

برای مطالعه http://linuxreview.ir/1390/09/backups-and-more-with-rsync/


 

2000-2016 CMS Fadak. ||| Version : 4.2-b1 ||| This page was produced in : 0.001 Seconds