আরএসসিএনসি দ্বারা কোনও একক ফাইলের স্থানান্তর পুনরায় শুরু করুন


52

উবুন্টুতে, আমি আমার হার্ড ড্রাইভ থেকে একটি অপসারণযোগ্য ড্রাইভে একটি বড় ফাইল কপি করতে চাই rsync। অন্য কোনও কারণে, অপারেশনটি একটি রানে সম্পূর্ণ হতে পারে না। সুতরাং আমি rsyncযে ফাইলটি গতবার ছেড়েছি সেখান থেকে অনুলিপি করতে পুনরায় ব্যবহার করতে কীভাবে তা ব্যবহার করার চেষ্টা করছি ।

আমি বিকল্প ব্যবহার করার চেষ্টা করে থাকেন --partialবা --inplace, কিন্তু একসাথে --progress, আমি দেখেছি rsyncসঙ্গে --partialবা --inplaceআসলে থেকে শুরু পরিবর্তে কি শেষ সময় বাকি ছিল থেকে সূচনা করে। ম্যানুয়ালি rsyncতাড়াতাড়ি থামানো এবং প্রাপ্ত ফাইলের আকার যাচাই করাও আমি খুঁজে পেয়েছি তা নিশ্চিত করে।

তবে এর সাথে --append, আরএসসিএনসি শুরু হয়েছিল যা শেষ বারের থেকে পড়েছিল।

আমি দেখেছি বিভ্রান্ত করছি man পৃষ্ঠা --partial , --inplaceএবং --appendকি শেষ সময় বাকি ছিল থেকে কপি চালু কহা বলে মনে হচ্ছে। কেউ কি পার্থক্য বোঝাতে সক্ষম? অনুলিপি চালু করার জন্য --partialবা কেন --inplaceকাজ করবেন না ? এটি কি সত্য যে অনুলিপি পুনরায় শুরু করার জন্য, বিকল্পটির rsyncসাথে কাজ করতে হবে --append?

এছাড়াও, যদি আংশিক ফাইলটি আরএসআইএনসি দ্বারা নয় mvবা ছেড়ে দেওয়া হয় cp, rsync --appendতবে ফাইলটি সঠিকভাবে অনুলিপি করা আবার শুরু হবে ?

উত্তর:


39

একটি বাধা অনুলিপি পুনরায় শুরু করতে, আপনার ব্যবহার করা উচিত rsync --append। ম্যান পৃষ্ঠার ব্যাখ্যা থেকে --append:

এটি আরএসসিএনকে ফাইলের শেষের দিকে ডেটা যুক্ত করে একটি ফাইল আপডেট করার কারণ হয়ে থাকে, যা ধরে নিয়েছে যে প্রাপ্তি পক্ষের ইতিমধ্যে উপস্থিত ডেটা প্রেরণকারী পক্ষের ফাইলটি শুরুর সাথে অভিন্ন। [...] বোঝায় --inplace, [...]

অপশন --inplaceতোলে rsync(বেশি) গন্তব্য ফাইল বিষয়বস্তু সরাসরি লিখতে; ছাড়া --inplace , rsyncহবে:

  1. একটি অস্থায়ী নাম সহ একটি নতুন ফাইল তৈরি করুন,
  2. এতে আপডেট হওয়া সামগ্রী অনুলিপি করুন,
  3. গন্তব্য ফাইলের সাথে এটিকে অদলবদল করুন এবং শেষ পর্যন্ত
  4. গন্তব্য ফাইলটির পুরাতন অনুলিপি মুছুন।

অপারেশনের সাধারণ পদ্ধতিটি মূলত অ্যাপ্লিকেশনগুলির সাথে দ্বন্দ্বগুলি প্রতিরোধ করে যেগুলির গন্তব্য ফাইলটি উন্মুক্ত থাকতে পারে এবং ম্যানপেজে যথাযথভাবে তালিকাভুক্ত আরও কয়েকটি দুর্ঘটনা রয়েছে rsync

নোট করুন, যদি কোনও কপি / আপডেট অপারেশন পদক্ষেপে ব্যর্থ হয় 1.-3। উপরে, rsyncঅস্থায়ী গন্তব্য ফাইল মুছবে; --partial বিকল্প এই আচরণ অক্ষম করে এবং rsyncগন্তব্য ফাইলসিস্টেম-এর আংশিক স্থানান্তরিত অস্থায়ী ফাইল ছাড়বে। সুতরাং, আপনি যদি প্রথমটি না rsyncদিয়ে থাকেন --partialবা --partial-dir( কোনও নির্দিষ্ট ডিরেক্টরিতে সমস্ত অস্থায়ী ফাইল তৈরি করার --partialনির্দেশ হিসাবে একই প্রভাব হিসাবে) একটি ফাইল অনুলিপি অপারেশন পুনরায় শুরু করা তেমন লাভ করতে পারে না rsync


ধন্যবাদ! যদি আংশিক ফাইলটি এমওয়াই বা সিপি দ্বারা আরএসইএনসি দ্বারা না রেখে যায়, তাহলে আরএসসিএন - অ্যাপেন্ড সঠিকভাবে ফাইল অনুলিপি শুরু করবে?
টিম

1
সংক্ষেপে টিম, এটি বিশ্বাস করে --appendতোলে rsyncযে, যদি দুটি অনুরূপ ফাইলের দৈর্ঘ্য আলাদা হয় তবে তার চেয়ে কম সংক্ষিপ্ততর ফাইলটি আর একটির প্রাথমিক অংশের সমান। সুতরাং, হ্যাঁ, আপনি যদি একটি বৃহত ফাইল অনুলিপি করা শুরু করেন cpএবং অনুলিপি প্রক্রিয়াটিতে বাধা দেন, তবে rsync --appendকেবলমাত্র ফাইলের অবশিষ্ট অংশটি অনুলিপি করবেন। ( দ্রষ্টব্য: যদি cpএকটি সিস্টেম ক্র্যাশ ফলে বাধাপ্রাপ্ত হয়, একটি ছোট সুযোগ যে ফাইল বিষয়বস্তু এবং মেটাডেটা না সুসংগত, অর্থাত্ চলমান ফাইলটি দূষিত হয়, এই ক্ষেত্রে, হয়। rsyncআরো একবার ছাড়া --append সমস্যাটি সমাধানের উচিত।)
Riccardo মুরি

2
সুতরাং যদি আমি এটি সঠিকভাবে বুঝতে পারি তবে কোনও আংশিক ফাইল যাচাই করার জন্য আরএসসিএনকে বলার উপায় নেই এবং সেই আংশিক স্থানান্তরিত ফাইলটিতে স্থানান্তর পুনরায় শুরু করতে হবে ?
উইনি 17

1
@ উইনি, খুব তীব্রভাবে: স্থানীয় কপির জন্য এটি করার কোনও বুদ্ধিমান উপায় নেই। একটি নেটওয়ার্ক অনুলিপির জন্য এটি ডিফল্ট মোড আপনি যখন উল্লেখ --partialনা করে নির্দিষ্ট করেন --append
রোয়াইমা

1
@ উইনি --appendএবং --append-verifyএকটি বিপজ্জনক ব্যর্থতার মামলা রয়েছে: যখন রিসিভারের ফাইলটি একই আকার বা বড় হয় তবে এতে আলাদা আলাদা ডেটা থাকে। আমি পরিবর্তে আশেপাশে--no-whole-file একটি সমাধান প্রস্তাব ।
টম হেল

21

সচেতন থাকুন যা --appendবোঝায় --inplace, যা নিজেই বোঝায় --partial

  • কেবলমাত্র ব্যবহার করে --partialআপনার rsyncআংশিক স্থানান্তর ছেড়ে যাওয়ার এবং পরবর্তী প্রচেষ্টাতে সেগুলি পুনরায় শুরু করার কারণ উচিত ।

  • ব্যবহারের মাধ্যমে --appendআপনার rsyncউভয়কেই আংশিক ফাইলগুলি ছেড়ে দেওয়া উচিত এবং পরের বার সেগুলি আবার চালু করা উচিত । স্থানান্তর rsyncকরার পরে কেবল প্রেরিত ডেটার চেকসামটি যাচাই করা উচিত।

  • --append-verify পূর্ববর্তী স্থানান্তরে স্থানান্তরিত কোনও অংশ সহ চেকসাম যাচাইকরণে পুরো ফাইল অন্তর্ভুক্ত।

  • হয় --appendবা --append-verifyএকটি ব্যর্থ চেকসাম যাচাইয়ের ফলে ফাইলটি পুরোপুরি পুনরায় সংক্রমণ করাতে হবে (ব্যবহার করে --inplace)

আপনার সাথে একটি mvবা cpঅপারেশন পুনরায় শুরু করতে সক্ষম হওয়া উচিত rsyncতবে আপনি --append-verifyমানসিক শান্তির বিকল্পটি ব্যবহার করতে পারেন ।

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

যদি কোনও ফাইল স্থানান্তরিত করা দরকার হয় এবং প্রেরকের আকারের তুলনায় এটির আকারটি একই বা দীর্ঘ হয় তবে ফাইলটি এড়িয়ে যায়।

ম্যান পৃষ্ঠায় আরও তথ্য


--appendএবং --append-verifyএকটি বিপজ্জনক ব্যর্থতার কেস রয়েছে: যখন রিসিভারের ফাইলটি একই আকার বা বড় হয় তবে এতে আলাদা আলাদা ডেটা থাকে। আমি পরিবর্তে আশেপাশে--no-whole-file একটি সমাধান প্রস্তাব ।
টম হেল

@ টমহেল ডকুমেন্টেশনটি সুপারিশ করে যে কোনও ফাইল এড়িয়ে যাওয়ার জন্য উভয় প্রান্তে হুবহু একই আকার এবং পরিবর্তনের সময় থাকা দরকার। এটি যদি একটি প্রশংসনীয় উদ্বেগ হয় তবে --checksumএটি ব্যবহার করা উচিত। আমি এটি স্পষ্টভাবে সুনির্দিষ্টভাবে দেখতে পাচ্ছি না, তবে যৌক্তিকভাবে পুনঃসূচনা-সক্ষম বিকল্পগুলির কোনওটি বোঝাতে হবে --no-whole-fileকারণ --whole-fileএটি বেমানান হওয়া উচিত।
টমজি

--append-verifyবিভিন্ন তারিখ সহ একই বা বড় আকারের ফাইলগুলি এড়িয়ে যাবে যা "অপ্রত্যাশিত" হতে পারে। --checksum সমস্ত ফাইলের কোনও প্রয়োজন নেই , যেমন rsyncএকটি পুরো ফাইল চেকসাম যাইহোক করবে, তবে কেবল এটি স্থানান্তরিত করে।
টম হেল

--checksumrsyncফাইলগুলি প্রেরণের আগে চেকসামকে বলে যে যা আকার / সময় নির্বিশেষে সমস্ত পরিবর্তিত ফাইল স্থানান্তরিত হয় তা নিশ্চিত করে। আপনি --append-verifyযা বর্ণনা করেছেন তা ডকুমেন্টেশন বা আমার (সীমাবদ্ধ) অভিজ্ঞতার সাথে মেলে না বলে অপ্রত্যাশিত আচরণের উত্স পেয়েছেন ?
টমজি

--append-verify--appendযা বলে তাতে বোঝায় : If a file needs to be transferred and its size on the receiver is the same or longer than the size on the sender, the file is skipped.এমনকি কোনও ফাইল কারণে হস্তান্তর করা দরকার --checksumহলেও এটি এখনও এড়িয়ে যেতে পারে।
টম হেল

6

ডেভিড শোয়ার্জ সঠিক, --partial(বা আরও ভাল -P) আপনি যা চান তা করেন। আমি এটি একটি 37 জি ফাইলে যাচাই করেছিলাম যা কোনও নেটওয়ার্কের মাধ্যমে এটিতে 8 ডলার stopped আরএসসিএনসি দ্রুত আংশিক প্রথম অংশগুলি স্ক্যান করেছে (ধন্যবাদ হিসাবে অগ্রগতি প্রদর্শন করছে -P) এবং তারপরে আংশিক ফাইলের শেষে স্থানান্তরটি আবার শুরু করে।


একটি স্থানীয় অনুলিপিতে একটি নেটওয়ার্ক অনুলিপি আলাদাভাবে চিকিত্সা করা হয়, যা এখানে সমস্যা।
রোয়াইমা

@roaima আপনার কাছে কি এর জন্য কোনও উত্স আছে, বা এমন একটি নথী আছে যা পার্থক্যগুলি কী তা আরও বিশদে ব্যাখ্যা করে? আমি এটি (বিশাল) ম্যানপেজে খুঁজে পেতে ব্যর্থ হয়েছি।
জোনাস শোফার

@ জোনাসওয়িলিকি ম্যান পেজটি --whole-fileবিকল্প বর্ণনার আওতায় এটিকে যুক্ত করে ।
রোয়াইমা

@roaima আপনাকে অনেক ধন্যবাদ! এর অর্থ হ'ল যথাযথ কর্মক্ষেত্রটি --no-W(যা আসলে কাজ করে!)
জোনাস শোফার

@ জোনাস উইলিকি এটি অত্যধিক অদক্ষ, যে কারণে এটি ডিফল্টরূপে অক্ষম। --no-Wস্থানীয় ফাইলগুলির জন্য সেটিংসের অর্থ কী তা আপনি সঠিকভাবে বুঝতে না পারলে আপনি সত্যিই ব্যবহার করতে চান না । Unix.stackexchange.com/a/181018/100397
রোয়াইমা

2

আপনি এটি করছেন ঠিক --partialকি আপনি চান তা করেন। এটি শুরু থেকে প্রদর্শিত হচ্ছে বলে মনে হয় কারণ এটি সর্বদা ফাইল ফাইলের খণ্ডগুলির তালিকা শুরু করা হয় যা এটি অনুলিপি করা প্রয়োজন needs --appendবিকল্প বিপজ্জনক এবং একটি দূষিত ফাইল ফলে যদি ডেটা কিছু কারণে মিলছে না হবে।


স্থানীয় অনুলিপিগুলি তুলনা করা হয় না, সেগুলি কেবল ওভাররাইট করা হয় (বা --appendবাইট অফসেট থেকে অবিরত সহ )।
রোয়াইমা

1

ডিফল্টরূপে, স্থানীয় ডিস্ক থেকে স্থানীয় ডিস্কে স্থানান্তরিত করা rsyncসক্ষম করে --whole-file। এটি ইতিমধ্যে সেখানে থাকা অংশগুলি যাচাই না করে শুরু থেকে একটি বাধা স্থানান্তর পুনরায় চালু করবে।

এটি অক্ষম করতে, ব্যবহার করুন:

--no-whole-file

এটির সাথে একত্রিত করা --inplaceবা --partialপরে স্থানান্তর পুনরায় শুরু করার অনুমতি দেবে।

rsyncঅনুলিপি ব্যবহারের জন্য আমার নামটি হ'ল:

rscp='rsync -ax --inplace --sparse --no-whole-file --protect-args'

সতর্কতা : ব্যবহারের ক্ষেত্রে সতর্কতা অবলম্বন করুন --append-verifyকারণ এটি কোনও আকারের বা বৃহত্তর কোনও গন্তব্য ফাইলগুলি এড়িয়ে যাবে।


নেটওয়ার্ক ট্রান্সফারগুলির rsyncজন্য স্থানান্তর করার পূর্বে উত্স এবং সংশ্লিষ্ট গন্তব্য ফাইলগুলির সাথে তুলনা করা হয় কেবল পরিবর্তিত (পার্বত্য-স্থানান্তর) পরিবর্তিত অংশগুলি প্রেরণের জন্য। স্থানীয় থেকে স্থানীয় অনুলিপি করার জন্য একই কাজ করতে --no-whole-fileবলে rsync। ডকুমেন্টেশনের পরামর্শ দেয় না যে এটি একক ফাইলগুলির আংশিক স্থানান্তর পুনরায় শুরু করতে কোনও প্রভাব ফেলবে। rsyncঠিক একই আকার এবং টাইমস্ট্যাম্পগুলি ডিজাইনের সাহায্যে ফাইলগুলি এড়িয়ে যাবে। আমরাও --append-verifyনা --no-whole-fileযে আচরণ পরিবর্তন করা উচিত কিন্তু --checksumসঙ্গে কাজ করা উচিত পারেন ডিস্ক আই খরচে মনের শান্তি জন্য
TomG

--append-verifyবিভিন্ন তারিখ সহ একই বা বড় আকারের ফাইলগুলি এড়িয়ে যাবে যা "অপ্রত্যাশিত" হতে পারে। --checksum সমস্ত ফাইলের কোনও প্রয়োজন নেই , যেমন rsyncএকটি পুরো ফাইল চেকসাম যাইহোক করবে, তবে কেবল এটি স্থানান্তরিত করে।
টম হেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.