您好,登錄后才能下訂單哦!
在運(yùn)維工作中經(jīng)常遇到要管理備份、日志等與時(shí)間戳有關(guān)的文件,例如刪除超過(guò)10天的備份/日志文件,保存最新的10個(gè)的備份/日志文件等。
“刪除超過(guò)10天的備份/日志文件”是用的比較多的一種,通常用于定時(shí)計(jì)劃任務(wù),每次產(chǎn)生這些文件都是規(guī)律的時(shí)間點(diǎn)。
“保存最新的10個(gè)備份/日志文件”這種需求通常用在不定時(shí)的產(chǎn)生備份(例如每次手動(dòng)執(zhí)行一次產(chǎn)生)和日志文件(超過(guò)一定的大小則切割)。
兩種不同的需求對(duì)應(yīng)不同的方法去實(shí)現(xiàn),無(wú)論使用什么樣的方法都要找出所需要操作的文件或者去除不需要的文件。
Linux Bash Shell代碼 “刪除超過(guò)10天的備份/日志文件” 找出這些超過(guò)10天的文件,然后執(zhí)行刪除:
function clean_old_files_older_than_day(){ save_days=10 files_ops="/data/docker/logs/myApp/" need_clean=$(find ${files_ops} -name "*.log" -mtime +${save_days} -exec ls '{}' \;) if [ ! -z ${need_clean} ]; then echo "Old logs have been found, clean old logs now. " find -L ${files_ops} -maxdepth 1 -name "*.log" -a ! -name "^." -mtime +${save_days} -exec rm -rf '{}' \; else echo "All logs are not expired, skipping. " fi }
Linux Bash Shell代碼 “保存最新的10個(gè)備份/日志文件” 找出這些除了最新的10個(gè)文件之外的文件,然后執(zhí)行刪除:
function keep_some_newest_files(){ num_save=10 files_ops="/data/backup/db/mysql/" num_files=$(find ${files_ops} -type d -printf "%C@ %p\n" | sort -n | wc -l) if test ${num_files} -gt ${num_save};then echo "total number of files is $num_files." num_ops=$(expr ${num_files} - ${num_save}) echo "$num_ops files are going to be handled." list_ops=$(find ${files_ops} -type d -printf "%C@ %p\n" | sort -n | head -n${num_ops} | awk -F '[ ]+' '{print $2}') # IFS=' '$'\t'$'\n', If IFS is unset, or its value is exactly <space><tab><newline> old_IFS=$IFS IFS=" " for file_ops in ${list_ops};do echo "$file_ops" test -d ${file_ops} && rm -rf ${file_ops} done IFS="$old_IFS" else echo "total number of files is $num_files." echo "0 files are going to be handled, skipping." fi }
tag:日志文件管理,備份文件管理,find刪除文件
--end--
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。