আমি একটি খারাপ ফাইল পাথের জন্য মাত্র 49 এমবি ডিরেক্টরিটি "এমভি" সম্পাদনা করেছি, ফাইলগুলির মূল অবস্থা পুনরুদ্ধার করা কি সম্ভব?


58

আমার একটি ডিরেক্টরি আছে (ভাল, আমার ছিল ):

/media/admin/my_data

এটি প্রায় 49 গিগাবাইট আকারের এবং এতে কয়েক হাজার ফাইল ছিল। ডিরেক্টরিটি একটি সক্রিয় LUKS পার্টিশনের মাউন্ট পয়েন্ট।

আমি ডিরেক্টরিটির নামকরণ করতে চাই:

/media/admin/my_data_on_60GB_partition

আমি তখন বুঝতে পারি নি, তবে আমি হোম ডিরেক্টরি থেকে কমান্ডটি জারি করেছি যাতে করে আমি শেষ করেছি:

~% sudo mv /media/admin/my_data my_data_on_60GB_partition

সুতরাং mvপ্রোগ্রামটি /media/admin/my_dataএকটি নতুন ডিরেক্টরিতে স্থানান্তরিত এবং এর সামগ্রীগুলি শুরু হয়েছিল ~/my_data_on_60GB_partition

আমি ব্যবহৃত Ctrl+ + Cমাধ্যমে কমান্ড অংশ পথ বাতিল করতে, তাই এখন আমি ডিরেক্টরি জুড়ে বিভক্ত ফাইল আভা আছে:

~/my_data_on_60GB_partition    <---  about 2GB worth files in here

এবং

/media/admin/my_data           <---- about 47GB of orig files in here    

নতুন ডিরেক্টরি ~/my_data_on_60GB_partitionএবং এর কয়েকটি উপ-ডিরেক্টরিগুলি রুটের মালিকানাধীন।
আমি ধরে নিচ্ছি যে mvপ্রোগ্রামটি অবশ্যই প্রথমে ফাইলগুলি মূল হিসাবে নকল করে chownহ'ল স্থানান্তর করার পরে এগুলি আমার ব্যবহারকারী অ্যাকাউন্টে ফিরে আসবে back

আমার ডিরেক্টরি / পার্টিশনের কিছুটা পুরানো ব্যাকআপ আছে।
আমার প্রশ্ন হ'ল, স্থানান্তরিত ফাইলগুলির গুচ্ছটি কি বিশ্বস্তভাবে পুনরুদ্ধার করা সম্ভব?

অর্থাৎ, আমি কি কেবল চালাতে পারি:

sudo mv ~/my_data_on_60GB_partition/*  /media/admin/my_data

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

  • ওএস - উবুন্টু 16.04
mv --version  
mv (GNU coreutils) 8.25

36
না লিখে টাইপ করতে Control-Z(বিরতি দিতে) আতঙ্কিত হয়ে অভ্যাসে প্রবেশ করুন Control-C। এই ক্ষেত্রে, আপনি সেই সময় কোন ফাইল স্থানান্তরিত হচ্ছে তা দেখতে সক্ষম হবেন এবং তাই কোন ফাইলটি কেবল আংশিক অনুলিপি করা হয়েছে তা জানতে সক্ষম হবেন। তারপরে আপনি কীভাবে এগিয়ে যাবেন সে সম্পর্কে শান্তভাবে সিদ্ধান্ত নিতে পারেন। ( kill -stopTty মধ্যে নয় প্রক্রিয়াগুলির জন্য ব্যবহার করুন )।
meuh

1
2 জিবি + 47 জিবি = 60 জিবি ???
tbodt

7
@tbodt (2GB + 47GB) < 60GB। পার্টিশন ক্ষমতা 60 গিগাবাইট, ফোল্ডারের আকার এবং এর বিষয়বস্তু: 49 জিবি।
the_velour_fog 23

উত্তর:


87

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

জিনিসগুলি আবার সরিয়ে নিতে, -iপতাকাটি যুক্ত করুন যাতে mvকোনও কিছুই ওভাররাইট না করে:

sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/

(ধরে নিলাম আপনার কাছে পুনরুদ্ধার করার জন্য কোনও লুকানো ফাইল নেই ~/my_data_on_60GB_partition/), বা আরও ভাল (এটি আপনি যেমনটি আবিষ্কার করেছেন যে মোছার জন্য অনেকগুলি ফাইল থাকতে পারে), -nপতাকা যুক্ত করুন যাতে mvকিছুই ওভাররাইট না করে তবে নেই এটি সম্পর্কে আপনাকে জিজ্ঞাসা:

sudo mv -n ~/my_data_on_60GB_partition/* /media/admin/my_data/

এছাড়াও আপনি যোগ করতে পারিনি -vতা দেখতে কিছু করা হচ্ছে পতাকা।

যে কোনও পসিক্স-আনুগত্যের সাথে mv, মূল ডিরেক্টরি কাঠামোটি এখনও অক্ষত থাকতে হবে, তাই বিকল্পভাবে আপনি এটি পরীক্ষা করে দেখতে পারেন - এবং কেবল মুছুন /media/admin/my_data... (যদিও সাধারণ ক্ষেত্রে আমি মনে করি যে mv -nরূপটি নিরাপদ পদ্ধতির - এটি সমস্ত ধরণের পরিচালনা করে mv, সহ যেমন mv /media/admin/my_data/* my_data_on_60GB_partition/ ।)

আপনার সম্ভবত কিছু অনুমতি পুনরুদ্ধার করতে হবে; আপনি তা করতে পারে গণহারে ব্যবহার chownএবং chmodব্যবহার ব্যাকআপ থেকে তাদের পূর্বাবস্থায় ফিরিয়ে আনুন, অথবা getfaclএবং setfacl(ধন্যবাদ সাতো কাতসুরা জন্য অনুস্মারক )।


আপনাকে স্টিফেন কিট ধন্যবাদ, একটি বিশাল সাহায্য ধন্যবাদ! আমি findঅনুমতিগুলি সন্ধান এবং সেট করতে ব্যবহার করতে পারি । নতুন ডিরেক্টরিতে প্রচুর ফাইল রয়েছে যা ফাইলের নামগুলিতে ফাঁকা আছে, তবে কোনও লুকানো ফাইল নেই - যা আমি জানি। আপনি কি মনে করেন কমান্ডের গ্লোব sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/শব্দ বিভাজন সংক্রান্ত সমস্যা ছাড়াই ফাইলের নামটি প্রসারিত করবে? আমি বিকল্পভাবে ভাবছিলাম sudo rsync ~/my_data_on_60GB_partition/ /media/admin/my_data/যে আমি ব্যবহার করতে পারি যা আমার বিশ্বাস ফাঁক দিয়ে ফাইল পাথগুলি পরিচালনা করবে?
the_velour_fog 10

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

1
@ এই_ভালোয়ার_ফোগ সমস্যাবিহীন ফাইল নামগুলিতে ফাঁকা স্থান পরিচালনা করে।
স্টিফেন কিট

5
আমি su command mv -i ...(বা su /bin/mv -i ...) পরিবর্তে sudo mv -i ...), যদি কিছু (অদ্ভুত) প্রশাসক "এমভি" কে একটি ফাংশন তৈরি করে যা সিস্টেম স্তরে "এমভি-ফ" করে (যেমন, / ইত্যাদি / প্রোফাইল বা এই জাতীয় সিস্টেমের প্রশস্ত ফাইল) .. কমান্ড কিছু: একই কমান্ডটি সামোটিং শুরু করুন, এবং একই নামের সাথে কোনও ক্রিয়াকলাপ বা ওরফে নয়। (যেমন: function mv { /bin/mv -f -- "$@" }সর্বদা উত্সযুক্ত একটি ফাইলে একজন (খুব!) দুর্ভাগ্য হতে পারে এবং একটি (খুব, খুব খারাপ!) থাকতে পারে এবং তারপরে "আরএম -i কিছু" কিছু জিজ্ঞাসা করবে না (এবং কেবল "-i এর প্রতিবাদ করে) "ফাইলের অস্তিত্ব নেই!) ... [আমি এই জাতীয় জিনিসগুলি দেখেছি ... কাঁপুন ]
অলিভিয়ার ডুলাক

3
@ অলিভিয়ারডুলাক - স্ট্যান্ডার্ড প্রোগ্রামগুলির মতো একই নামযুক্ত এলিয়াস বা স্ক্রিপ্টগুলি ব্যবহার করা কেন খারাপ অভ্যাসের একটি নিখুঁত উদাহরণ।
জো 21

19

স্টিফেন কিটের উত্তর পাওয়ার পরে এবং এই আদেশটি একটি সম্ভাব্য সমাধান হিসাবে আলোচনা করার পরে:

sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/

যা হচ্ছিল তার চারপাশে আমার মাথা না পাওয়া পর্যন্ত আমি এটি চালিয়ে যাওয়ার সিদ্ধান্ত নিয়েছি, এই উত্তরটি আমি কী খুঁজে পেয়েছি এবং শেষ পর্যন্ত শেষ করে তা বর্ণনা করে।

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

দুটি ডিরেক্টরিগুলির মধ্যে প্রচলিত ফাইলগুলি আবিষ্কার করতে আমি দৌড়েছি:

~% sudo diff -r --report-identical-files my_data_on_60GB_partition/. /media/admin/mydata/. | grep identical | wc -l
14237

এই ফলাফলটিতে উত্স এবং টার্গেট ডিরেক্টরি উভয় ক্ষেত্রেই একই ফাইলের 14,237 টি উদাহরণ রয়েছে বলে আমি নিজে নিজে ফাইলগুলি পরীক্ষা করে নিশ্চিত করেছিলাম - হ্যাঁ উভয় ডিরেক্টরিতে একই ফাইলগুলির অনেকগুলি ছিল। এটি সুপারিশ করে যে কেবলমাত্র mvদুর্দান্ত কপি ফাইলের পরে এটি উত্স ফাইলগুলি মুছে ফেলার কাজ করে। মধ্যে একটি দ্রুত লুকআপ infoউপর mvকমান্ড দেখিয়েছেন

এটি [ mv] cp -aঅনুরোধ করা ডিরেক্টরি এবং ফাইলগুলি অনুলিপি করতে প্রথমে একই কোড ব্যবহার করে যা এরপরে (অনুলিপিটি সফল বলে ধরে নেওয়া হয়) এটি মূলগুলি সরিয়ে দেয়। যদি অনুলিপি ব্যর্থ হয়, তবে গন্তব্য বিভাজনে অনুলিপি করা অংশটি সরানো হবে।

আমি কমান্ডটি চালাইনি তবে আমি চালানোর চেষ্টা করলে সন্দেহ করি

sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/

-i প্রম্পট আগে ওভাররাইট সম্ভবত বেশি 14,000 বার আলোড়ন সৃষ্টি করত।

সুতরাং সদ্য নির্মিত ডিরেক্টরিতে মোট মোট ফাইলগুলি অনুসন্ধান করুন:

~% sudo find my_data_on_60GB_partition/ -type f -a -print | wc -l                                                                    
14238

সুতরাং যদি নতুন ডিরেক্টরিতে মোট 14238 নিয়মিত ফাইল থাকত এবং উত্সটিতে 14237 এর অভিন্ন অরিজিনাল ছিল, তার মানে নতুন ডিরেক্টরিতে কেবল একটি ফাইল ছিল যা উত্সটিতে একই রকম ফাইল নেই back সেই ফাইলটি কী ছিল তা জানতে, আমি সোর্সটির দিক থেকে পিছনে পিছনে ছুটলাম:

~% sudo rsync -av --dry-run my_data_on_60GB_partition/ /media/admin/my_data
sending incremental file list
./
Education_learning_reference/
Education_learning_reference/Business_Education/
Education_learning_reference/Business_Education/Business_education_media_files/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/018 business plans-identifying main KPIs.flv

sent 494,548 bytes  received 1,881 bytes  330,952.67 bytes/sec
total size is 1,900,548,824  speedup is 3,828.44 (DRY RUN)

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

সুতরাং সংক্ষেপে:

  • যে ফাইলগুলি mvকখনও পৌঁছেনি সেগুলি এখনও তাদের আসল অবস্থানে ফিরে এসেছে (স্পষ্টতই)
  • mvসম্পূর্ণরূপে অনুলিপি করা সমস্ত ফাইলের উত্স ডিরেক্টরিতে তাদের মূল অনুলিপি ছিল
  • যে ফাইলটি কেবলমাত্র আংশিকভাবে অনুলিপি করা হয়েছিল সেটির উত্স ডিরেক্টরিতে মূল আসল রয়েছে

অন্য কথায় সমস্ত মূল ফাইল এখনও অক্ষত ছিল এবং এই ক্ষেত্রে সমাধানটি ছিল কেবল নতুন ডিরেক্টরি মুছতে!


বাহ ... আমি আমার উত্তর আপডেট করেছি, -nসাধারণ ক্ষেত্রে ভাল হয়। আমি mvউত্স কোডটি যাচাই করেছি , এটি উত্সটি একবারে একটি যুক্তি মুছে দেয়।
স্টিফেন কিট

পছন্দ করুন আমি ভাবছিলাম কখন mvউত্সটি মুছে ফেলা হয়। সুতরাং কমান্ড mv foo bar bazসরাতে হবে fooথেকে baz/foo তারপর মূল মুছতে fooতারপর সরানো barথেকে baz/bar..?
the_velour_fog

হ্যা, তা ঠিক; আসলে পসিএক্স এটি নির্দিষ্ট করে (মূলত, যাতে কোনও উত্সের তর্ককে প্রভাবিত করে এমন কোনও ত্রুটি পুরো উত্স স্তরক্রম অক্ষত রাখে)।
স্টিফেন কিট

আমি মনে করি আপনি একটি অসমাপ্ত ফাইলটি খুঁজে পেতে আলাদা করতে পারতেন।
স্টারওয়েভার

1
বাইনারি ফাইলগুলির তুলনা করার cmpপরিবর্তে আপনার ব্যবহার করা উচিত diff। এছাড়াও, উপরোক্ত আপনার আলোচনাটি কেবল তখনই বিভিন্ন ফাইল সিস্টেমের মধ্যে ফাইলগুলি সরিয়ে নিয়ে গেলে বোঝা যায়। একই ফাইল সিস্টেমের মধ্যে ফাইলগুলি সরানোর সময় কোনও অনুলিপি জড়িত নেই।
সাটস ক্যাটসুর

4

আমি কেবল ভেবেছিলাম যে আমি মন্তব্য করব যে কিছু লোক সমান্তরালভাবে জিনিসগুলি চালানোর জন্য মিশ্রণে 'xargs' টস করতে প্রলুব্ধ হতে পারে। এটি আমাকে উইলগুলি দেয় এবং আমি উপরের আরএসএনসি সমাধানটি সত্যিই পছন্দ করি।

সরানো এবং অনুলিপি করা সম্পর্কে যখন ফাইল সিস্টেমের স্টাফগুলি এবং ঠিক আসল মুছে ফেলা হয় তখন ভিএফএস এবং অন্তর্নিহিত ফাইল সিস্টেমটি মুছুন পদক্ষেপে যাওয়ার আগে প্রতি-ফাইলের পারমাণবিকতার গ্যারান্টি দিতে inate সুতরাং লক্ষ্য ফাইলটি সম্পূর্ণরূপে লিখিত হওয়ার আগে এটি বাধাগ্রস্ত হয়ে গেলেও ভিএফএসের সমস্ত লকিং সত্যই কঠোর এবং সমান্তরাল ক্ষেত্রে এমনকি এলোমেলো ডেটা ইন্টারলিভিংয়ের মতো স্টাফ থেকে রক্ষা করে। (আমি লিনাক্স ভিএফএস এবং এনএফএস 4 স্টাফে কাজ করেছি)

মিশ্রণে 'xargs' যুক্ত করা সম্ভবত ডাবল স্যানিটি-যাচাই-বাছাইয়ের পদক্ষেপকে মাথা ব্যাথার মতো করে তোলে, মধ্য ট্রানজিটে একাধিক ফাইল সহ। আমি আরও সিস্টেম স্তরের স্ক্রিপ্টিং চাই। আমার জন্য ভাল অনুস্মারক!

প্রশ্নটি পছন্দ করেছে, কোব্বের পক্ষে ভাল এবং আমাকে আরএসসিএনকে আবার ভালবাসে। চিয়ার্স!


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