লোগ্রোটেট: নন-লগ ফাইলগুলি ঘোরানো হচ্ছে?


17

আমার কাছে একটি ব্যাকআপ স্ক্রিপ্ট রয়েছে যা বিভিন্ন ফাইল এবং ডিরেক্টরিকে সংকুচিত করে এবং .tgz সংরক্ষণাগার তৈরি করে। ফাইলগুলির নামকরণ করা হয়েছে, যেমন

...
backup_2010-10-28.tar.gz
backup_2010-10-29.tar.gz
backup_2010-10-30.tar.gz
backup_2010-10-31.tar.gz
backup_2010-11-01.tar.gz

আমি এই ফাইলগুলি পরিচালনা করতে চাই তাই কেবলমাত্র শেষ 5 টি ব্যাকআপ রাখা হবে, পুরানো ফাইলগুলি মুছে ফেলা হবে।

আমি এটি করতে লোগ্রোটেট ব্যবহার করতে পারি? এগুলি লগ ফাইল নয় এবং ইতিমধ্যে সংকুচিত হয়েছে। তারা / রুটে রয়েছে এবং / ভার / লগ-এ নেই - আমি কি এখনও এটি ব্যবহার করতে পারি?

ধন্যবাদ

উত্তর:


3

লোগ্রোটেট ফাইলগুলি ঘোরায়, সুতরাং উত্তরটি হ্যাঁ - সম্ভবত এবং যদি পর্যাপ্ত অনুমতি না থাকে তবে সেগুলি / ব্যাকআপ বা কোনও কিছুতে রাখুন। ঘোরানো লগগুলি কোন গ্রুপ এবং ব্যবহারকারীর রয়েছে :-) দেখুন।

লোগ্রোটেটে সংক্ষেপণের জন্য বিকল্প রয়েছে, যদি "সংক্ষেপণ" কনফিগার না করা হয় - তবে তা চেষ্টা করবে না। এছাড়াও আপনার ক্ষেত্রে, "ঘোরান 5" বিকল্পটি।

/Etc/logrotate.d এ দেখুন (বা এটি আপনার সিস্টেমে কোথায় থাকে)


26

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

তারিখের ডাকটিকিট ছাড়াই সর্বাধিক সাম্প্রতিক ব্যাকআপ তৈরি হওয়া অবধি আপনি এটি বর্ণনা করার মতোভাবে কাজ করতে পারবেন। আপনি যদি ব্যাকআপ প্রক্রিয়াটি /root/backup.tar.gzউদাহরণস্বরূপ তৈরি করেন তবে আপনি নিম্নলিখিত লোগ্রোটেট কনফিগারেশনটি ব্যবহার করতে পারেন:

/root/backup.tar.gz {
    rotate 5
    nocompress
    dateext
    dateformat _%Y-%m-%d
    extension .tar.gz
    missingok
}

বিকল্পগুলির দ্রুত পাল্টানো এখানে:

  • rotate 5 - মোছার আগে 5 টি আবর্তন রাখুন
  • nocompress - ঘোরার পরে ফাইলগুলি সংকুচিত করবেন না
  • dateext - সংখ্যা বাড়ানোর পরিবর্তে ঘূর্ণন এক্সটেনশন হিসাবে তারিখটি ব্যবহার করুন
  • dateformat _%Y-%m-%d - আপনি যে তারিখ এক্সটেনশন ফর্ম্যাটটি ব্যবহার করতে চান তা সেট করুন
  • extension .tar.gz- .tar.gzঘূর্ণন এক্সটেনশনের পরে আসুন
  • missingok - আমরা যে ফাইলটি ঘোরতে চাইছি তা যদি সেখানে না থাকে তবে এটি নিয়ে চিন্তা করবেন না এবং এগিয়ে যান (ডিফল্টটি একটি ত্রুটি নিক্ষেপ করা হয়)

আশাকরি এটা সাহায্য করবে!


1
চমৎকার কাজ. এটি পড়ে আমি কয়েকটি জিনিস শিখেছি। আমি যদিও যুক্ত করতে চাই যে কিছু বিতরণ, বিশেষত রেডহ্যাট ইএল, এমন বিকল্পগুলি সরিয়ে নিতে ঝোঁক যা "এন্টারপ্রাইজ রেডি" নয়, তাই ওয়াইএমএমভি।
জেরোলাটাইম

এই সমাধান মতে stackoverflow.com/questions/14858752/... logrotate টাস্ক সম্পাদন করতে পারে।
পিটার

22

এটি করার জন্য আপনাকে লোগ্রোটেট ব্যবহার করতে হবে না। কেবল এই জাতীয় আদেশ ব্যবহার করুন:

ls -1 /root/backup_* | sort -r | tail -n +6 | xargs rm > /dev/null 2>&1

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


তবে এটি ঘুরবে না ....
সরল ব্যবহারকারী

প্রশ্নের উত্তর দেয় না।
kubanczyk

4
প্রশ্নটি হ'ল পাঁচটি সাম্প্রতিক ব্যাকআপ রাখে যা এটি ঠিক করে দেয়। এমনকি সহজ: ls -t1 / মূল / ব্যাকআপ_ * | লেজ -n +6 | xargs rm -f
yoyoma2

এই আমার প্রশ্নের উত্তর । দুঃখের বিষয় হ'ল গুগল-ফু এর সাথে আমি খুঁজে পেলাম মূল প্রশ্নটি সবচেয়ে কাছের।
সুকিমা

0

আমার ঠিক একই অবস্থা ছিল। লোগ্রোটেটটি খুব দুর্দান্ত লাগছে তবে এটি আমার পক্ষে 100% এ কার্যকর হয়নি কারণ এটি ডেটা এবং ফাইলের নামের সাথে মেলে না।

সুতরাং, বিভ্রান্তি এড়াতে, আমি আমার শেষ ব্যাকআপটি রাখার জন্য আমার বর্তমান ব্যাকআপ তৈরি করার পরে কার্যকর করার জন্য নিম্নলিখিত লাইনটি অন্তর্ভুক্ত করার সিদ্ধান্ত নিয়েছি।

আমার লগগুলি হ'ল:

  • tbl-bcx-20180308_010501.tar.bz2
  • tbl-bcx-20180307_010501.tar.bz2
  • tbl-bcx-20180306_010501.tar.bz2

আমার ব্যাকআপ-স্ক্রিপ্টে নতুন লাইন (উপরের মন্তব্যের ভিত্তিতে)

  • সন্ধান / বিসিএক্স / ডাম্পসকিএল / -প্রকার চ | সাজানো -আর | লেজ -n +6 | xargs আরএম

শুভেচ্ছা সহ,


-1

আপনি এটি ম্যানুয়ালি ঘোরান।

rotating_logger()
{

_LOG_FILE_=${1}
_MESSAGE_TO_ECHO_=${2}

_LOG_FILE_BYTES_SIZE_=`wc -c ${_LOG_FILE_} | awk '{print $1}'`

#echo "_LOG_FILE_BYTES_SIZE_ : ${_LOG_FILE_BYTES_SIZE_}"

# in MB
if [ ${_LOG_FILE_BYTES_SIZE_} -gt ${_FILE_SIZE_IN_BYTES_} ] ; then
        #cat /dev/null > ${_LOG_FILE_}
         for (( i=${_LOG_ROTATE_MAX_INDEX_}; i>=1; i-- ))
        do
                 if [ $i -eq ${_LOG_ROTATE_MAX_INDEX_} -a -f ${_LOG_FILE_}.$i ] ; then
                        rm -rf ${_LOG_FILE_}.$i
                 fi

                if [ $i -gt 10 ] ; then
                        rm -rf ${_LOG_FILE_}.10
                elif [ $i -eq 9 -a -f ${_LOG_FILE_}.9 ] ; then
                       mv ${_LOG_FILE_}.9 ${_LOG_FILE_}.10
                elif [ $i -eq 8 -a -f ${_LOG_FILE_}.8 ] ; then
                       mv ${_LOG_FILE_}.8 ${_LOG_FILE_}.9
                elif [ $i -eq 7 -a -f ${_LOG_FILE_}.7 ] ; then
                       mv ${_LOG_FILE_}.7 ${_LOG_FILE_}.8
                elif [ $i -eq 6 -a -f ${_LOG_FILE_}.6 ] ; then
                       mv ${_LOG_FILE_}.6 ${_LOG_FILE_}.7
                elif [ $i -eq 5 -a -f ${_LOG_FILE_}.5 ] ; then
                       mv ${_LOG_FILE_}.5 ${_LOG_FILE_}.6
                elif [ $i -eq 4 -a -f ${_LOG_FILE_}.4  ] ; then
                       mv ${_LOG_FILE_}.4 ${_LOG_FILE_}.5
                elif [ $i -eq 3 -a -f ${_LOG_FILE_}.3  ] ; then
                       mv ${_LOG_FILE_}.3 ${_LOG_FILE_}.4
                elif [ $i -eq 2 -a -f ${_LOG_FILE_}.2  ] ; then
                       mv ${_LOG_FILE_}.2 ${_LOG_FILE_}.3
                elif [ $i -eq 1 -a -f ${_LOG_FILE_}.1 ] ; then
                       mv ${_LOG_FILE_}.1 ${_LOG_FILE_}.2
                fi
        done
        mv ${_LOG_FILE_} ${_LOG_FILE_}.1
        touch ${_LOG_FILE_}
fi

echo `date +%Y-%m-%d:%H:%M:%S` : "${_MESSAGE_TO_ECHO_}" >> ${_LOG_FILE_}
#echo "" >> ${_LOG_FILE_}
}

এখন লগ ইন তথ্য রাখার জন্য, না

rotating_logger <file_path> "Welcome world!"

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