7 দিনের চেয়ে পুরানো ফাইলগুলি স্বয়ংক্রিয়ভাবে মুছুন


17

আমি লিনাক্সে সম্পূর্ণ নুব কিন্তু আমি এটির স্তব্ধতা পেতে শুরু করছি। সুরক্ষা ভিডিও ফাইলগুলি ব্যাকআপ নেওয়ার জন্য আমার কাছে একটি উবুন্টু সার্ভার 16.04 চলছে একটি এফটিপি সার্ভার। ফাইলের মত ফোল্ডারে সংরক্ষণ করা হবে: /home/securityfolder1, /home/securityfolder2, /home/securityfolder3ইত্যাদি।

মনে রাখবেন যে প্রতিটি securityfolderNপৃথক ব্যবহারকারী।

যেহেতু আমি চাই না যে আমার হার্ড ড্রাইভগুলি পুরো সময়টি পূর্ণ হয়, তাই আমি এই ফোল্ডারে প্রতিদিন days দিনের চেয়ে পুরানো ফাইলগুলি মুছতে চাই।


/homeসাধারণত প্রতিটি ব্যবহারকারীর জন্য একটি সাবফোল্ডার থাকে। যদি আপনি আপনার ব্যাকআপগুলি পৃথক ব্যবহারকারী হিসাবে সংরক্ষণ করতে না চান (সত্যিই ভাল ধারণা নয়) তবে আপনার অন্য কোনও স্থান বিবেচনা করা উচিত, যেমন /home/security/backup1ইত্যাদি।
মেলিবিয়াস

@ মেলিবিয়াস আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ, প্রত্যেক / সিকিউরিটিফোল্ডার আলাদা ব্যবহারকারী, আমি তা উল্লেখ করতে ভুলে গেছি।
জ্যাকো ভ্যান ডি উইজগার্ট

উত্তর:


28

প্রথমে, এই আদেশটি /homeযার নাম দিয়ে শুরু হবে এমন কোনও উপ-ডিরেক্টরিতে 7 দিনের চেয়ে পুরানো সমস্ত ফাইল সন্ধান এবং মুছে ফেলবে securityuser:

find /home/securityuser* -mtime +6 -type f -delete

আপনার প্রয়োজন -mtime +6এবং এটি নয় +7কারণ -mtime24 ঘন্টা সময় গণনা করা হয়। ( একইভাবে কাজ করে) এর -atimeঅংশে ব্যাখ্যা করা হয়েছে :man find-mtime

   -atime n
          File  was  last  accessed n*24 hours ago.  When find figures out
          how many 24-hour periods ago the file  was  last  accessed,  any
          fractional part is ignored, so to match -atime +1, a file has to
          have been accessed at least two days ago.

সুতরাং, 7 বা তারও বেশি দিন আগে সংশোধিত একটি ফাইল সন্ধান করতে আপনার 6 দিনেরও বেশি আগে সংশোধিত ফাইলগুলি সন্ধান করতে হবে -mtime +6

পরবর্তী পদক্ষেপটি এই কমান্ডটি প্রতিদিন একবার চালানো হয়। যেহেতু প্রত্যেকে securityuserNআলাদা আলাদা ব্যবহারকারী (আপনি সেই সেটআপটি পুনর্বিবেচনা করতে চাইতে পারেন, এটি সবকিছুকে আরও জটিল করে তোলে), এটি অবশ্যই মূল হিসাবে চালিত হবে। সুতরাং, সম্পাদনা করুন /etc/crontab:

sudo nano /etc/crontab

এবং এই লাইনটি যুক্ত করুন:

@daily root find /home/securityuser* -mtime +6 -type f -delete

এটি findকমান্ডটি দিনে একবার চালাবে এবং ফাইলগুলি মুছবে।


+1 পেরেকটি আরও গভীরভাবে চালনা করা এবং মেলিবিয়াসের ওপিকে দেওয়া পরামর্শটি পুনরুদ্ধার করা, যে find '/home/securityuser/*' -mtime +6 -type f -delete(ব্যবহারকারীর সৃষ্টিতে সমস্ত প্রাসঙ্গিক এবং যথাযথ পরিবর্তন সহ) সাধারণত find '/home/securityuser*' -mtime +6 -type f -delete(পথের মধ্যে কোনও স্ল্যাশ নয়) এর চেয়ে ভাল ধারণা হতে পারে ...?
সিবিহে

@ সিবিহ না, লক্ষ্য ডিরেক্টরিগুলি বলা হয় /home/securityuserN, সুতরাং স্ল্যাশ ছাড়া সেগুলি পাওয়া যাবে না।
টেরডন

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

1
আমার কাছ থেকে আমি আরএইচইএল-তে চালাচ্ছি বলে কেবল একটি বিশদ নোট করুন: ওয়াইল্ডকার্ড পথে কাজ করে নি। আমাকে এটিকে রেখে দিতে হয়েছিল -name:find /home/ -name 'securityuser*' -mtime +6 -type f -delete
স্টিলিওস অ্যাডামেন্টিডিস

1
@ স্টেলিওস এডম্যান্টিডিস ওহ ওয়া, আমি তা পুরোপুরি মিস করেছি! হ্যাঁ, আমি উদ্ধৃত করার পরে আসল সংস্করণটি কাজ করবে না 'securityuser*'। ওয়াইল্ডকার্ডটি শেল দ্বারা প্রসারিত করা উচিত, দ্বারা নয় find, সুতরাং এটি হওয়া উচিত securityuser*(কোনও উদ্ধৃতি নেই)। আপডেট উত্তর দেখুন। এটি উল্লেখ করার জন্য ধন্যবাদ, স্টিলিও, আমি বিশ্বাস করতে পারি না কেউ এর আগে খেয়াল করেছে! তি ভ্লাকাস!
টেরডন

4

আমি আমার জ্ঞান অনুযায়ী:

findকমান্ডটি এভাবে চেষ্টা করুন :

find ./dirc/* -mtime +6 -type f -delete

./dirc/* : is your directory (Path)
-mtime +6 : modified more than 6 days ago (therefore, at least 7 days ago)
-type f : only files
-delete : no surprise. Remove it to test before like rm

আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ. ./Dirc/* এর অর্থ:। / হোম / সুরক্ষাফোল্ডার 1/* বা এটি ভুল?
জ্যাকো ভ্যান ডি উইজগার্ট

আমি আমার ভার্চুয়ালবক্সে এটি চেষ্টা করেছি find /home/jacco/ -mtime +1 -type f -deleteএবং এটি কাজ করে বলে মনে হচ্ছে। আমি কীভাবে এটি স্বয়ংক্রিয় করতে পারি?
জ্যাকো ভ্যান ডি উইজগার্ট

একটি স্ক্রিপ্ট ফাইল তৈরি করুন এবং স্ক্রিপ্ট ব্যবহার করে এই কমান্ডটি ফায়ার করুন যদি এটি প্রারম্ভিক প্রক্রিয়াতে আপনার স্ক্রিপ্ট ফাইলটি চালানোর চেয়ে বেশি কাজ করে।
মৌলিক প্যাটেল

আমি ঠিক এখানে সুপারনব এর মতোই স্ক্রিপ্টটি তৈরির অংশটি বোঝাচ্ছি, এর অর্থ কি একটি ফাইল #!/bin/bashএবং এর অধীনে কোডটি আছে? নাকি আমি ঠিক এখানে বোকা?
জ্যাকো ভ্যান ডি উইজগার্ট

2
@ মেলিবিয়াস না, থ পাথটি উদ্ধৃত করা উচিত নয়, বিশেষত যখন গ্লোব অক্ষর রয়েছে। আপনি শেল দ্বারা এটি প্রসারিত করতে চান এবং উদ্ধৃতি এটিকে ব্লক করবে। উদাহরণস্বরূপ চেষ্টা করুন,: find '/u*' -name local-name "foo*"গ্লোব অক্ষর ধারণ করার সময় এটির মতো নির্দেশাবলীর উদ্ধৃতি দেওয়া উচিত।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.