rsync مخفف remote sync است. این برنامه کاربری در محیط سرور های لینوکس یا یوکنیکس جهت بک آپ گیری یک یا چند فایل ، یا یک یا چند دایرکتوری روی مسیری در Local یا یک مکان دیگر در Remote مورد استفاده قرار میگیرد.
مهمترین ویژگی های برنامه Rsync به شرح زیر است :
سرعت : در ابتدا برنامه Rsync یک کپی از کل محتوا از مبدا در مقصد ایجاد میکند. در مرحله بعد بلاک های تغییر یافته به مقصد کپی میشوند که این روش کارکرد باعث
امنیت : در هنگام انقال اطلاعات از کدگذاری پرتکل SSH استفاده میشود.
پهنای باند مصرفی کم : Rsync در هنگام ارسال و دریافت اطلاعات از فشرده سازی و باز کردن این فشرده سازی استفاده میکند بنابراین پهنای باند مصرفی شما در هنگام انتقال بهینه خواهد شد. بنابراین در این نوع انتقال نسبت به سایر روش های انتقال از پهنای باند کمتری استفاده میشود.
دسترسی : این برنامه به راحتی در محیط سرورهای مجازی یا سرورهای اختصاصی لینوکس قابل استفاده است و نیاز به تغییر سطح دسترسی خاصی نیست.
نحوه کلی استفاده از دستور rsync
دستور Rsync بصورت کلی با فرمت زیر استفاده میشود.
$ rsync options source destination
دقت فرمایید source یا destination هر دو میتوانند local یا remote باشند . در زمانی که از Remote استفاده میشود باید اطلاعات راجع به نام کاربری ، آدرس سرور مقصد و مکان ذخیره سازی مشخص شود.
1) هماهنگ سازی دو دایرکتوری از Local با استفاده از Rsync
مثال زیر را در نظر بگیرد :
$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list … done
sva.xml
svB.xml
.
sent 26385 bytes received 1098 bytes 54966.00 bytes/sec
total size is 44867 speedup is 1.63
در مثال فوق کپی از یک دایرکتوری در روی local به یک دایرکتوری دیگر روی همان سرور انجام میشود در مثال فوق از سه سوئیچ استفاده شده است که توضیحات آن به شرح زیر است :
z- : فهال سازی فشرده سازی
v- : نمایش شرح عملیات در هنگام اجرا
r- : انتقال بصورت تو در توی دایرکتوری های داخلی
پس از کپی به مسیر فایل ها مراجعه میکنیم و سپس زمان فایل ها ایجاد شده را بررسی میکنیم :
$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r–r–r– 1 bin bin 949 Jun 18 2009 /var/opt/installation/inventory/sva.xml
-r–r–r– 1 root bin 949 Sep 2 2009 /root/temp/sva.xml
همانطوری که در بالا مشاهده مشود زمان ایجاد فایل ها با زمان فایل های اولیه فرق میکند برای ان منظور مثال 2 را ببینید.
2) ثابت نگه داشتن زمان ایجاد فایل ها در طی انجام Rsync با دستور rsync -a
همانطوری که توضیح دادیم بدون استفاده از a- زمان ایجاد فایل از روی فایل برداشته نمیشود . سوئیچ a- کارهای زیر را انجام میدهد .
– کپی بصورت تو در تو رعایت میشود.
– لینک ها (Symbolic Link) حفظ میشود.
– سطخ دسترسی فایل ها (Permission) حفظ میشود.
– زمان فایل مقصد با همان فایل اولیه یکی است و حفظ میشود.
– مشخصات مالکیت شامل owner و group حفظ میشود.
برنامه را مجدداً بصورت زیر اجرا میکنیم :
$ rsync -azv /var/opt/installation/inventory/ /root/temp/
building file list … done
./
sva.xml
svB.xml
.
sent 26499 bytes received 1104 bytes 55206.00 bytes/sec
total size is 44867 speedup is 1.63
$
وقتی نتیجه خروجی را نگاه میکنیم زمان ایجاد فایل (TimeStamps) با زمان فایل اولیه مطابقت دارد :
$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r–r–r– 1 root bin 949 Jun 18 2009 /var/opt/installation/inventory/sva.xml
-r–r–r– 1 root bin 949 Jun 18 2009 /root/temp/sva.xml
3) هماهنگ سازی و کپی یک فایل با Rsycn
مثال زیر نمونه کپی از روی مبدا به مقصد را نشان میدهد :
$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeyssent 42 bytes received 12380 bytes 3549.14 bytes/sec
total size is 12288 speedup is 0.99
4) هماهنگ سازی و کپی فایلها از روی لوکال (Local) به مکانی در ریموت (Remote)
$ rsync -avz /root/temp/ irweb@64.16.193.81:/home/irwebhost/temp/
Password:
building file list … done
./
rpm/
rpm/Basenames
rpm/Conflictnamesent 15810261 bytes received 412 bytes 2432411.23 bytes/sec
total size is 45305958 speedup is 2.87
مقال فوق نحوه انتقال یک دایرکتوری به مقصدی خارج از سرور فعلی را نشان میدهد.
همانطوری که مثال فوق نشان میدهد در مقصد باید “نام کاربری” ، “آی پی سرور مقصد” و “مسیر کپی مقصد” با همان فرمت بالا مشخص شود. پس از ارسال دستور “رمز ورود” از شما سوال خواهد شد.
5) هماهنگ سازی و کپی فایلها از روی ریموت (Remote) به مکانی در لوکال (Local)
در صورتی که مایل باشید فایل ها و دایرکتوری ها را از سروری که در remote است به local کپی کنید باید دستوری مشابه مثال زیر را بکار بگیرید :
$ rsync -avz irweb@192.168.201.10:/var/lib/rpm /root/temp
Password:
receiving file list … done
rpm/
rpm/Basenames
.
sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87
rsycn مخفف remote sync است. این برنامه کاربری در محیط سرور های لینوکس یا یوکنیکس جهت بک آپ گیری یک یا چند فایل ، یا یک یا چند دایرکتوری روی مسیری در Local یا یک مکان دیگر در Remote مورد استفاده قرار میگیرد.
6) اتصال به SSH سرور remote جهت کپی بردای
دستور زیر نحوه ارتباط SSH به سرور Remote جهت کپی فایل ها را به لوکال نشان میدهد .
در این حالت rsync از SSH جهت کپی استفاده میکند.
$ rsync -avz -e ssh irweb@192.168.201.10:/var/lib/rpm /root/temp
Password:
receiving file list … done
rpm/
rpm/Basenamessent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87
7) بر روی فایل هایی که در مقصد تغییر کرده اند ( modified ) نوشته نشود
اختمالاً بصورت پیش فرض نمیخواهیم فایل هایی که در مقصد تغییر کرده اند را Overwrite کنیم و روی آنها بنویسیم . با سوئیچ u- به rsync دستور میدهیم که در صورتی که فایلی در مقصد تغییر کرده بود بر روی آن OverWrite انجام نشود.
مثال زیر این موضوع را نشان میدهد :
$ ls -l /root/temp/Basenames
total 39088
-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames$ rsync -avzu irweb@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list … done
rpm/sent 122 bytes received 505 bytes 114.00 bytes/sec
total size is 45305958 speedup is 72258.31$ ls -lrt
total 39088
-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames
8) هماهنگ سازی ساختار دایرکتوری ها بدون فایل ها
با استفاده از سوئیچ d- شما به rsync دستور میدهید که ساختار درختی دایرکتوری مبدا به مقصد منتقل شود . در مثال زیر ساختار دایرکتوری ها منهای فایل ها به مقصد منتقل میشود.
$ rsync -v -d irweb@192.168.200.10:/var/lib/ .
Password:
receiving file list … done
logrotate.status
CAM/
YaST2/
acpi/sent 240 bytes received 1830 bytes 318.46 bytes/sec
total size is 956 speedup is 0.46
9) مشاهده فرآیند بک آپ گیری و انتقال فایل ها در rsync با سوئیچ progress-
$ rsync -avz –progress irweb@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list …
19 files to consider
./
Basenames
5357568 100% 14.98MB/s 0:00:00 (xfer#1, to-check=17/19)
Conflictname
12288 100% 35.09kB/s 0:00:00 (xfer#2, to-check=16/19)
.
.
.
sent 406 bytes received 15810211 bytes 2108082.27 bytes/sec
total size is 45305958 speedup is 2.87
با استفاده از سوئیچ progress- فرآیند کپی فایل ها به مقصد با میزان درصد پیشرفت نمایش داده میشود.
10) حذف فایل ها در مقصد
تصور کنید فایلی در مقصد وجود داشته باشد اما در مبدا در حال حاضر چنین فایلی نباشد .شاید شما در این حالت بخواهید فایل موجود در مقصد نیز حذف گردد برای این منظور سوئیچ delete- استفاده کنید :
# Source and target are in sync. Now creating new file at the target.
$ > new-file.txt$ rsync -avz –delete thegeekstuff@192.168.200.10:/var/lib/rpm/ .
Password:
receiving file list … done
deleting new-file.txt
./sent 26 bytes received 390 bytes 48.94 bytes/sec
total size is 45305958 speedup is 108908.55
در مثال فوق در مقصد فایلی به نام new-file.txt موجود است که در صورت sync شدن مجدد با سوئیچ delete- آن فایل حذف میشود.
11) فایل جدید در مقصد ایجاد نشود
در صورتی که مایل هستید فایلهای موجود در مقصد فقط مورد هماهنگی با مبدا قرار گیرد و فایل جدید در صورت وجود در مبداً روی مقصد کپی نشود باید از سوئیچ existing– استفاده شود مطابق دستور زیر :
در مبداً این فایل جدید را ایجاد میکنیم :
[/var/lib/rpm ]$ > new-file.txt
سپس دستور rsync را با سوئیچ معرفی شده استفاده میکنیم :
$ rsync -avz –existing root@192.168.1.2:/var/lib/rpm/ .
root@192.168.1.2’s password:
receiving file list … done
./sent 26 bytes received 419 bytes 46.84 bytes/sec
total size is 88551424 speedup is 198991.96
در صورتی که خروجی را پس از اجرای rsync ملاحظه کنید فایل جدید به مقصد کپی نشده است.
12) مشاهده تغییرات بین مبدا و مقصد
فرض کنید در مبداً مسیری مطابق زیر وجود داشته باشد :
$ ls -l /var/lib/rpm
-rw-r–r– 1 root root 5357568 2010-06-24 08:57 Basenames
-rw-r–r– 1 root root 12288 2008-05-28 22:03 Conflictname
-rw-r–r– 1 root root 1179648 2010-06-24 08:57 Dirnames
و در مقصد فایل های زیر موجود باشد :
$ ls -l /root/temp
-rw-r–r– 1 root root 12288 May 28 2008 Conflictname
-rw-r–r– 1 bin bin 1179648 Jun 24 05:27 Dirnames
-rw-r–r– 1 root root 0 Sep 3 06:39 Basenames
در مثال فوق بین مبدا و مقصد دو تفاوت وجود دارد ، ابتدا مالکیت و گروه فایل Dirname و دوم سایز و حجم فایل Basenames
با استفاده از دستور زیر و استفاده از سوئیچ i- این تفاوت توسط دستور Rsync نمایش داده میشود :
$ rsync -avzi irweb@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list … done
>f.st…. Basenames
.f….og. Dirnamessent 48 bytes received 2182544 bytes 291012.27 bytes/sec
total size is 45305958 speedup is 20.76
در خروجی 9 حرف نمایش داده میشود که این اختلاف را نشان میدهد .
f : نشان دهند فایل بودن
s : نشان دهنده تفاوت در سایز و حجم فایلt : تفاوت در زمان ایجاد فایل
o : مالکیت یا owner تغییر یافته است .
g : گروه یا group مالکیت تغییر یافته است .
13) اضافه یا حذف کردن یک Pattern یا الگوی تعریف شده در هنگام انتقال
$ rsync -avz –include ‘P*’ –exclude ‘*’ thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list … done
./
Packages
Providename
Provideversion
Pubkeys
sent 129 bytes received 10286798 bytes 2285983.78 bytes/sec
total size is 32768000 speedup is 3.19
توضیح مثال بالا به خوبی میتواند نحوه به کارگیری یک pattern خاص را برای اضافه یا کم کردن در لیست کپی از طریق rsycn را مشخص نماید.
در مثال فوق با استفاده از از include کلیه فایلهایی که با حرف P شروع میشوند در عملیات کپی قرار میگیرند و همه فایلهای دیگر از لیست انتقال exclude میشوند.
14) فایل های با حجم بیشتر از مقدار تعیین شده منتقل نشوند.
در rsync یک سوئیچ به نام max-size تعبیه شده است که توسط آن میتوانید فایل هایی بزرگتر از مقدار max-size را از کپی خارج کنید :
$ rsync -avz –max-size=’150K’ irweb@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list … done
./
Conflictname
Group
Installtid
Name
Sha1header
Sigmd5
Triggernamesent 252 bytes received 123081 bytes 18974.31 bytes/sec
total size is 45305958 speedup is 367.35
در مثال فوق فایلهایی که حجم آنها بزرگتر از 150KB باشد منتقل نمیشوند و فقط فایلهایی با حجم کمتر یا مساوی 150K منتقل میشوند . شما میتوانید از M برای مگابایت و G برای گیگابایت در این سوئیچ rsync استفاده نمایید.
15) انتقال کلی فایل با استفاده از دستور rsync
rsync بصورت پیش فرض block های تغییر یافته را کپی میکند و کل فایل را منتقل نمیکند.
در صورتی که میخواهید کل فایل بصورت کامل منتقل شود و موضوع پهنای باند مصرفی در این میان مهم نیست میتوانید با استفاده از سوئیچ W- این انتقال را بصورت کامل برای یک فایل انجام دهید . دقت نمایید به دلیل عدم استفاده از Checksum برای انتقال فایل انتقال فایل ها تسریع میشود.
# rsync -avzW irweb@192.168.200.10:/var/lib/rpm/ /root/temp
Password:
receiving file list … done
./
Basenames
Conflictname
Dirnames
Filemd5s
Group
Installtid
Namesent 406 bytes received 15810211 bytes 2874657.64 bytes/sec
total size is 45305958 speedup is 2.87
ایران وب هاست ارائه کننده خدمات هاست و دامنه تاکنون به صدها شرکت را در ثبت بهترین نام ها و ارائه خدمات هاست مطلوب و مطمئن یاری کرده است. هاست اشتراکی لینوکس ، هاست اشتراکی ویندوز ، سرورهای مجازی ویندوز ، سرور مجازی لینوکس ، سرور های اختصاصی در ایران و سرورهای اختصاصی در خارج از ایران از جمله خدمات این شرکت پیشرو در خدمات هاست ایران میباشد.