কীভাবে "সিপি" খোলা ফাইলগুলি পরিচালনা করে?


15

আমার দুটি পৃথক ডিরেক্টরি রয়েছে। ব্যবহারকারী প্রথমে একটি ফাইল লোড করে। ব্যাকগ্রাউন্ডে চলছে এমন ক্রোনজব রয়েছে যা প্রতি 5 মিনিটের মধ্যে দ্বিতীয় ডিরেক্টরিতে ফাইল অনুলিপি করে।

যদি ব্যবহারকারী তার আপলোড সম্পন্ন না করে এবং ক্রোনজব ফাইলগুলি অনুলিপি করে? নোট করুন যে দুটি ডিরেক্টরি পৃথক ব্যবহারকারীর মালিকানাধীন, ক্রোনজব রুট হিসাবে সম্পাদিত হয়।


এই জাতীয় ক্ষেত্রে কী ঘটে তা দেখতে দয়া করে এই পোস্টটি পড়ুন: unix.stackexchange.com/questions/49299/…
সার্জ

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

নং cpপর্যন্ত ফাইল সম্পূর্ণরূপে আপলোড করা হয় দেরী করবেন না। যেমনটি আমরা প্রত্যাশা করি যে নেটওয়ার্ক হস্তান্তর হারটি একই হোস্টের ভিতরে কেবল একটি লোকেশন থেকে অন্য এক জায়গায় ফাইল অনুলিপি করার চেয়ে কম তবে কোনও এক সময়ে cpফাইলের বর্তমান প্রান্তে পৌঁছে যাবে এবং অনুলিপি বন্ধ করবে। আপনার সমস্যার সমাধানটি সহজভাবে হতে পারে: প্রথমে ব্যবহারকারী কিছু বিশেষভাবে ম্যাংডযুক্ত ফাইল নাম (যেমন উদাহরণস্বরূপ .(বিন্দু চরিত্র)) দিয়ে ফাইল আপলোড করে the দিয়ে শুরু ফাইলের জন্য যে হয় না .
সার্জ

উত্তর:


17

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


ধন্যবাদ, আমি যা জানতে চাইলাম তাই! এড়াতে কি সহজ উপায় আছে? আমি সিপি ম্যান পৃষ্ঠাটি যাচাই করেছিলাম তবে ব্যবহারের মতো কিছুই পাইনি।
স্টিফি

ঠিক কি করতে হবে? ওপেন ফাইল বাদে সব ফাইল কপি করতে হবে? আমি মনে করি না এটি করার কোনও সহজ উপায় আছে (আপনার নিজের স্ক্রিপ্টটি রাইটিন ব্যতীত fuser+ যা ব্যবহার করে cp। এই জাতীয় অনুলিপিটি সত্যই খুব বিশ্বাসযোগ্য নয় It উদাহরণস্বরূপ এটি পাঠ্য সম্পাদককে খোলার কোনও ফাইল অনুলিপি করবে না
ক্রিজিসটফ অ্যাডামস্কি

@ স্টফি, আপনার ক্রোনজবসে আপনি যে ফাইলগুলির সাথে খোলা ফাইলগুলি তালিকাভুক্ত করতে পারেন lsof? এর আউটপুট প্রক্রিয়া করা সহজ হতে বোঝানো হয়। আপনি cpলেখার জন্য খোলার ফাইলগুলিকে ফিল্টার করতে পারেন (উদাহরণস্বরূপ, বলুন )।
ওয়াজটেক রাজেপালা

@ ওয়াজটেকআরজেপালা, আমি এটি একবার দেখব, ধন্যবাদ সম্ভবত আমি একটি ছোট স্ক্রিপ্ট লিখব যা ক্রোনজব দ্বারা সম্পাদিত হয়ে যায়
স্টাফি

@ স্টফি: মনে রাখবেন যে এটি ব্যবহারকারীর দ্বারা চালিত না হলে এটি সত্যই নির্ভরযোগ্য নাও হতে পারে (একই সমস্যা fuserঅবশ্যই রয়েছে) কারণ এই সরঞ্জামটি সমস্ত ফাইল না দেখায়।
ক্রিজিসটফ অ্যাডামস্কি

7

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

এই জাতীয় পরিস্থিতি, যেখানে কোনও ফাইল কোনও প্রযোজক দ্বারা উত্পাদিত হয় এবং একবার সম্পূর্ণ হয়ে গেলে, ভোক্তার দ্বারা সেবন করা সাধারণ common এটির হ্যান্ডেল করার স্বাভাবিক উপায়টি হ'ল নির্মাতাকে একটি অস্থায়ী ফাইল লিখতে হবে যা ভোক্তা সন্ধান করবে না, তারপরে প্রযোজক শেষ হয়ে গেলে ফাইলটি এমন জায়গায় নিয়ে যান যেখানে ভোক্তা এটি খুঁজে পাবেন। কোনও ফাইল (একই ফাইল সিস্টেমে) স্থানান্তরিত করা একটি পারমাণবিক ক্রিয়াকলাপ: কোনও এক সময় গ্রাহকের জন্য ফাইলটি সেখানে না থাকার থেকে পরিবর্তিত হয়।

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


6

দেখে মনে হচ্ছে আপনি একটি ডির সিঙ্ক কাজটি করতে চান।

কারণ -u, - আপডেট বিকল্প optioncp

SOURCE ফাইলটি কেবল গন্তব্য ফাইলের চেয়ে নতুন বা যখন গন্তব্য ফাইলটি অনুপস্থিত তখন অনুলিপি করুন

সুতরাং আপনি এমন একটি ক্রোনজব যুক্ত করতে পারেন cp -auv SOURCEDIR/* DESTDIRযা সেই ফাইলগুলি অনুলিপি করবে যার পরিবর্তনের সময়টি পরিবর্তিত হয়েছে। এর অর্থ DESTDIRশেষ পর্যন্ত সম্পূর্ণ অনুলিপিটি পাবেন যখন আপলোডিং শেষ হবে।

rsyncএকই কাজ করতে পারেন। যেমন rsync -av SOURCEDIR/ DESTDIR,।

যদিও -a বিকল্প প্রয়োগ করা হয়েছে, কিছু নির্দিষ্ট বৈশিষ্ট্য (যেমন, মালিকানা) কেবলমাত্র সুপার-ব্যবহারকারী দ্বারা সংরক্ষণ করা যেতে পারে।

দেখুন man cp, man rsyncবিস্তারিত জানার জন্য।


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