আমি কীভাবে প্রচুর লগ ফাইলগুলিকে প্রতি ঘূর্ণায়মানের পৃথক উপ-ডিরেক্টরিতে ঘুরতে পারি?


12

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

আমি লোগ্রোটেট ব্যবহার করে এগুলির বেশিরভাগটি স্থানের জায়গায় ঘোরাঘুরি করে বা এমনকি olddirনির্দেশকে ব্যবহার করে একটি ভিন্ন ভিন্ন ডিরেক্টরিতে স্থানান্তরিত করতে পারি তবে প্রতি ঘূর্ণায়নের জন্য পৃথক উপ-ডিরেক্টরিগুলি তৈরির জন্য সমাধান খুঁজতে আমার সমস্যা হচ্ছে। আমি কীভাবে এটি অর্জন করতে পারি ?:

Logs to rotate: /var/log/example/*

Desired target directories (keeping a week):
    /var/log/example/20121006/*
    [ ... ]
    /var/log/example/20121012/*

উত্তর:


9

আপনি postrotateনির্দেশে একটি বাহ্যিক স্ক্রিপ্ট কল করতে সক্ষম হওয়া উচিত :

postrotate
  /path/to/your.sh
endscript

এবং সেই স্ক্রিপ্টটি চলমান করণে যেমন:

#!/bin/bash

newdir=/var/log/example/`date +%Y%m%d`

mkdir $newdir
mv /var/log/example.1.gz $newdir

find /var/log/example -mindepth 1 -maxdepth 1 -mtime +7 \
  -type d -print0 | xargs -0 rm -rf

তবে কেবল dateextনির্দেশটি ব্যবহার করা আরও সহজ হতে পারে । এটির সাথে ঘোরানো ফাইলগুলি টাইমস্ট্যাম্পের সাথে যুক্ত করা হবে (যদিও অন্য কোনও ডিরেক্টরিতে সরানো হয়নি)।

logrotate(8)উভয় নির্দেশিকা সম্পর্কে বিশদ জন্য দেখুন ।


মনে হচ্ছে postrotateএটি কৌশলটি করবে। আমার কেবলমাত্র যুক্ত করা দরকার হ'ল পুরানো ডিরেক্টরিগুলি যা নির্দিষ্ট গুনের বেশি বা একটি নির্দিষ্ট তারিখের চেয়ে পুরানো।
ডেভ ভুলেজ

1
আপডেট উত্তর দেখুন। find | xargsকমান্ডের সব তাৎক্ষণিক সাবডিরেক্টরি মুছে ফেলতে উচিত /var/log/exampleযদি তারা শেষ পরিবর্তন হয়েছিল চেয়ে বেশি 7 দিন আগে।
আনসার ভিচার্স

1

আপনার olddirকনফিগারেশন ফাইলটিতে ব্যবহারের নির্দেশনা রয়েছে।

ডকুমেন্টেশন থেকে:

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

উল্লেখ : https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html

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