ফাইলগুলিতে অনুলিপি না করে প্যাচ ফাইল তৈরি করতে rsync পান?


19

আমি rsync ব্যবহার করে একটি সার্ভার থেকে অন্য সার্ভারে পরিবর্তিত প্রচুর ফাইলগুলি অনুলিপি করছি। আমি জানি আমি -nএকটি ড্রাই ড্রাই করতে অপশনটি ব্যবহার করতে পারি, তাই আমি দেখতে পাচ্ছি কোন ফাইলগুলি পরিবর্তন করা হয়েছে। তবে পরিবর্তিত ফাইল সামগ্রীগুলির একটি আলাদা প্রিন্টে আরএসআইএনসি পাওয়া কি সম্ভব? আমি একটি অনুলিপি করার আগে কি ঘটছে তা দেখতে চাই? আমি কোনও ফাইলে কিছু সংরক্ষণ করতে পারি এবং পরে (1) ডিফ দিয়ে প্রয়োগ করতে পারি?

উত্তর:


8

আরও ভাল উপায় হতে পারে, তবে এটি কার্যকর হতে পারে, যদিও সেই দক্ষতার সাথে নয়:

 rsync -vrn / dest:/ > ~/file_list

তারপরে পরিসংখ্যানগুলি সরানোর জন্য পরীক্ষা সম্পাদনা করুন, তারপরে:

while read file; do
    diff $file <(ssh dest "cat $file")
done < ~/edited_file_list

অন্য বিকল্প:
আপনি ফাইল সিস্টেমকে sshfs / fuse এর মতো কিছু দিয়ে মাউন্ট করার কথা বিবেচনা করতে পারেন এবং তারপরে কেবল ডিফ ব্যবহার করতে পারেন।


দ্রষ্টব্য: আমি এই আদেশগুলি পরীক্ষা করিনি ;-)
কাইল ব্র্যান্ড্ট

শুভ সূচনা, তবে আরএসসিএনসি থেকে অতিরিক্ত পরিমাণের আউটপুট যেমন পরিসংখ্যান এবং "ইনক্রিমেন্টাল ফাইল তালিকা পাঠানো" ইত্যাদি রয়েছে
ররি

আপনি --out-format = "% f" ব্যবহার করতে পারেন
কাইল ব্র্যান্ডেট

যদি আপনি আউট-ফর্ম্যাটটি ব্যবহার করেন তবে ভিটি ছেড়ে দিন এবং গ্রেপ-ভি 'নিয়মিত ফাইল এড়িয়ে চলেন' ... এটি একেবারে পরিষ্কার হওয়া উচিত
কাইল ব্র্যান্ডেট

মাত্র rsync --diffদুটি বছর পরে কোনও নতুন / আরও ভাল পদ্ধতি আছে কিনা তা
রিং Ø



1

এটি স্থানীয়ভাবে সম্ভব নয় কারণ rsync কেবলমাত্র ফাইলগুলির মধ্যে বাইনারি পার্থক্য সম্পর্কে চিন্তা করে।

আপনি সম্ভবত এটির স্ক্রিপ্ট করতে পারবেন, আরএসসিএন এর আউটপুট ব্যবহার করে। তবে এটি হ্যাকিশ হবে।

আমি বিশ্বাস করি যদিও এটি ইউনিয়নের সাথে স্থানীয়ভাবে সম্ভব ।


1
তুমি কি হ্যাকিশ বলতে চাচ্ছো? :-)
কাইল ব্র্যান্ডেট

একদম, কাইল: ডি
ড্যান কার্লে

1

ডিফগুলি তৈরি করতে কেবল কেন কেবল পাঠ্য ফাইলের জন্য (পাঠ্য ফাইলগুলির জন্য) বা xdelta (বাইনারি ফাইলগুলির জন্য) কিছু ব্যবহার করবেন না? আপনার বিশেষত আরএসসিএনসি থেকে কিছু পাওয়ার দরকার কেন?


আমার আরএসএনসি দরকার নেই তবে এটি দূরবর্তী হওয়া দরকার
ররি

ওহ নো, এসএস!
দুরন্ত

1

কাইলের উত্তরে প্রসারিত করতে, এটি প্রক্রিয়াটি স্বয়ংক্রিয় করে দেয়। মনে রাখবেন এটি সম্পূর্ণরূপে অনির্ধারিত, সম্ভবত বেশ ভঙ্গুর এবং এটি আপনার কম্পিউটার মুছতে পারে এবং আপনার কুকুরটিকে হত্যা করতে পারে।

#!/bin/bash

REMOTE=${1?Missing Remote Path}
LOCAL=${2?Missing Local Path}

# Trim trailing slash since we'll be adding it as a separator later
REMOTE=${REMOTE%/}
LOCAL=${LOCAL%/}

#Break it down
RHOST=${REMOTE%:*}
RPATH=${REMOTE#*:}

while read FILE; do
    diff -u ${LOCAL}/${FILE} <(ssh $RHOST "cat ${RPATH}/${FILE}")
done < <(rsync -vrn $REMOTE/ $LOCAL/ | sed '1d;/^$/q')

0

আরএসআইএনসি অ্যালগরিদম ফাইলের বাইনারি খণ্ডের তুলনা করে কাজ করে। এই জাতীয় বাইনারি ডিফটি মুদ্রণযোগ্য নয়। আরডিফ নামে একটি কমান্ড রয়েছে যা বাইনারি ডিফ তৈরি করতে rsync অ্যালগরিদম ব্যবহার করে তবে আমি মনে করি না যে আপনি যা বর্ণনা করেছেন এটি কার্যকর হবে, এটি সাধারণত ইনক্রিমেন্টাল ব্যাকআপ প্রয়োগ করতে ব্যবহৃত হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.