استفاده از rsync برای بک آپ گیری با 15 مثال کاربردی (دریافت پیوندک)

نوشته شده در تاریخ: 15/09/93 | نویسنده:هادی شهیدی

نحوه استفاده از rsync

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/
Pubkeys

sent 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/Conflictname

sent 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/Basenames

sent 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. Dirnames

sent 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
Triggername

sent 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
Name

sent 406 bytes  received 15810211 bytes  2874657.64 bytes/sec
total size is 45305958  speedup is 2.87

ایران وب هاست ارائه کننده خدمات هاست و دامنه تاکنون به صدها شرکت را در ثبت بهترین نام ها و ارائه خدمات هاست مطلوب و مطمئن یاری کرده است. هاست اشتراکی لینوکس ، هاست اشتراکی ویندوز ، سرورهای مجازی ویندوز ، سرور مجازی لینوکس ، سرور های اختصاصی در ایران و سرورهای اختصاصی در خارج از ایران از جمله خدمات این شرکت پیشرو در خدمات هاست ایران میباشد.