LINUX.ORG.RU
ФорумAdmin

Сортировка каталогов в каталогах по времени

 , , ,


0

1

Помогите решить задачу! Нужно отсортировать каталоги в каталогах а именно есть исходный вид

  • /home/admin/logs/server-1/logdir1(Aug 3)/logs.txt
  • /home/admin/logs/server-1/logdir2(Aug 5)/logs.txt
  • /home/admin/logs/server-1/logdir3(Aug 1)/logs.txt
  • /home/admin/logs/server-3/logdir6(Aug 5)/logs.txt
  • /home/admin/logs/server-5/logdir4(Aug 1)/logs.txt

#logdir - UUID (0a1f901d-f1f7-4049-bbe9-642132fbf163) рандомное имя и создан в разное время

Нужно сделать скопировать в папку backups оставить имя сервера в качестве имени каталога и в каталоге сервера создать папку с датой создания директории с логами

  • /home/admin/logs/backups/server-1/03.08.2021/logdir1(Aug 3)/logs.txt
  • /home/admin/logs/backups/server-1/05.08.2021/logdir2(Aug 5)/logs.txt
  • /home/admin/logs/backups/server-1/01.08.2021/logdir3(Aug 1)/logs.txt
  • /home/admin/logs/backups/server-3/05.08.2021/logdir6(Aug 5)/logs.txt
  • /home/admin/logs/backups/server-5/01.08.2021/logdir4(Aug 1)/logs.txt

Использовал это скрипт, он сортирует всё по датам в каталоги но без имени сервера (со всех серверов по дате в кучу)

#/bin/bash

SRC_DIR="/home/admin/logs/*/"
DST_DIR="/home/admin/logs"

for F in ${SRC_DIR}/*; do
    SUB=$(date -d"$(stat -c%y "${F}")" +%d-%m-%Y)
    mkdir -p "${DST_DIR}/${SUB}"
    cp -r "${F}" "${DST_DIR}/${SUB}/"
done

Правильнее будет настроить на таргете syslogd, слать логи со всех машин на него. И ротацию логов натравить на каждую диру, само собой.

mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от mord0d

к сожалению не получится поскольку серверов около 250шт, а logdir - UUID это вм которые плодятся порядком 5000 за день, на данный момент количество файлов привышает 10 лямов, а директорий больше 2х лямов

symbyon1
() автор топика

Это не «Помогите решить задачу», а «Решите за меня задачу». В первом посте вам уже ответили, с такими вопросами в Job.

anc ★★★★★
()

Достаточно очевидно, что тебе нужен вложенный цикл, что-то вроде:

  SRC_DIR=/home/admin/logs/
  for S in "${SRC_DIR}"/* ; do
    # здесь ты можешь получить имя сервера
    SN="${S##*/}"
    # тут можно создать каталог ${SRC_DIR}/backups/${SN}
    for F in "${S}"/* ; do
      # ... ну а тут всё остальное
    done
  done

ABW ★★★★★
()
Ответ на: комментарий от ABW

Да, у тебя 'backups' выглядит как имя сервера, надо либо вынести его в другое место, либо как-то предохраняться.

ABW ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.