কম্পিউটার টিউটোরিয়াল

লিনাক্স rsync মাস্টার করুন: কমান্ড, সিনট্যাক্স ও প্র্যাকটিক্যাল উদাহরণ - সম্পূর্ণ গাইড

rsync (remote synchronization) কমান্ড একটি ফাইল কপি টুল যা লোকাল স্টোরেজ ডিস্কের মাঝপথে এবং নেটওয়ার্কের ওপর ফাইল সিনক্রোনাইজ করতে পারে।

এটি জনপ্রিয় কারণ এটি খুব ভালো। এটি সাধারণত ফাইল ব্যাকআপ, ফাইল সার্ভারগুলোকে একে অপরের সাথে আপ-টু-ডেট রাখা, এবং ওয়েব অ্যাপের কোড ও অ্যাসেট সার্ভারে ডিপ্লয় করার জন্য ব্যবহৃত হয়।

rsync প্রায় সকল ফাইল কপি করতে পারে যা দেখতে পায় এবং ফাইল সাইজ ও মডিফিকেশন ডেটার ভিত্তিতে সিনক্রোনাইজ করে কী পরিবর্তন হয়েছে এবং কী আপডেট করতে হবে।

rsync কমান্ড খুব বড়, আমরা আপনাকে কিছু প্র্যাকটিক্যাল অ্যাপ্লিকেশন দিয়ে শুরু করব যা সবচেয়ে কমন ইউজেজ সিনেরিও কভার করবে।

সিনট্যাক্স

rsync OPTIONS SOURCE DESTINATION

নোট করুন:

  • OPTIONS হলো নিচের লিস্ট থেকে অপশন লিস্ট, স্পেস দিয়ে সেপারেটেড
  • SOURCE হলো সিনক্রোনাইজ করার ফাইল বা ফোল্ডারের সোর্স পথ এবং রিমোট হোস্টের ডিটেইলস অন্তর্ভুক্ত করতে পারে
  • DESTINATION হলো ফাইল বা ফোল্ডার সিনক্রোনাইজ করার ডেস্টিনেশন পথ এবং রিমোট হোস্টের ডিটেইলস অন্তর্ভুক্ত করতে পারে
  • 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 admin@wsxdn.com --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/ user@192.168.1.11:/path/at/destination/

নোট করুন:

  • username হলো রিমোট সিস্টেমের ইউজার
  • /path/to/source/ হলো লোকাল কম্পিউটারের সোর্স ডিরেক্টরির পথ
  • 192.168.1.11 হলো রিমোট সিস্টেমের IP অ্যাড্রেস - IP বা হোস্টনেম যেকোনো ব্যবহার করা যায়
  • /path/at/destination/ হলো রিমোট ফাইল সিস্টেমের পথ
  • সিনক্রোনাইজেশন rsync ডেমন দিয়ে হবে

SSH ব্যবহার করে লোকাল থেকে রিমোট (ডিরেক্টরি)

-e অপশন rsync-এ ব্যবহৃত প্রোটোকল স্পেসিফাই করতে দেয়, যাতে আমরা SSH দিয়ে সিকিউরলি ফাইল ট্রান্সফার স্পেসিফাই করতে পারি:

rsync -avzh -e ssh /path/to/source/ user@192.168.1.11:/path/at/destination/

রিমোট থেকে লোকাল (ডিরেক্টরি)

রিমোট কম্পিউটারের সোর্স ডিরেক্টরি থেকে লোকাল কম্পিউটারের ডেস্টিনেশনে নেটওয়ার্কের মাধ্যমে সকল ফাইল সিনক্রোনাইজ:

rsync -avzh user@192.168.1.11:/path/to/source /path/to/destination

নোট করুন:

  • username হলো রিমোট সিস্টেমের ইউজার
  • 192.168.1.11 হলো রিমোট সিস্টেমের IP অ্যাড্রেস - IP বা হোস্টনেম যেকোনো ব্যবহার করা যায়
  • /path/to/source হলো রিমোট ফাইল সিস্টেমের পথ
  • /path/to/destination হলো লোকাল কম্পিউটারের ডেস্টিনেশন
  • সিনক্রোনাইজেশন rsync ডেমন দিয়ে হবে

SSH ব্যবহার করে রিমোট থেকে লোকাল (ডিরেক্টরি)

rsync -avzh -e ssh user@192.168.1.11:/path/to/source /path/to/destination

সিঙ্গেল ফাইলও লোকাল থেকে রিমোট, রিমোট থেকে লোকাল, এবং SSH ব্যবহার করে সিনক্রোনাইজ করা যায়, ডিরেক্ট্রির মতোই

সিনক্রোনাইজ করার সময় বিবেচ্য অন্যান্য বিষয়

ব্যান্ডউইডথ বিবেচনা

আপনি যদি ইন্টারনেটের ওপর সিনক্রোনাইজ করেন, ব্যান্ডউইডথ লিমিট করতে চাইতে পারেন যাতে আপনার নেটওয়ার্কের অন্যান্য সার্ভিস স্লো না হয়:

rsync -avz --bwlimit 512 /path/to/source/ user@192.168.1.11:/path/at/destination/

ডিলিশন বিবেচনা

যদি সোর্সে ফাইল বা ফোল্ডার রিমুভ হয়েছে কিন্তু ডেস্টিনেশনে এক্সিস্ট করে, আপনি ডেস্টিনেশন থেকে সেটা ডিলিট করতে চাইতে পারেন যাতে এটি সোর্সের এক্সാക്ട মিরর হয়। এই অপশন ব্যবহার করার আগে নিশ্চিত হন আপনি ডিলিশন চান:

rsync -avz --delete /path/to/source/ user@192.168.1.11:/path/at/destination/

ফাইল ইনক্লুড বা এক্সক্লুড

ফাইল প্যাটার্ন ম্যাচ করে ইনক্লুড বা এক্সক্লুড করুন - যেসব ফাইল সিন্ক করতে না চান সেগুলো বাদ দিতে পারেন:

rsync -avz -e ssh --exclude '*' --include 'keep*' /path/to/source/ user@192.168.1.11:/path/at/destination/

এই rsync কমান্ড শুধু 'keep-' দিয়ে শুরু হওয়া ফাইল এবং ডিরেক্টরি সিন্ক করবে এবং অন্যান্য সব ফাইল/ডিরেক্টরি (*) এক্সক্লুড করবে।

ড্রাই রান বিবেচনা

এক ড্রাই রান ফাইলগুলো প্রিন্ট করবে যেগুলো পরিবর্তন হবে, কিন্তু আসলে কিছু করবে না - কোনো ফাইল সিনক্রোনাইজ বা অ্যাল্টার হবে না, তাই আপনি বিভিন্ন অপশন এক্সপেরিমেন্ট করে ইফেক্ট দেখতে পারেন:

rsync -avz --dry-run /path/to/source/ user@192.168.1.11:/path/at/destination/

উপসংহার

বড় সংখ্যক ফাইল সিস্টেমে সরানোর সময়, এন্টার কী চাপার আগে আপনার ইনপুট চেক করুন - আপনি রং দিক থেকে সিনক্রোনাইজ করে গুরুত্বপূর্ণ ফাইল রিমুভ করতে চান না!

লিনাক্স শেল কমান্ডের আরও আর্টিকেল চেক করুন!

  1. লিনাক্সে Find কমান্ড ব্যবহার করে ফাইল খুঁজে বের করার পদ্ধতি

  2. fd ব্যবহার করে লিনাক্স এবং macOS-এ ফাইল দ্রুত খুঁজুন

  3. এসেনশিয়াল লিনাক্স ls কমান্ড: ফাইল ও ডিরেক্টরি দ্রুত ও কার্যকরভাবে লিস্ট করুন

  4. Command Prompt Basic: ফাইল ও ফোল্ডার অপারেশন মাস্টার করুন