আমাদের কি লিনাক্সে পূর্বাবস্থা আছে?


52

আমি একটি ব্যাচের স্ক্রিপ্টে কয়েকটি ফাইলের নাম পরিবর্তন করেছি। পরিবর্তনগুলি পুনরায় নামকরণ না করেই কি পূর্বাবস্থায় ফিরে যাওয়ার কোনও উপায় আছে?

লিনাক্স undoইনগ করার কিছু নেটিভ উপায় সরবরাহ করে ?


উত্তর:


53

লিনাক্স (অন্যান্য ইউনিক্সের মতো) স্থানীয়ভাবে একটি পূর্বাবস্থায় ফিচার সরবরাহ করে না। দর্শন হ'ল এটি যদি চলে যায় তবে চলে যায়। এটি যদি গুরুত্বপূর্ণ হয় তবে এটির ব্যাকআপ নেওয়া উচিত ছিল।

একটি ফিউজ ফাইল সিস্টেম রয়েছে যা পুরানো সংস্করণগুলির অনুলিপি স্বয়ংক্রিয়ভাবে রাখে: সমস্ত ভাল বিতরণে কপিফগুলি উপলব্ধ। অবশ্যই, এটি প্রচুর সংস্থান ব্যবহার করতে পারে।

এই জাতীয় দুর্ঘটনার হাত থেকে রক্ষা করার সর্বোত্তম উপায় হ'ল সংস্করণ নিয়ন্ত্রণ ব্যবস্থা (সিভিএস, বাজার, ডার্কস, গিট, ম্যুরিয়ালিয়াল, সাবভারশন, ...) ব্যবহার করা। এটি শিখতে একটু সময় লাগে তবে এটি মাঝারি এবং দীর্ঘ মেয়াদে দুর্দান্তভাবে প্রদান করে।


1
ভাল বিকল্প gitfs হতে পারে, যা অবনমন অধীনে
30

1
ঠিক আছে আপনি যদি দুর্ঘটনাক্রমে কোনও ফাইল মুছে ফেলেন বা ওভাররাইট করে ফেলেন যা আপনি এখনও স্টেজ করেননি বা কমিট করেনি তবে একটি
সিভিএসও

14

দুর্ভাগ্যক্রমে না.


19
আমি জানি না যে আমি এই দুর্ভাগ্যজনক বিবেচনা করি ... একটি পূর্বাবস্থা বাস্তবায়নে বেশ কয়েকটি সংস্থান প্রয়োজন। আমি ডিফল্টরূপে সক্ষম করা -iবিকল্পটি পছন্দ করি না rm। আমার ইউনিক্স সিস্টেমগুলিকে আমার হাত ধরে রাখা উচিত নয়।
xenoterracide

5
-i ডিফল্টরূপে সক্ষম ?! না আমার ডিস্ট্রো, না স্যার!
স্টেফান

9

না কোনও ইউনিক্সে কোনও magন্দ্রজালিক পূর্বাবস্থা নেই। ইউনিক্স ধরে নেয় যে আপনি কী করছেন তা আপনি জানেন। পূর্বাবস্থায় সহায়তার জন্য একটি ভিসিএস ব্যবহার করুন (আপনার পাঠ্য সম্পাদক সম্ভবত এটি অন্তর্নির্মিত করেছেন)।

বেশিরভাগ ফাইল সিস্টেমে এটি স্বচ্ছতার সাথে করার ক্ষমতা নেই।

যথাক্রমে ম্যাক এবং উইন্ডোতে টাইম মেশিন এবং সিস্টেম পুনরুদ্ধার হ'ল কেবল ব্যাকআপ / পরিবর্তন নিয়ন্ত্রণ সিস্টেম change


7

কমান্ড লাইনে কোনও পূর্বাবস্থা নেই। তবে আপনি rm -iএবং হিসাবে কমান্ড চালাতে পারেন mv -i। এটি আপনাকে "আপনি কি নিশ্চিত?" কমান্ড কার্যকর করার আগে প্রশ্ন করুন।

এটির জন্য একটি প্রারম্ভিক স্ক্রিপ্টে (যেমন ~/.bashrcবা /etc/bash.bashrc) একটি উপনাম যুক্ত করাও সম্ভব :

alias remove='rm -i'
alias move='mv -i'

সম্পাদনা করুন: নীচের পরামর্শ অনুসারে, আমি আমার পরামর্শটি ওরফে পূর্বনির্ধারিত আদেশগুলি সরিয়ে দিয়েছি। পরিবর্তে, এটি এখন নতুন আদেশগুলি প্রবর্তন করে)।


1
+1 টি। শুধু এখানে যোগ করতে। উপরের মত উপস্থাপনের পরে যদি কিছু ক্ষেত্রে আপনি "নিশ্চিত আপনি" প্রম্পট ছাড়াই সরাসরি মুছে ফেলতে চান তবে আপনি alias আরএম এবং \ এমভি উপন্যাস বাইপাস করতে পারবেন। আপনি -f বিকল্পটিও ব্যবহার করতে পারেন।
হেমন্ত

2
mv -iকেবল তখনই অনুরোধ জানানো হয় যখন এটি কোনও ফাইলকে ওভাররাইট করবে (যা এটি দরকারী এবং অসুবিধায়িত করে না)। একই শিরা alias cp='cp -i',।
গিলস 'অশুভ হওয়া বন্ধ করুন'

8
আলিয়াজিং আরএম এবং এমভি একটি খুব খারাপ ধারণা। (আরএম সবার চেয়ে খারাপ) আরএম-এর অর্থ আরএম ব্যবহার করার অভ্যাসটি কখনই ব্যবহার করবেন না - আপনি শেষ পর্যন্ত এটি কোথাও ব্যবহার করবেন যেখানে উলামটি সংজ্ঞায়িত নয় এবং আপনি ভাল কিছু মুছবেন। আপনি যদি প্রম্পট হওয়া পছন্দ করেন তবে সারাক্ষণ rm -i ব্যবহার করার অভ্যাস করুন।
এমসাকর

যদি আপনাকে জিজ্ঞাসা করা পছন্দ হয় তবে আলাদা নামের অধীনে একটি উপনাম ব্যবহার করুন। আমি মুভি = 'এমভি-আই', কপি = 'সিপি-আই', সিএমলিংক = 'এলএন -সি' ব্যবহার করি এবং আরএম এর পরিবর্তে ট্র্যাশ কমান্ড ইনস্টল করি। আমি এখনও স্ক্রিপ্ট করার সময় সরাসরি এমভি, সিপি এবং আরএম ব্যবহার করি তবে ইন্টারেক্টিভ ব্যবহারের জন্য এই এলিয়াসগুলি কার্যকর।

@ এমাহমৌদসাকর আপনি পুরোপুরি ঠিক বলেছেন, আমি এই বিষয়টিটি মিস করেছি। আমার কাছে এই কমান্ডগুলিও সরানো নেই। এগুলিকে আলাদা কমান্ড হিসাবে আলাদা করা সবচেয়ে বুদ্ধিমান বিকল্প বলে মনে হচ্ছে!
vdboor

4

লিনাক্স / ইউনিক্স সিস্টেমগুলির যেহেতু বেশিরভাগ ফাইল সিস্টেমগুলি তাদের তথ্য সংরক্ষণ করে সেগুলি থেকে একটি মুছে ফেলা স্টেম না থাকার কারণ। ফাইল মেটা-তথ্য সমস্ত ডিস্কের সামনের অংশে বাকী ডিস্কের ইনোডের রেফারেন্স সহ সঞ্চিত থাকে। সাধারণত, বেশিরভাগ ফাইল সিস্টেমগুলি এই মেটা-অঞ্চলে একটি ফাইলকে 10 টি ব্লক বরাদ্দ করে। প্রথম 7 প্রথম 7 ইনোডগুলিকে উল্লেখ করে। অষ্টম এবং নবম আইওনডগুলির তালিকাতে (দ্বিগুণ সংযুক্ত ব্লকগুলি) যান এবং 10 তম তালিকাগুলির তালিকাগুলির তালিকায় যায় (ট্রিপলি লিঙ্কযুক্ত ব্লক)। এটি ফাইল সিস্টেম থেকে ফাইল সিস্টেমে পরিবর্তিত হয় (ext4, jfs, xfs, ইত্যাদি) তবে ব্লকগুলির এই তালিকাগুলি সাধারণত 2GB থেকে একাধিক টিবি ফাইলের আকারকে সম্বোধন করতে পারে।

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


2

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


1
এটি rm -r .যদিও আপনাকে রক্ষা করবে না । ;)
উমং

1
@ উমং আমি সত্যিই একবার গিট দিয়েছিলাম, যেখানে আমি স্থানীয় সংগ্রহস্থল রাখি এবং ঘটনাক্রমে rm -r project.git। ভাগ্যক্রমে আপনি যদি রিমোট সার্ভারে অন্য কোনও সংস্করণ রাখেন যা হওয়ার সম্ভাবনা নেই
ফুনেহে

1
@ ফুনেহে এবং যে কেউ আমার মন্তব্যটি +1 করেছেন: আমরা সম্পূর্ণ ভুল ছিল বুঝতে পেরে আমরা ডিভিসিএস-এর কাছে খুব অভ্যস্ত ছিলাম। এসভিএন রেপোতে প্রতিশ্রুতিবদ্ধ (যা শাখা নয়)। তাই আপনি যদি হবে আসলে রক্ষা করা rm -r .। সত্যিই আমার বোকা।
উমং

2

আমি আমার .bashrc এ যুক্ত করতে চাই এমন একটি বিষয় হ'ল একটি অনুলিপি এবং মুছে ফাংশন। কিছুটা এইরকম:

cprm(){
    cp -p $1 ~/deleted/$1
    rm $1
}

তবে আপনাকে সিএমপিএম নয়, আরএমপি টাইপ করার অভ্যাসে যেতে হবে।

স্পষ্টতই যদি আপনার সীমিত ডিস্কস্পেস থাকে তবে আপনার মুছে ফেলা অঞ্চলের শীর্ষে রাখতে হবে।


4
আপনি এমভি $ 1 ~ / মুছে ফেলা / $ 1
স্টেফান

হ্যাঁ, এবং যদি আপনি উদ্ধৃতিটি সঠিকভাবে পান: এটি অন্য একটি 'নতুন ডকুমেন্ট 1' এর সাথে একটি ফাইল 'নতুন ডকুমেন্ট 1' ওভাররাইট করবে "$1"
ব্যবহারকারী অজানা

@ ইউজারুননড: আপনার মানে কি ডানোস এবং স্টেফান কোডের মধ্যে 1 ডলার "" $ 1 "হিসাবে উদ্ধৃত করা উচিত?
টিম

@ টিম: হ্যাঁ, আমি করি।
ব্যবহারকারী অজানা

সিপি এবং আরএম এর পরিবর্তে সরানো হবে না কেন?
ব্যবহারকারী 1559897

1

গিটএফএস হ'ল একটি ফিউজ-ভিত্তিক ফাইল সিস্টেম যা স্বয়ংক্রিয়ভাবে diffসংস্করণগুলির মধ্যে গুলি গণনা করে এবং সেগুলি জুড়ে পুনরুদ্ধার / ব্রাউজ করার অনুমতি দেয়।

ওয়েবপৃষ্ঠা: https://www.presslabs.com/gitfs

দস্তাবেজ: https://www.presslabs.com/gitfs/docs/usage/

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