ডিরেক্টরি কাঠামো অক্ষত রাখার সময় কীভাবে আমার সিস্টেমটি একটি নির্দিষ্ট ডিরেক্টরিতে সমস্ত ফাইল মুছে ফেলা যায়?


12

আমার মেশিনে আমার একটি ডিরেক্টরি আছে, এটিকে আমার নিজের tmpডিরেক্টরি অনুসারে ভাবেন তবে এটি আমার ~ডিরেক্টরিতে রয়েছে। এবং আমি এটি তৈরি করতে চাই যাতে আমার সিস্টেম প্রতি 3 ঘন্টা অন্তর সমস্ত ফাইল মুছে দেয় (যদিও কোনও ডিরেক্টরি কাঠামো অক্ষত রাখে তবে এখনও ডিরেক্টরিগুলির সমস্ত স্তরের সমস্ত ফাইল মুছে ফেলা হয়) যে ডিরেক্টরিটি এক দিনের চেয়েও পুরানো।

আমি জিনোম ৩.১৮ সহ উবুন্টু জিনোম ১৫.১০ চালাচ্ছি, এটি কি করা যায়? এবং যদি তা হয়, কিভাবে? আমি চাই যে এটির সাথে কোনও ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন নেই সম্পূর্ণরূপে স্বয়ংক্রিয় করা হোক। আমি লগইন করার সময় এটি স্বয়ংক্রিয়ভাবে শুরু হওয়া উচিত, তাই প্রতিটি প্রারম্ভকালে আমার কিছু চালানোর দরকার নেই।

উত্তর:


21

ব্যবহার find:

find ~/tmp -type f -mtime +0 -delete
  • ~/tmp ডিরেক্টরিটি পুনরাবৃত্তভাবে অনুসন্ধান করা হবে, সেই অনুযায়ী এটি পরিবর্তন করুন

  • -type f শুধুমাত্র ফাইল অনুসন্ধান করবে

  • -mtime +0 এটি কোনও ফাইলের সাথে মিলবে যদি এটি এক দিন বা আরও আগে সর্বশেষ পরিবর্তন করা হয়েছিল

  • -delete কেবল ম্যাচ করা ফাইল (গুলি) সরিয়ে ফেলবে

এখানে ক্যাচটি রয়েছে -mtime +0, বেশিরভাগটি ব্যবহারের কথা ভাবতে পারে -mtime +1তবে findদিনগুলি গণনার সময় কোনও ভগ্নাংশের সময়টিকে উপেক্ষা করবে। সুতরাং, -mtime +1অন্তত 2 দিন আগে শেষ পরিবর্তনটি করা হলে কোনও ফাইলের সাথে মিলবে।

উদ্ধৃতি man find, -mtimeএকই সময় নির্ধারণী সম্মেলন রয়েছে -atime:

-টিমে এন

ফাইলটি সর্বশেষে n * 24 ঘন্টা আগে অ্যাক্সেস করা হয়েছিল। যখন ফাইলটি সর্বশেষ 24 ঘন্টা সময় আগে অ্যাক্সেস করা হয়েছিল তা খুঁজে বের করুন, কোনও ভগ্নাংশের অংশ উপেক্ষা করা হবে, সুতরাং -টিমেট +1-এর সাথে মেলে, কমপক্ষে দুই দিন আগে কোনও ফাইল অ্যাক্সেস করতে হবে।

আরও মনে রাখবেন যে আপনি যদি নির্ভুলতা চান তবে আপনার কয়েক মিনিটের মধ্যে সময় নির্দেশ করার -mminবিকল্পটি দেখতে findহবে।

এটি 3 ঘন্টা পরে পর্যায়ক্রমে চালাতে, আপনি একটি cronএন্ট্রি যুক্ত করতে পারেন ।

চালান crontab -eএবং যোগ করুন:

00 */3 * * * /usr/bin/find ~/tmp -type f -mtime +0 -delete

zshফাইলগুলি সরাতে ব্যবহার :

rm ~/tmp/**/*(.-m+0)

যুক্ত করা হচ্ছে cron:

00 */3 * * * /usr/bin/zsh -c 'rm ~/tmp/**/*(.-m+0)'

6

আপনার 1 দিনের চেয়ে পুরানো সমস্ত ফাইল /home/username/directoryএবং এর নীচে থাকা সমস্ত ডিরেক্টরি মুছে ফেলাতে সক্ষম হওয়া উচিত :

find /home/username/directory -type f -mtime +1 -delete

এবং এই আদেশটি প্রতি তিন ঘন্টা অন্তর্ভুক্ত করার জন্য এটি ক্রোন জব হিসাবে সেট করে:

crontab -e

তারপরে ক্রন্টবের ভিতরে:

0 */3 * * * find /home/username/directory -type f -mtime +1 -delete

যা আপনার কমান্ডটি প্রতি তিন ঘন্টা সময় (অর্থাৎ মিনিট 0) চালায়, তাই সকাল 3:00, সকাল 6:00 ইত্যাদি etc.

যান cronএবং crontab manpagesতাদের উপর আরও তথ্যের জন্য।


4
এই উত্তরটি আসলে ভুল, দয়া করে অন্য উত্তরটি দেখুন

4
যেহেতু এই উত্তরটি ভুল , এবং প্রকৃতপক্ষে অন্য উত্তরের চেয়ে বেশি কিছু বলে না, দয়া করে হয় আপনার উত্তরটি উন্নত করুন যাতে এটি অন্য উত্তরের চেয়ে সঠিক এবং ভাল হয় , বা এটি মুছুন।

5
@ পরানয়েড পান্ডা আমি বুঝতে পারি যে আপনি উচ্চ-মানের উত্তর চান, তবে মূলত একই জিনিস দু'বার মন্তব্য করা বরং অপ্রয়োজনীয় এবং বিশেষত নতুন ব্যবহারকারীর জন্য আক্রমণাত্মক হিসাবে দেখা যেতে পারে।
RPIAwesomeness

2
@ আরপিআইউইনিউসনেস: ঠিক আছে, আমি দ্বিতীয়বার মন্তব্য করেছি কারণ আমার প্রথম মন্তব্য সম্পাদনা করার জন্য আমি খুব বেশি সময় পেলাম, এবং আমি এটাও বলতে চেয়েছিলাম যে তাদের উত্তরটি মুছে ফেলা উচিত যা সম্ভবত আমার প্রথম মন্তব্য থেকে প্রয়োজনীয়ভাবে বোঝা যায়নি, যদিও আমি তারা চাইছিল না যে তারা আক্রমণে নেমে আসে এবং যেমন আমি কেবল বলছিলাম যে তারা ভুল উত্তর দিয়েছে এবং এখন এটি অবশ্যই মুছে ফেলতে হবে, তাই আমি উন্নতি সম্পর্কে কিছুটা যুক্ত করেছি। তবে আমি দেখতে পাচ্ছি যে কীভাবে এটি ভুল উপায়ে নেওয়া যেতে পারে, তাই আমি আপনাকে মনে রাখতে বলি: একটি পান্ডা কেবল তখনই আক্রমণাত্মক হয় যখন আপনি তার বাঁশটি নিয়ে যান। ;-)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.