আনুমানিক ফাইল সিস্টেম জুড়ে পারমাণবিক পদক্ষেপ?


16

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

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

তবে, কোনও স্ক্রিপ্ট লিখতে এবং ডিবাগ করাতে মনে হয় এটি এই কাজের জন্য ওভারকিল। এমন কোনও উপায় বা হাতিয়ার রয়েছে যা ইতিমধ্যে এটি স্থানীয়ভাবে করে?


8
আমি বুঝতে পারি একটি এক্সআই সমস্যা আপনার এটার দরকার কেন?
মুরগি -

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

1
@ যখনই আমার এটি দরকার কারণ আমার কাছে বেশ কয়েকটি ক্যাশে রয়েছে যা বিভিন্ন স্টোর থেকে পড়ে, তবে একটির সক্ষমতা নিকটে এবং এটিকে পরিষেবা থেকে সরানো দরকার। তদনুসারে, এটি প্রতিটি ফাইল, এটি যে কোনও অবস্থানে উপস্থিত থাকলে, সম্পূর্ণ এবং অক্ষত থাকা প্রয়োজন। অন্যথায়, স্থানান্তর শুরু এবং শেষের মধ্যে একটি রেস শর্ত রয়েছে যেখানে একটি ক্যাশে অসম্পূর্ণ ফাইলটি ধরে ফেলতে পারে (এবং ধরে রাখতে পারে)।
নীল 2000

উত্তর:


27

rsyncঅস্থায়ী ফাইলের নামগুলিতে অনুলিপি করুন (যেমন Rsync অস্থায়ী ফাইল এক্সটেনশন এবং rsync দেখুন - এটি--inplace বিকল্পটি ব্যবহার না করা হলে এটি স্থানান্তরকালে কোনও টেম্প ফাইল তৈরি করে? ) সফলভাবে ফাইলটি স্থানান্তরিত হওয়ার পরে এটি তাদের নতুন নামকরণ করে। rsyncকেবলমাত্র আংশিক স্থানান্তরিত কোনও গন্তব্য ফাইলগুলি মুছে ফেলে (যেমন ডিস্ক পূর্ণ বা অন্যান্য ত্রুটির কারণে)।

একটি --remove-source-filesবিকল্প রয়েছে যা উত্স ফাইল (গুলি) সফলভাবে স্থানান্তরিত করার পরে মুছে ফেলবে। দেখুন rsyncআরো বিস্তারিত জানার জন্য man পৃষ্ঠা।

এগুলি একসাথে রেখে আপনি এমন কিছু ব্যবহার করতে পারেন:

rsync -ax --remove-source-files source/ target/

এই বিকল্পটি "আগত" সারি থেকে ফাইলগুলি সরানো বা ডিরেক্টরিতে যেখানে প্রক্রিয়া করা হবে তার অনুরূপ কাজের জন্য বিশেষভাবে কার্যকর।

বিকল্পভাবে, যদি এটি একবারে বন্ধ আয়না হয়, তবে কেবল বিকল্পটি rsyncছাড়াই ব্যবহার করুন --remove-source-files। আপনি চাইলে / প্রয়োজনে পরে উত্স ফাইলগুলি মুছতে পারেন।


আমি ভেবেছিলাম কাজের জন্য একটি ভাল সরঞ্জাম থাকবে। ধন্যবাদ!
নীল 2000

@ নিলস 2000 আমি মনে করতে পারছি না যে আমি আগে আরএসসিএনসি বিকল্পটি ব্যবহার করেছিলাম তবে আপনি যা করতে চেয়েছিলেন তা কি ধরণের কাজ করতে rsyncপারে এবং আমি জানি যে এটি কোনও অস্থায়ী নাম দিয়ে ফাইল স্থানান্তর করেছে (আপনি যদি না ব্যবহার করেন --inplace) তবে আমি তাকিয়েছিলাম মধ্যে man rsyncএবং পাওয়া --remove-source-filesrsyncপ্রায় কোনও ফাইল স্থানান্তর কাজের জন্য প্রথমে যাচাই করার জন্য একটি ভাল সরঞ্জাম।
ক্যাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.