আমি কীভাবে তার কমান্ডটি পুনরায় চালু করব যা নিহত হয়েছিল


11

আমি একটি করছিলাম: tar -cvfএবং আমাকে এটি দিয়ে হত্যা করতে হয়েছিল ctrl-C। আমি জানি আমার একটি করা উচিত ছিল Ctrl-Zএবং তারপরে টাস্কটিকে অগ্রভাগে ফিরিয়ে আনতে হবে ... তবে এটি গল্প নয়।

আমি যে কাজটি থামিয়ে দিয়েছি সেখান থেকে আবার শুরু করতে পারি?


গন্তব্যস্থলে কি অপূর্ণ একটি ফাইল আছে?
কার্তিক টি

হ্যাঁ একটি অসম্পূর্ণ টার আছে।
mthpvg

উত্তর:


11

এই পদ্ধতিটি আপনার টার সংরক্ষণাগারটি পুনরায় তৈরি করবে এবং সমাপ্ত অংশটি বিদ্যমান ফাইলে সংযোজন করবে। কোনও নেটওয়ার্ক সংযোগের জন্য ব্যাক আপ নিলে এটি কার্যকর হতে পারে। আপনার আইএনএফআইএলএস এর কোনও ডেটা পরিবর্তিত হলে আপনি সম্ভবত কোনও দুর্নীতিগ্রস্থ সংরক্ষণাগার তৈরির ফলস্বরূপ ঘটবেন। সম্পূর্ণ হওয়ার পরে আপনার সংরক্ষণাগারটি পরীক্ষা করার বিষয়ে নিশ্চিত হন।

নিম্নলিখিত লাইনের সঠিক নাম থেকে INFILES এবং OUTFILE পরিবর্তন করুন।

INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"

ব্যাখ্যা:

SIZE="$(wc -c < $OUTFILE)" # সংরক্ষণাগারটির বর্তমান আকার পান।

tar -cz --to-stdout "$INFILES" |# সংরক্ষণাগার তৈরি করা শুরু করুন এবং tailকমান্ডে আউটপুট প্রেরণ করুন ।

tail -c +$(($SIZE+1)) >> # ZE SIZE + 1 এর আগে ডেটা উপেক্ষা করুন এবং সংরক্ষণাগারটির বাকি অংশটি আবার শুরু করুন UT আউটফিল।


2
আমি ধরে নিচ্ছি এটি কেবল টার প্রক্রিয়া পুনরায় আরম্ভ করার চেয়ে দ্রুত কারণ এটি আসলে ডিস্কে কিছু লিখেনি?
টাইলার

2

সর্বোত্তম সমাধানটি হ'ল টার ফাইলটি মুছে ফেলা এবং পুনরায় চাপানো nohupএবং সংযুক্ত প্রক্রিয়াটি পুনরায় চালু করা &। বিকল্পভাবে, আপনি চালাতে tar -tfvপারেন এবং এটিটিকে নতুন হিসাবে বাদ দিয়ে ব্যবহার করতে পারেন tar -cvf


2
tar -cvfবিদ্যমান ফাইলটি ওভাররাইট করবে। মানে tar -rvf? এছাড়াও, সংরক্ষণাগারে লেখা শেষ ফাইলটি অসম্পূর্ণ ছিল।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

সুতরাং ধারনাটি হ'ল ফাইলগুলির একটি তালিকা তৈরি করা উচিত যা ইতিমধ্যে টারবলে রয়েছে, সর্বশেষে বিয়োগটি যা অসম্পূর্ণ। এবং তারপর একটি চালানো tar -rvf?
mthpvg

2

আপনি পারবেন না; আপনার শুধু শুরু করতে হবে।


1

আমি এই ক্ষেত্রে যা করি tar, আমার একটি অসম্পূর্ণ সংরক্ষণাগার রয়েছে, আমি সংরক্ষণাগারে ফাইলগুলির একটি তালিকা তৈরি করি:

tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done

sedএই ডিরেক্টরি, না ফাইল, এবং আমরা ডিরেক্টরি আবার ডাম্প এবং শুধুমাত্র ঐ ডিরেক্টরিগুলি থেকে ঐ ফাইল লাফালাফি, প্রথম টার আর্কাইভ আগে থেকেই আছে আমরা চাই: COMMAND সমস্ত লাইন, একটি trailing স্ল্যাশ আছে মুছে ফেলা হবে। তদতিরিক্ত, আমরা sedশেষ ফাইলের নামটি মুছতে পারি , কারণ এটি সম্ভবত আংশিকভাবে ফেলে দেওয়া হয়েছে, তাই আমরা এটি আবার সংরক্ষণাগারভুক্ত করব।

তারপরে files-doneতালিকাটি -X বিকল্পের মাধ্যমে একটি নতুন tarকমান্ডে পাস করুন :

tar cfvX archive2.tar files-done SOURCEDIR

নতুন টার কমান্ডে একটি ভিন্ন আউটপুট ফাইলের নাম ব্যবহার করা নিশ্চিত করুন বা আপনি আপনার আংশিক সংরক্ষণাগারটি ওভাররাইট করে দেবেন। দূষিত টার আর্কাইভটিতে সরাসরি যুক্ত করার চেষ্টা করবেন না।

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