rsync (r emote সিঙ্ক্রোনাইজেশন ) কমান্ড হল একটি ফাইল কপি টুল যা স্থানীয় স্টোরেজ ডিস্কের পাশাপাশি একটি নেটওয়ার্কে ফাইলগুলিকে সিঙ্ক্রোনাইজ করতে পারে৷
এটি প্রচলিত কারণ এটি খুব ভাল। এটি সাধারণত ফাইলগুলি ব্যাক আপ করার জন্য, ফাইল সার্ভারগুলি একে অপরের সাথে আপ-টু-ডেট রাখার জন্য এবং সার্ভারগুলিতে ওয়েব অ্যাপগুলির জন্য কোড এবং সম্পদ স্থাপনের জন্য ব্যবহৃত হয়৷
rsync কি পরিবর্তিত হয়েছে এবং কি আপডেট করা দরকার তা দেখতে ফাইলের আকার এবং পরিবর্তনের তারিখের উপর ভিত্তি করে এটি দেখতে পারে এমন প্রায় প্রতিটি ফাইল কপি করতে পারে এবং কপি করবে৷
rsync কমান্ডটি বড়, এবং আমরা আপনাকে কিছু ব্যবহারিক অ্যাপ্লিকেশন দিয়ে শুরু করব যা এই নির্দেশিকায় সবচেয়ে সাধারণ ব্যবহারের পরিস্থিতিগুলি কভার করবে .
সিনট্যাক্স
rsync OPTIONS SOURCE DESTINATION
মনে রাখবেন:
- বিকল্পগুলি হল নীচের তালিকা থেকে বিকল্পগুলির একটি তালিকা, একটি স্থান দ্বারা পৃথক করা হয়েছে
- সোর্স হল সিঙ্ক্রোনাইজ করার জন্য ফাইল বা ফোল্ডারের উৎসের পথ এবং এটি একটি দূরবর্তী হোস্টের বিবরণ অন্তর্ভুক্ত করতে পারে
- গন্তব্য হল গন্তব্যের পথ যা আপনি ফাইল বা ফোল্ডারটিকে সিঙ্ক্রোনাইজ করতে চান এবং একটি দূরবর্তী হোস্টের বিবরণ অন্তর্ভুক্ত করতে পারেন
- উৎস এবং গন্তব্য ক্রমানুসারে থাকতে হবে!
বিকল্পগুলি
এখানে rsync এর জন্য সাধারণত ব্যবহৃত বিকল্পগুলি রয়েছে৷ , সরাসরি ম্যানুয়াল থেকে:
কি কপি করবেন:
-r, --recursive Recurse into directories -R, --relative Use relative path names --exclude=PATTERN Exclude files matching PATTERN --exclude-from=FILE Read exclude patterns from FILE -I, --ignore-times Don't exclude files that match length and time --size-only Only use file size when determining if a file should be transferred [email protected] --modify-window=NUM Timestamp window (seconds) for file match (default=0) --include=PATTERN Don't exclude files matching PATTERN --include-from=FILE Read include patterns from FILE
কিভাবে কপি করবেন:
-n, --dry-run Perform a trial run with no changes made -l, --links Copy symlinks as symlinks -L, --copy-links Transform symlink into referent file/dir --copy-unsafe-links Only "unsafe" symlinks are transformed --safe-links Ignore links outside the destination tree --munge-links Munge symlinks to make them safer -H, --hard-links Preserve hard links --devices Preserve device files (super-user only) --specials Preserve special files -D, --devices --specials Preserve devices (super-user only) +files -g, --group Preserve group -o, --owner Preserve owner (super-user only) -p, --perms Preserve permissions --remove-source-files Sender removes synchronized files (non-dir) -t, --times Preserve times -S, --sparse Handle sparse files efficiently -x, --one-file-system Don't cross filesystem boundaries -B, --block-size=SIZE Force a fixed checksum block-size (default 700) -e, --rsh=COMMAND Specify rsh replacement --rsync-path=PATH Specify path to rsync on the remote machine --numeric-ids Don't map uid/gid values by user/group name --timeout=SECONDS Set IO timeout in seconds -W, --whole-file Copy whole files, no incremental checks
গন্তব্য বিকল্প:
-a, --archive Archive mode equals -rlptgoD (no -H,-A,-X) -b, --backup Make backups (see --suffix & --backup-dir) --backup-dir=DIR Make backups into this directory -z, --compress Compress file data during the transfer -c, --checksum Skip based on checksum, not mod-time & size -C, --cvs-exclude Auto ignore files in the same way CVS does --existing Only update files that already exist --delete Delete files that don't exist on the sending side --delete-excluded Also delete excluded files on the receiving side --delete-after Receiver deletes after transfer, not during --force Force deletion of directories even if not empty --ignore-errors Delete even if there are IO errors --max-delete=NUM Don't delete more than NUM files --log-file-format=FMT Log file transfers using specified format --partial Keep partially transferred files --progress Show progress during transfer -P Equivalent to --partial --progress --stats Give some file transfer stats -T --temp-dir=DIR Create temporary files in directory DIR --compare-dest=DIR Also compare destination files relative to DIR -u, --update Update only (don't overwrite newer files)
বিবিধ বিকল্প:
--address=ADDRESS Bind to the specified address --blocking-io Use blocking IO for the remote shell --bwlimit=KBPS Limit I/O bandwidth, KBytes per second --config=FILE Specify alternate rsyncd.conf file (daemon) --daemon Run as a rsync daemon --no-detach Do not detach from the parent (daemon) --password-file=FILE Get daemon-access password from FILE --port=PORT Specify alternate rsyncd port number -f, --read-batch=FILE Read batch file -F, --write-batch=FILE Write batch file --version Print version number -v, --verbose Increase verbosity -q, --quiet Decrease verbosity -4, --ipv4 Prefer IPv4 -6, --ipv6 Prefer IPv6 -h, --help Show this help screen
বিকল্পগুলির সম্পূর্ণ তালিকার জন্য, rsync-এর সাথে পরামর্শ করুন চালানোর মাধ্যমে ব্যবহারকারীর ম্যানুয়াল:
man rsync
উদাহরণ
নীচের প্রতিটি বিকল্পের অর্থ কী তা আমি পুনরাবৃত্তি করব না - বিকল্পের অর্থ কী তা আপনি নিশ্চিত না হলে উপরের তালিকায় ফিরে যান তা নিশ্চিত করুন - আপনি ভুল কমান্ড চালাতে চান না এবং কোনো ডেটা হারাতে চান না!
স্থানীয় থেকে স্থানীয় (একক ফাইল)
এখানে rsync ব্যবহার করে স্থানীয় মেশিনে একটি ডিরেক্টরি থেকে অন্য ডিরেক্টরিতে কীভাবে একটি একক ফাইল সিঙ্ক্রোনাইজ করা যায় তা এখানে রয়েছে :
rsync -zvh /path/to/my-file.tar /path/to/destination/
এখান থেকে, সমস্ত উদাহরণগুলি ডিরেক্টরি সিঙ্ক করার উপর ফোকাস করবে, কারণ এটি rsync-এর জন্য সবচেয়ে সাধারণ ব্যবহারের দৃশ্য
স্থানীয় থেকে স্থানীয় (ডিরেক্টরি)
একই মেশিনে একটি ডিরেক্টরি থেকে অন্য ডিরেক্টরিতে সমস্ত ফাইল সিঙ্ক্রোনাইজ করুন:
rsync -avzh /path/to/source /path/to/destination
-avzh জিনিসটা কী? এটি একগুচ্ছ বিকল্প, মার্জ করা হয়েছে। এটি -a -v -z -h টাইপ করার একটি দ্রুত উপায়
স্থানীয় থেকে দূরবর্তী (ডিরেক্টরি)
একটি নেটওয়ার্কের মাধ্যমে একটি দূরবর্তী কম্পিউটারে একটি স্থানীয় উত্স ডিরেক্টরি থেকে একটি গন্তব্যে সমস্ত ফাইল সিঙ্ক্রোনাইজ করুন:
rsync -avz /path/to/source/ [email protected]:/path/at/destination/
মনে রাখবেন:
- ব্যবহারকারীর নাম রিমোট সিস্টেমের ব্যবহারকারী
- /path/to/source/ স্থানীয় কম্পিউটারে উৎস ডিরেক্টরির পথ
- 192.168.1.11 দূরবর্তী সিস্টেমের IP ঠিকানা - আপনি একটি IP ঠিকানা বা হোস্টনাম ব্যবহার করতে পারেন
- /path/at/destination/ দূরবর্তী ফাইল সিস্টেমের পথ
- সিঙ্ক্রোনাইজেশন rsync ব্যবহার করে ঘটবে ডেমন
SSH (ডিরেক্টরি) ব্যবহার করে দূরবর্তী থেকে স্থানীয়
-e বিকল্প আপনাকে rsync, দ্বারা ব্যবহৃত প্রোটোকল নির্দিষ্ট করতে দেয় আমরা SSH ব্যবহার করে নিরাপদে ফাইল স্থানান্তর করতে চাই তা নির্দিষ্ট করার অনুমতি দেয়:
rsync -avzh -e ssh /path/to/source/ [email protected]:/path/at/destination/
স্থানীয় থেকে দূরবর্তী (ডিরেক্টরি)
একটি দূরবর্তী কম্পিউটারে একটি উত্স ডিরেক্টরি থেকে একটি নেটওয়ার্কের মাধ্যমে স্থানীয় কম্পিউটারে একটি গন্তব্যে সমস্ত ফাইল সিঙ্ক্রোনাইজ করুন:
rsync -avzh [email protected]:/path/to/source /path/to/destination
মনে রাখবেন:
- ব্যবহারকারীর নাম রিমোট সিস্টেমের ব্যবহারকারী
- 192.168.1.11 দূরবর্তী সিস্টেমের IP ঠিকানা - আপনি একটি IP ঠিকানা বা হোস্টনাম ব্যবহার করতে পারেন
- /path/to/source দূরবর্তী ফাইল সিস্টেমের পথ
- /path/to/destination স্থানীয় কম্পিউটারে গন্তব্য
- সিঙ্ক্রোনাইজেশন rsync ব্যবহার করে ঘটবে ডেমন
SSH (ডিরেক্টরি) ব্যবহার করে দূরবর্তী থেকে স্থানীয়
rsync -avzh -e ssh [email protected]:/path/to/source /path/to/destination
আপনি স্থানীয় থেকে দূরবর্তী, দূরবর্তী থেকে স্থানীয় এবং SSH ব্যবহার করে একক ফাইল সিঙ্ক করতে পারেন, যেমনটি আমরা ডিরেক্টরিগুলির সাথে দেখিয়েছি
সিঙ্ক্রোনাইজ করার সময় বিবেচনা করার অন্যান্য বিষয়গুলি
ব্যান্ডউইথ বিবেচনা করুন
আপনি যদি ইন্টারনেটে সিঙ্ক্রোনাইজ করে থাকেন, তাহলে আপনি ব্যবহার করা ব্যান্ডউইথ সীমিত করতে চাইতে পারেন যাতে আপনি আপনার নেটওয়ার্কে অন্যান্য পরিষেবাগুলিকে ধীর করে না দেন:
rsync -avz --bwlimit 512 /path/to/source/ [email protected]:/path/at/destination/
মোছার কথা বিবেচনা করুন
যদি একটি ফাইল বা ফোল্ডার উৎস থেকে সরানো হয় কিন্তু গন্তব্যস্থলে বিদ্যমান থাকে, তাহলে আপনি গন্তব্যে ফাইল বা ফোল্ডারটি মুছে দিতে চাইতে পারেন যাতে এটি উৎসের একটি সঠিক মিরর হয়। সর্বদা নিশ্চিত করুন যে আপনি নিশ্চিত যে আপনি এই বিকল্পটি ব্যবহার করার আগে জিনিসগুলি মুছে ফেলতে চান:
rsync -avz --delete /path/to/source/ [email protected]:/path/at/destination/
ফাইলগুলি অন্তর্ভুক্ত বা বাদ দেওয়া
ফাইল প্যাটার্নগুলি মিলিয়ে ফাইলগুলি অন্তর্ভুক্ত করুন এবং বাদ দিন - যদি এমন ফাইল থাকে যেগুলি আপনি সিঙ্ক করতে চান না, সেগুলি বাদ দেওয়া যেতে পারে:
rsync -avz -e ssh --exclude '*' --include 'keep*' /path/to/source/ [email protected]:/path/at/destination/
এই rsync কমান্ডটি শুধুমাত্র ফাইল এবং ডিরেক্টরিগুলিকে সিঙ্ক করবে, যা 'keep-' দিয়ে শুরু হয় এবং অন্যান্য সমস্ত ফাইল এবং ডিরেক্টরি (*) বাদ দেয়।
একটি ড্রাই রান বিবেচনা করুন
একটি ড্রাই রান যে ফাইলগুলি পরিবর্তন করা হবে তা প্রিন্ট আউট করবে, কিন্তু এটি আসলে করবে কিছু - কোন ফাইল সিঙ্ক্রোনাইজ বা পরিবর্তন করা হবে না, তাই আপনি বিভিন্ন বিকল্পের সাথে পরীক্ষা করতে পারেন এবং প্রভাব দেখতে পারেন:
rsync -avz --dry-run /path/to/source/ [email protected]:/path/at/destination/
উপসংহার
আপনার সিস্টেমে প্রচুর সংখ্যক ফাইল সরানোর সময়, এন্টার কী চাপার আগে আপনি আপনার ইনপুট চেক করেছেন তা নিশ্চিত করুন – আপনি ভুল দিকে সিঙ্ক্রোনাইজ করতে চান না এবং গুরুত্বপূর্ণ ফাইলগুলি সরাতে চান না!
লিনাক্স শেল কমান্ডের জন্য আমাদের অন্যান্য নিবন্ধগুলি দেখুন!