#!/bin/sh
# script originally located on https://newbedev.com/logrotating-files-in-a-directories-and-its-subdirectories
basedir=/var/log/apache2/
#destdir=${basedir} # if you want rotated files in the same directories
#destdir=/var/log/archivedir/ #if you want rotated files somewhere else
destdir=/var/log/apache2
#config_file=/wherever/you/keep/it
config_file=/etc/logrotate.d/apache_subdirs
> ${config_file} #clear existing config_file contents

subfolders=$(find ${basedir} -type d)

for ii in ${subfolders}
do
    jj=${ii:${#basedir}} #strip off basedir, jj is the relative path

    #append new entry to config_file
    echo "${basedir}${jj}/* {
        olddir ${destdir}${jj}/
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        daily
        rotate 5
    }" >> ${config_file}

    #add one line as spacing between entries
    echo -e "\n" >> ${config_file}

    #create destination folder, if it doesn't exist
    [ -d ${destdir}${jj} ] || mkdir ${destdir}${jj}
done
