আশ্চর্যজনকভাবে 6 বছরের কোনও উত্তর -i
বিকল্প ব্যবহার করে না বা সুন্দর আউটপুট দেয় না তাই এখানে যাব:
টিএলডিআর - আমাকে কেবল আদেশগুলি প্রদর্শন করুন
rsync -rin --ignore-existing "$LEFT_DIR"/ "$RIGHT_DIR"/|sed -e 's/^[^ ]* /L /'
rsync -rin --ignore-existing "$RIGHT_DIR"/ "$LEFT_DIR"/|sed -e 's/^[^ ]* /R /'
rsync -rin --existing "$LEFT_DIR"/ "$RIGHT_DIR"/|sed -e 's/^/X /'
আউটপুট বোঝা
আউটপুট এর উদাহরণ এখানে:
L file-only-in-Left-dir
R file-only-in-right-dir
X >f.st...... file-with-dif-size-and-time
X .f...p..... file-with-dif-perms
প্রতিটি লাইনের প্রথম চরিত্রটি নোট করুন:
L
/ R
মানে ফাইল / L
ডিরটি কেবলমাত্র ভোর বা ight ডায়ারে উপস্থিত হয় R
।
X
যে ফাইল উভয় পক্ষের মনে হচ্ছে, কিন্তু একই নয় (। যে ক্ষেত্রে পরবর্তী 11 টি অক্ষর আপনি আরও তথ্য দিতে মানে s
, t
এবং p
পার্থক্য বর্ণা গুলি ize, টি IME এবং পি - চেষ্টা আরও তথ্যের জন্য যথাক্রমে ermissions man rsync
এবং অনুসন্ধান --itemize-changes
) ।
অতিরিক্ত বিকল্প আপনি ব্যবহার করতে পারেন
আপনি যদি ফাইলগুলির মালিক / গ্রুপ / অনুমতিগুলির সাথে তুলনা করতে চান তবে যথাক্রমে বিকল্পগুলি -o
/ -g
/ যুক্ত করুন -p
। পরিশেষে নোট করুন ডিফল্টরূপে rsync দুটি ফাইলের একই নাম, সময় এবং আকার একই বিবেচনা করে। এটি অত্যন্ত দ্রুত এবং বেশিরভাগ সময় পর্যাপ্ত পরিমাণের চেয়ে বেশি তবে আপনি যদি 100% নিশ্চিত হতে চান -c
তবে একই নাম, সময় এবং আকারের সাথে ফাইলের সামগ্রীগুলিও তুলনা করতে পারেন।
টিএলডিআর - কল করার জন্য আমাকে কেবল একটি স্ক্রিপ্ট দিন
এটা এখানে. এটিকে কল করুন
diff-dirs Left_Dir Right_Dir [options]
"আপনি ব্যবহার করতে পারেন অতিরিক্ত বিকল্পগুলি" বিভাগে উল্লিখিত সমস্ত বিকল্পগুলি এখানেও প্রয়োগ হয়।
#!/bin/bash
# Compare two directories using rsync and print the differences
# CAUTION: options MUST appear after the directories
#
# SYNTAX
#---------
# diff-dirs Left_Dir Right_Dir [options]
#
# EXAMPLE OF OUTPUT
#------------------
# L file-only-in-Left-dir
# R file-only-in-right-dir
# X >f.st...... file-with-dif-size-and-time
# X .f...p..... file-with-dif-perms
#
# L / R mean that the file/dir appears only at the `L`eft or `R`ight dir.
#
# X means that a file appears on both sides but is not the same (in which
# case the next 11 characters give you more info. In most cases knowing
# that s,t,T and p depict differences in Size, Time and Permissions
# is enough but `man rsync` has more info
# (look at the --itemize-changes option)
#
# OPTIONS
#---------
# All options are passed to rsync. Here are the most useful for the purpose
# of directory comparisons:
#
# -c will force comparison of file contents (otherwise only
# time & size is compared which is much faster)
#
# -p/-o/-g will force comparison of permissions/owner/group
if [[ -z $2 ]] ; then
echo "USAGE: $0 dir1 dir2 [optional rsync arguments]"
exit 1
fi
set -e
LEFT_DIR=$1; shift
RIGHT_DIR=$1; shift
OPTIONS="$*"
# Files that don't exist in Right_Dir
rsync $OPTIONS -rin --ignore-existing "$LEFT_DIR"/ "$RIGHT_DIR"/|sed -e 's/^[^ ]* /L /'
# Files that don't exist in Left_Dir
rsync $OPTIONS -rin --ignore-existing "$RIGHT_DIR"/ "$LEFT_DIR"/|sed -e 's/^[^ ]* /R /'
# Files that exist in both dirs but have differences
rsync $OPTIONS -rin --existing "$LEFT_DIR"/ "$RIGHT_DIR"/|sed -e 's/^/X /'
এটা কিভাবে কাজ করে?
আমরা এইভাবে আরএসএনসি কল করছি:
rsync -rin ...
আমরা দুটি ফাইলের মধ্যে যে কোনও পার্থক্য সম্পর্কে তথ্য রয়েছে এমন প্রতিটি ফাইলের জন্য আউটপুটের এক লাইন মুদ্রণ করতে আরএসইএনসি বলতে আমরা ব্যবহার করি -i
( --itemize-changes
) use আমাদের -n
আরএসইএনসি-র স্বাভাবিক আচরণ দমন করতে হবে (যা ফাইলগুলি অনুলিপি / মুছে ফেলার মাধ্যমে দুটি ডায়ার সিঙ্ক করার চেষ্টা করা)। আমাদের -r
সকল ফাইল / সাব-ডায়ারের জন্য পুনরাবৃত্তভাবে কাজ করতে হবে।
আমরা তিনবার rsync কল করি:
প্রথম কল : দির_বি-তে বিদ্যমান ফাইলগুলি মুদ্রণ করুন। --ignore-existing
উভয় পক্ষের বিদ্যমান ফাইলগুলিকে উপেক্ষা করার জন্য আমাদের ব্যবহার করতে হবে।
rsync -rin --ignore-existing $DIR_A/ $DIR_B/
২ য় কল : ঠিক আগের মতোই তবে আমরা ডিআইআর_এ / ডিআইআর_বি এর ক্রমটি অদলবদল করি।
তৃতীয় কল : পরিশেষে আমরা --existing
কেবল দুটি ডায়ারে উপস্থিত ফাইলগুলি পরীক্ষা করতে ব্যবহার করি ।
rsync -rin --existing $DIR_A/ $DIR_B/