কম্পিউটার

লিনাক্স rsync কমান্ড, সিনট্যাক্স এবং উদাহরণ [গাইড]

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
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/ admin@wsxdn.com:/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/ admin@wsxdn.com:/path/at/destination/

স্থানীয় থেকে দূরবর্তী (ডিরেক্টরি)

একটি দূরবর্তী কম্পিউটারে একটি উত্স ডিরেক্টরি থেকে একটি নেটওয়ার্কের মাধ্যমে স্থানীয় কম্পিউটারে একটি গন্তব্যে সমস্ত ফাইল সিঙ্ক্রোনাইজ করুন:

rsync -avzh admin@wsxdn.com:/path/to/source /path/to/destination

মনে রাখবেন:

  • ব্যবহারকারীর নাম রিমোট সিস্টেমের ব্যবহারকারী
  • 192.168.1.11 দূরবর্তী সিস্টেমের IP ঠিকানা - আপনি একটি IP ঠিকানা বা হোস্টনাম ব্যবহার করতে পারেন
  • /path/to/source দূরবর্তী ফাইল সিস্টেমের পথ
  • /path/to/destination স্থানীয় কম্পিউটারে গন্তব্য
  • সিঙ্ক্রোনাইজেশন rsync ব্যবহার করে ঘটবে ডেমন

SSH (ডিরেক্টরি) ব্যবহার করে দূরবর্তী থেকে স্থানীয়

rsync -avzh -e ssh admin@wsxdn.com:/path/to/source /path/to/destination

আপনি স্থানীয় থেকে দূরবর্তী, দূরবর্তী থেকে স্থানীয় এবং SSH ব্যবহার করে একক ফাইল সিঙ্ক করতে পারেন, যেমনটি আমরা ডিরেক্টরিগুলির সাথে দেখিয়েছি

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

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

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

rsync -avz --bwlimit 512 /path/to/source/ admin@wsxdn.com:/path/at/destination/

মোছার কথা বিবেচনা করুন

যদি একটি ফাইল বা ফোল্ডার উৎস থেকে সরানো হয় কিন্তু গন্তব্যস্থলে বিদ্যমান থাকে, তাহলে আপনি গন্তব্যে ফাইল বা ফোল্ডারটি মুছে দিতে চাইতে পারেন যাতে এটি উৎসের একটি সঠিক মিরর হয়। সর্বদা নিশ্চিত করুন যে আপনি নিশ্চিত যে আপনি এই বিকল্পটি ব্যবহার করার আগে জিনিসগুলি মুছে ফেলতে চান:

rsync -avz --delete /path/to/source/ admin@wsxdn.com:/path/at/destination/

ফাইলগুলি অন্তর্ভুক্ত বা বাদ দেওয়া

ফাইল প্যাটার্নগুলি মিলিয়ে ফাইলগুলি অন্তর্ভুক্ত করুন এবং বাদ দিন - যদি এমন ফাইল থাকে যেগুলি আপনি সিঙ্ক করতে চান না, সেগুলি বাদ দেওয়া যেতে পারে:

rsync -avz -e ssh --exclude '*' --include 'keep*' /path/to/source/ admin@wsxdn.com:/path/at/destination/

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

একটি ড্রাই রান বিবেচনা করুন

একটি ড্রাই রান যে ফাইলগুলি পরিবর্তন করা হবে তা প্রিন্ট আউট করবে, কিন্তু এটি আসলে করবে কিছু - কোন ফাইল সিঙ্ক্রোনাইজ বা পরিবর্তন করা হবে না, তাই আপনি বিভিন্ন বিকল্পের সাথে পরীক্ষা করতে পারেন এবং প্রভাব দেখতে পারেন:

rsync -avz --dry-run /path/to/source/ admin@wsxdn.com:/path/at/destination/

উপসংহার

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

লিনাক্স শেল কমান্ডের জন্য আমাদের অন্যান্য নিবন্ধগুলি দেখুন!


  1. ফাইন্ড কমান্ড ব্যবহার করে লিনাক্সে একটি ফাইল কীভাবে সন্ধান করবেন

  2. লিনাক্স এবং ম্যাকোসে ফাইলগুলি দ্রুত খুঁজে পেতে fd কীভাবে ব্যবহার করবেন

  3. লিনাক্সে ফাইল এবং ডিরেক্টরি তালিকাভুক্ত করার জন্য কমান্ড

  4. কমান্ড প্রম্পটের মূল বিষয়গুলি:ফাইল এবং ফোল্ডারগুলির সাথে কাজ করা