rsync মানে রিমোট সিঙ্ক।
RSync ইউনিক্স/লিনাক্সে ব্যাকআপ অপারেশন করতে ব্যবহৃত হয়।
rsync ইউটিলিটি একটি কার্যকর উপায়ে ফাইল এবং ডিরেক্টরিগুলিকে এক অবস্থান থেকে অন্য স্থানে সিঙ্ক্রোনাইজ করতে ব্যবহৃত হয়। ব্যাকআপ অবস্থান স্থানীয় সার্ভারে বা দূরবর্তী সার্ভারে হতে পারে।
rsync-এর গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি
- গতি :প্রথমবার, rsync উৎস এবং গন্তব্য ডিরেক্টরির মধ্যে সমগ্র বিষয়বস্তুর প্রতিলিপি করে। পরের বার, rsync শুধুমাত্র পরিবর্তিত ব্লক বা বাইটগুলিকে গন্তব্য স্থানে স্থানান্তর করে, যা স্থানান্তরকে সত্যিই দ্রুত করে তোলে।
- নিরাপত্তা :rsync স্থানান্তরের সময় ssh প্রোটোকল ব্যবহার করে ডেটা এনক্রিপশনের অনুমতি দেয়।
- কম ব্যান্ডউইথ :rsync পাঠানো এবং গ্রহণ শেষে যথাক্রমে ব্লক দ্বারা ডেটা ব্লকের কম্প্রেশন এবং ডিকম্প্রেশন ব্যবহার করে। সুতরাং rsync দ্বারা ব্যবহৃত ব্যান্ডউইথ অন্যান্য ফাইল স্থানান্তর প্রোটোকলের তুলনায় সর্বদা কম হবে৷
- সুবিধাগুলি৷ :rsync ইন্সটল এবং এক্সিকিউট করার জন্য কোন বিশেষ সুবিধার প্রয়োজন নেই
সিনট্যাক্স
$ rsync options source destination
উত্স এবং গন্তব্য স্থানীয় বা দূরবর্তী হতে পারে। রিমোটের ক্ষেত্রে, লগইন নাম, রিমোট সার্ভারের নাম এবং অবস্থান উল্লেখ করুন।
উদাহরণ 1. একটি স্থানীয় সার্ভারে দুটি ডিরেক্টরি সিঙ্ক্রোনাইজ করুন
একটি স্থানীয় কম্পিউটারে দুটি ডিরেক্টরি সিঙ্ক করতে, নিম্নলিখিত rsync -zvr কমান্ডটি ব্যবহার করুন৷
৷$ 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 $
উপরের rsync উদাহরণে:
- -z হল কম্প্রেশন সক্রিয় করা
- -v ভার্বোস
- -r পুনরাবৃত্তিমূলক নির্দেশ করে
এখন সোর্স থেকে গন্তব্যে কপি করা ফাইলগুলির একটিতে টাইমস্ট্যাম্প দেখা যাক। আপনি নীচে দেখতে পাচ্ছেন, সিঙ্কের সময় rsync টাইমস্ট্যাম্প সংরক্ষণ করেনি৷
৷$ 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. rsync -a ব্যবহার করে সিঙ্কের সময় টাইমস্ট্যাম্প সংরক্ষণ করুন
rsync বিকল্প -a আর্কাইভ মোড নির্দেশ করে। -একটি বিকল্প নিম্নলিখিত কাজ করে,
- পুনরাবৃত্ত মোড
- সিম্বলিক লিঙ্কগুলি সংরক্ষণ করে
- অনুমতি সংরক্ষণ করে
- টাইমস্ট্যাম্প সংরক্ষণ করে
- মালিক এবং গোষ্ঠী সংরক্ষণ করে
এখন, উদাহরণ 1-এ দেওয়া একই কমান্ড চালানো হচ্ছে (কিন্তু rsync বিকল্প -a সহ) নীচে দেখানো হয়েছে:
$ 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 $
আপনি নীচে দেখতে পাচ্ছেন, সিঙ্কের সময় rsync সংরক্ষিত টাইমস্ট্যাম্প।
$ 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. শুধুমাত্র একটি ফাইল সিঙ্ক্রোনাইজ করুন
শুধুমাত্র একটি ফাইল অনুলিপি করতে, নিচে দেখানো হিসাবে, rsync কমান্ডে ফাইলের নাম উল্লেখ করুন।
$ 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. স্থানীয় থেকে দূরবর্তী ফাইলগুলি সিঙ্ক্রোনাইজ করুন
rsync আপনাকে স্থানীয় এবং দূরবর্তী সিস্টেমের মধ্যে ফাইল/ডিরেক্টরি সিঙ্ক্রোনাইজ করতে দেয়।
$ rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/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
রিমোট সার্ভারের সাথে সিঙ্ক্রোনাইজেশন করার সময়, আপনাকে রিমোট সার্ভারের ব্যবহারকারীর নাম এবং আইপি-ঠিকানা নির্দিষ্ট করতে হবে। আপনার রিমোট সার্ভারে গন্তব্য ডিরেক্টরিও উল্লেখ করা উচিত। বিন্যাস হল username@machinename:path
আপনি উপরে দেখেছেন, স্থানীয় থেকে দূরবর্তী সার্ভারে rsync করার সময় এটি পাসওয়ার্ডের জন্য জিজ্ঞাসা করে।
কখনও কখনও আপনি স্থানীয় থেকে দূরবর্তী সার্ভারে ফাইল ব্যাক আপ করার সময় পাসওয়ার্ড লিখতে চান না। উদাহরণস্বরূপ, আপনার যদি একটি ব্যাকআপ শেল স্ক্রিপ্ট থাকে, যা rsync ব্যবহার করে স্থানীয় থেকে দূরবর্তী সার্ভারে ফাইলগুলি অনুলিপি করে, আপনার পাসওয়ার্ড প্রবেশ না করেই rsync করার ক্ষমতা প্রয়োজন৷
এটি করার জন্য, ssh পাসওয়ার্ড কম লগইন সেটআপ করুন যেমন আমরা আগে ব্যাখ্যা করেছি।
উদাহরণ 5. দূরবর্তী থেকে স্থানীয় ফাইলগুলি সিঙ্ক্রোনাইজ করুন
আপনি যখন দূরবর্তী থেকে স্থানীয় ফাইলগুলিকে সিঙ্ক্রোনাইজ করতে চান, তখন উৎসে দূরবর্তী পথ এবং লক্ষ্যে স্থানীয় পথটি নীচে দেখানো হিসাবে নির্দিষ্ট করুন৷
$ rsync -avz thegeekstuff@192.168.200.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
উদাহরণ 6. সিঙ্ক্রোনাইজেশনের জন্য রিমোট শেল
rsync আপনাকে রিমোট শেল নির্দিষ্ট করতে দেয় যা আপনি ব্যবহার করতে চান। আপনি সুরক্ষিত দূরবর্তী সংযোগ সক্ষম করতে rsync ssh ব্যবহার করতে পারেন।
কোন দূরবর্তী শেল ব্যবহার করতে হবে তা নির্দিষ্ট করতে rsync -e ssh ব্যবহার করুন। এই ক্ষেত্রে, rsync ssh ব্যবহার করবে।
$ rsync -avz -e ssh thegeekstuff@192.168.200.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. গন্তব্যে পরিবর্তিত ফাইলগুলি ওভাররাইট করবেন না
একটি সাধারণ সিঙ্ক পরিস্থিতিতে, যদি একটি ফাইল গন্তব্যে পরিবর্তন করা হয়, তাহলে আমরা উত্স থেকে পুরানো ফাইলের সাথে ফাইলটি ওভাররাইট করতে চাই না৷
ঠিক এটি করতে rsync -u বিকল্পটি ব্যবহার করুন। (অর্থাৎ গন্তব্যে একটি ফাইল ওভাররাইট করবেন না, যদি এটি পরিবর্তন করা হয়)। নিম্নলিখিত উদাহরণে, বেসেনামস নামক ফাইলটি ইতিমধ্যেই গন্তব্যে পরিবর্তিত হয়েছে। সুতরাং, এটি rsync -u দিয়ে ওভাররাইট করা হবে না।
$ ls -l /root/temp/Basenames total 39088 -rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames $ rsync -avzu thegeekstuff@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. শুধুমাত্র ডিরেক্টরি ট্রি স্ট্রাকচার সিঙ্ক্রোনাইজ করুন (ফাইলগুলি নয়)
উৎস থেকে গন্তব্যে শুধুমাত্র ডিরেক্টরি ট্রি সিঙ্ক্রোনাইজ করতে rsync -d বিকল্প ব্যবহার করুন। নীচের উদাহরণে, শুধুমাত্র ডিরেক্টরি ট্রি পুনরাবৃত্ত পদ্ধতিতে সিঙ্ক্রোনাইজ করুন, ডিরেক্টরির ফাইলগুলি নয়৷
$ rsync -v -d thegeekstuff@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 অগ্রগতি দেখুন
আপনি যখন ব্যাকআপের জন্য rsync ব্যবহার করেন, তখন আপনি ব্যাকআপের অগ্রগতি জানতে চাইতে পারেন। অর্থাৎ কয়টি ফাইল কপি, কি হারে ফাইলটি কপি হচ্ছে ইত্যাদি।
rsync -প্রগ্রেস বিকল্পটি নীচে দেখানো হিসাবে rsync এক্সিকিউশনের বিস্তারিত অগ্রগতি প্রদর্শন করে।
$ rsync -avz --progress thegeekstuff@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
আপনি স্থানীয় লিনাক্স সার্ভার বা রিমোট লিনাক্স সার্ভার ব্যাকআপ করতে rsnapshot ইউটিলিটি (যা rsync ব্যবহার করে) ব্যবহার করতে পারেন৷
উদাহরণ 10. লক্ষ্যে তৈরি করা ফাইলগুলি মুছুন
যদি একটি ফাইল উৎসে উপস্থিত না থাকে, কিন্তু লক্ষ্যে উপস্থিত থাকে, তাহলে আপনি rsync এর সময় টার্গেটে ফাইলটি মুছে দিতে চাইতে পারেন।
সেক্ষেত্রে নিচের মত করে -delete অপশন ব্যবহার করুন। rsync ডিলিট অপশন সোর্স ডিরেক্টরিতে নেই এমন ফাইল মুছে দেয়।
# 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 নামে একটি নতুন ফাইল রয়েছে, যখন –delete বিকল্পের সাথে সোর্সের সাথে সিঙ্ক্রোনাইজ করা হয়, এটি new-file.txt
ফাইলটি সরিয়ে দেয়।উদাহরণ 11. লক্ষ্যে নতুন ফাইল তৈরি করবেন না
আপনি যদি চান, আপনি লক্ষ্যে শুধুমাত্র বিদ্যমান ফাইল আপডেট (সিঙ্ক) করতে পারেন। যদি উৎসে নতুন ফাইল থাকে, যা লক্ষ্যে নেই, আপনি লক্ষ্যে এই নতুন ফাইলগুলি তৈরি করা এড়াতে পারেন। আপনি যদি এই বৈশিষ্ট্যটি চান তবে rsync কমান্ডের সাথে – বিদ্যমান বিকল্পটি ব্যবহার করুন।
প্রথমে, উৎসে একটি new-file.txt যোগ করুন।
[/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
আপনি যদি উপরের আউটপুটটি দেখতে পান, তাহলে এটি নতুন ফাইল new-file.txt
পায়নিউদাহরণ 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 আলাদা। এরপরে, ফাইলের বেসনামের জন্য আকার আলাদা।
এখন দেখা যাক কিভাবে rsync এই পার্থক্য প্রদর্শন করে। -i বিকল্প আইটেম পরিবর্তন প্রদর্শন করে।
$ rsync -avzi thegeekstuff@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টি অক্ষর প্রদর্শন করে যা পরিবর্তনগুলি নির্দেশ করে৷
আমাদের উদাহরণে, Basenames (এবং Dirnames) এর সামনের অক্ষরগুলি নিম্নলিখিতটি বলে:
> specifies that a file is being transferred to the local host. f represents that it is a file. s represents size changes are there. t represents timestamp changes are there. o owner changed g group changed.
উদাহরণ 13. ফাইল স্থানান্তরের সময় প্যাটার্ন অন্তর্ভুক্ত করুন এবং বাদ দিন
rsync আপনাকে সিঙ্ক্রোনাইজেশন করার সময় ফাইল বা ডিরেক্টরিগুলি অন্তর্ভুক্ত করতে এবং বাদ দিতে চান এমন প্যাটার্ন দেওয়ার অনুমতি দেয়৷
$ 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
উপরের উদাহরণে, এটি শুধুমাত্র 'P' দিয়ে শুরু হওয়া ফাইল বা ডিরেক্টরি অন্তর্ভুক্ত করে (rsync অন্তর্ভুক্ত ব্যবহার করে) এবং অন্য সব ফাইল বাদ দেয়। (rsync ব্যবহার করে '*' বাদ দিন)
উদাহরণ 14. বড় ফাইল স্থানান্তর করবেন না
আপনি rsync কে বলতে পারেন rsync –max-size বিকল্প ব্যবহার করে নির্দিষ্ট আকারের চেয়ে বড় ফাইল স্থানান্তর না করতে।
$ rsync -avz --max-size='100K' thegeekstuff@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
max-size=100K শুধুমাত্র 100K এর চেয়ে কম বা সমান ফাইল স্থানান্তর করতে rsync করে। আপনি মেগাবাইটের জন্য M এবং গিগাবাইটের জন্য G নির্দেশ করতে পারেন।
উদাহরণ 15. সম্পূর্ণ ফাইল স্থানান্তর করুন
rsync-এর একটি প্রধান বৈশিষ্ট্য হল এটি সম্পূর্ণ ফাইল পাঠানোর পরিবর্তে শুধুমাত্র পরিবর্তিত ব্লকটিকে গন্তব্যে স্থানান্তর করে।
যদি নেটওয়ার্ক ব্যান্ডউইথ আপনার জন্য একটি সমস্যা না হয় (কিন্তু CPU হয়), আপনি rsync -W বিকল্প ব্যবহার করে পুরো ফাইলটি স্থানান্তর করতে পারেন। এটি rsync প্রক্রিয়াটিকে ত্বরান্বিত করবে, কারণ এটিকে উত্স এবং গন্তব্যে চেকসাম সম্পাদন করতে হবে না৷
# rsync -avzW thegeekstuff@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
অতিরিক্ত rsync টিউটোরিয়াল
- কিভাবে ইউনিক্স/লিনাক্সে (পাসওয়ার্ড ছাড়া rsync) SSH এর সাথে Rsync সেটআপ করবেন
- এক্সক্লুড-ফ্রম ব্যবহার করে একাধিক ফাইল এবং ডিরেক্টরি বাদ দেওয়ার জন্য 6 rsync উদাহরণ