LXC/Logrotate: Difference between revisions
Jump to navigation
Jump to search
| (31 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
lxc image ls images:alpine/3.21 | lxc image ls images:alpine/3.21 | ||
lxc rm -f logrotate 2>/dev/null | |||
lxc launch images:alpine/3.21 logrotate | lxc launch images:alpine/3.21 logrotate | ||
lxc delete logrotate/alpine:3.21 2>/dev/null | lxc delete logrotate/alpine:3.21 2>/dev/null | ||
lxc snapshot logrotate alpine:3.21 | lxc snapshot logrotate alpine:3.21 | ||
lxc export logrotate logrotate_alpine-20250523.tar.gz --optimized-storage | |||
lxc rm -f logrotate 2>/dev/null | |||
lxc import logrotate logrotate_alpine-20250523.tar.gz logrotate | |||
lxc start logrotate | |||
lxc restore logrotate alpine:3.21 | lxc restore logrotate alpine:3.21 | ||
lxc info logrotate | lxc info logrotate | ||
| Line 14: | Line 20: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
lxc image ls ubuntu:24.04 | lxc image ls ubuntu:24.04 | ||
lxc rm -f logrotate 2>/dev/null | |||
lxc launch ubuntu:24.04 logrotate | lxc launch ubuntu:24.04 logrotate | ||
lxc export logrotate logrotate_ubuntu- | |||
lxc delete logrotate/ubuntu:24.04 2>/dev/null | |||
lxc snapshot logrotate ubuntu:24.04 | |||
lxc export logrotate logrotate_ubuntu-20250604.tar.gz --optimized-storage | |||
lxc rm -f logrotate 2>/dev/null | lxc rm -f logrotate 2>/dev/null | ||
lxc import logrotate_ubuntu- | lxc import logrotate_ubuntu-20250604.tar.gz logrotate | ||
lxc start logrotate | lxc start logrotate | ||
lxc restore logrotate ubuntu:24.04 | lxc restore logrotate ubuntu:24.04 | ||
lxc info logrotate | lxc info logrotate | ||
</syntaxhighlight> | |||
---- | |||
<syntaxhighlight lang="bash"> | |||
cat <<'EXE'| lxc exec logrotate -- bash | |||
echo;apt-get update;echo | |||
apt-get install -y logrotate faketime;echo;apt-get clean | |||
EXE | |||
lxc delete logrotate/faketime:0.9.10 2>/dev/null | |||
lxc snapshot logrotate faketime:0.9.10 | |||
lxc export logrotate logrotate_faketime-20250604.tar.gz --optimized-storage | |||
lxc rm -f logrotate 2>/dev/null | |||
lxc import logrotate_faketime-20250604.tar.gz logrotate | |||
lxc start logrotate | |||
lxc restore logrotate faketime:0.9.10 | |||
lxc info logrotate | |||
</syntaxhighlight> | |||
==LXC » Logrotate » Ubuntu » Config== | |||
{| | |||
| valign="top" | | |||
<syntaxhighlight lang="bash" highlight="15,16"> | |||
lxc restore logrotate faketime:0.9.10 | |||
cat <<'EXE'| lxc exec logrotate -- bash | |||
mkdir -p /var/log/academia | |||
chown root:root /var/log/academia | |||
chmod 755 /var/log/academia | |||
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null | |||
/var/log/academia/academia.log { | |||
daily | |||
dateext | |||
dateformat -%Y-%m-%d | |||
rotate 90 | |||
missingok | |||
notifempty | |||
compress | |||
delaycompress | |||
copytruncate | |||
} | |||
CFG | |||
EXE | |||
</syntaxhighlight> | |||
| valign="top" | | |||
<syntaxhighlight lang="bash" highlight="15,16" line> | |||
lxc restore logrotate faketime:0.9.10 | |||
cat <<'EXE'| lxc exec logrotate -- bash | |||
mkdir -p /var/log/academia | |||
chown root:root /var/log/academia | |||
chmod 755 /var/log/academia | |||
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null | |||
/var/log/academia/academia.log { | |||
daily | |||
dateext | |||
dateformat -%Y-%m-%d | |||
rotate 90 | |||
missingok | |||
notifempty | |||
compress | |||
copytruncate | |||
} | |||
CFG | |||
EXE | |||
</syntaxhighlight> | |||
|- | |||
| colspan="2" | | |||
---- | |||
|- | |||
| valign="top" | | |||
<syntaxhighlight lang="bash" highlight="15,16,19-35"> | |||
lxc restore logrotate faketime:0.9.10 | |||
cat <<'EXE'| lxc exec logrotate -- bash | |||
mkdir -p /var/log/academia | |||
chown root:root /var/log/academia | |||
chmod 755 /var/log/academia | |||
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null | |||
/var/log/academia/academia.log { | |||
daily | |||
dateext | |||
dateformat -%Y-%m-%d | |||
rotate 90 | |||
missingok | |||
notifempty | |||
nocompress | |||
copytruncate | |||
postrotate | |||
LOG_DIR=/var/log/academia | |||
ARC_MOS="$(date +'%Y/%Y-%m')" | |||
ARC_DIR="${LOG_DIR}/${ARC_MOS}" | |||
mkdir -p ${ARC_DIR} | |||
chown -R root:root ${LOG_DIR}/ | |||
find ${LOG_DIR}/ -type d -exec chmod 755 {} \; | |||
find ${LOG_DIR}/ -type f -exec chmod 644 {} \; | |||
for LOG in ${LOG_DIR}/academia.log-*;do | |||
[ -e "${LOG}" ] || continue | |||
gzip ${LOG};mv ${LOG}.gz ${ARC_DIR}/ | |||
done | |||
find ${LOG_DIR}/ -mindepth 3 -maxdepth 3 -type f -name '*.gz' -mtime +90 -delete | |||
find ${LOG_DIR}/ -mindepth 2 -maxdepth 2 -type d -empty -delete | |||
find ${LOG_DIR}/ -mindepth 1 -maxdepth 1 -type d -empty -delete | |||
endscript | |||
} | |||
CFG | |||
EXE | |||
</syntaxhighlight> | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
</syntaxhighlight> | |||
|} | |||
==LXC » Logrotate » Ubuntu » Rotate== | |||
<syntaxhighlight lang="bash"> | |||
cat <<'EXE'| lxc exec logrotate -- bash | |||
for DAYS_AGO in {0..90};do | |||
cat << LOG | tee -a /var/log/academia/academia.log >/dev/null | |||
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin signed up | |||
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /home | |||
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /setting | |||
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /sales/report | |||
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /payment/maybank2u | |||
LOG | |||
if [ "${DAYS_AGO}" != "0" ];then | |||
faketime "$(date -d "${DAYS_AGO} days ago" +%Y-%m-%d)" logrotate -f /etc/logrotate.d/academia | |||
fi | |||
done | |||
ls -ahl /var/log/academia/ | |||
EXE | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 47: | Line 196: | ||
| valign="top" | | | valign="top" | | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
echo "$(date +'D%Y%m%d-T%H%M')-Z$(date +'%z'|tr '+-' 'PM')" | |||
echo "$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z')" | |||
</syntaxhighlight> | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
echo "$(TZ=BDT-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')" | |||
echo "$(TZ=MYT-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')" | |||
</syntaxhighlight> | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
echo "$(TZ=GMT-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')" | |||
echo "$(TZ=GMT-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')" | |||
</syntaxhighlight> | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')" | |||
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')" | |||
</syntaxhighlight> | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%:z')" | |||
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%:z')" | |||
</syntaxhighlight> | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%z')" | |||
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%z')" | |||
</syntaxhighlight> | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
faketime 'today' logrotate -f /etc/logrotate.d/academia | |||
faketime 'yesterday' logrotate -f /etc/logrotate.d/academia | |||
faketime '2025-06-01' logrotate -f /etc/logrotate.d/academia | |||
</syntaxhighlight> | |||
| valign="top" colspan="2" | | |||
<syntaxhighlight lang="bash"> | |||
find /var/log/academia/ -mindepth 3 -maxdepth 3 -type f -name '*.gz' -mtime +50 -print | |||
find /var/log/academia/ -mindepth 2 -maxdepth 2 -type d -empty -print | |||
find /var/log/academia/ -mindepth 1 -maxdepth 1 -type d -empty -print | |||
</syntaxhighlight> | |||
|- | |||
| colspan="3" | | |||
---- | |||
|- | |||
| valign="top" | | |||
<syntaxhighlight lang="bash"> | |||
find /var/log/academia/ -type d -print | |||
find /var/log/academia/ -type f -print | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 03:06, 10 June 2025
LXC » Logrotate » Alpine
lxc image ls images:alpine/3.21
lxc rm -f logrotate 2>/dev/null
lxc launch images:alpine/3.21 logrotate
lxc delete logrotate/alpine:3.21 2>/dev/null
lxc snapshot logrotate alpine:3.21
lxc export logrotate logrotate_alpine-20250523.tar.gz --optimized-storage
lxc rm -f logrotate 2>/dev/null
lxc import logrotate logrotate_alpine-20250523.tar.gz logrotate
lxc start logrotate
lxc restore logrotate alpine:3.21
lxc info logrotate
LXC » Logrotate » Ubuntu
lxc image ls ubuntu:24.04
lxc rm -f logrotate 2>/dev/null
lxc launch ubuntu:24.04 logrotate
lxc delete logrotate/ubuntu:24.04 2>/dev/null
lxc snapshot logrotate ubuntu:24.04
lxc export logrotate logrotate_ubuntu-20250604.tar.gz --optimized-storage
lxc rm -f logrotate 2>/dev/null
lxc import logrotate_ubuntu-20250604.tar.gz logrotate
lxc start logrotate
lxc restore logrotate ubuntu:24.04
lxc info logrotate
cat <<'EXE'| lxc exec logrotate -- bash
echo;apt-get update;echo
apt-get install -y logrotate faketime;echo;apt-get clean
EXE
lxc delete logrotate/faketime:0.9.10 2>/dev/null
lxc snapshot logrotate faketime:0.9.10
lxc export logrotate logrotate_faketime-20250604.tar.gz --optimized-storage
lxc rm -f logrotate 2>/dev/null
lxc import logrotate_faketime-20250604.tar.gz logrotate
lxc start logrotate
lxc restore logrotate faketime:0.9.10
lxc info logrotate
LXC » Logrotate » Ubuntu » Config
lxc restore logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p /var/log/academia
chown root:root /var/log/academia
chmod 755 /var/log/academia
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
daily
dateext
dateformat -%Y-%m-%d
rotate 90
missingok
notifempty
compress
delaycompress
copytruncate
}
CFG
EXE
|
lxc restore logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p /var/log/academia
chown root:root /var/log/academia
chmod 755 /var/log/academia
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
daily
dateext
dateformat -%Y-%m-%d
rotate 90
missingok
notifempty
compress
copytruncate
}
CFG
EXE
|
|
| |
lxc restore logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p /var/log/academia
chown root:root /var/log/academia
chmod 755 /var/log/academia
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
daily
dateext
dateformat -%Y-%m-%d
rotate 90
missingok
notifempty
nocompress
copytruncate
postrotate
LOG_DIR=/var/log/academia
ARC_MOS="$(date +'%Y/%Y-%m')"
ARC_DIR="${LOG_DIR}/${ARC_MOS}"
mkdir -p ${ARC_DIR}
chown -R root:root ${LOG_DIR}/
find ${LOG_DIR}/ -type d -exec chmod 755 {} \;
find ${LOG_DIR}/ -type f -exec chmod 644 {} \;
for LOG in ${LOG_DIR}/academia.log-*;do
[ -e "${LOG}" ] || continue
gzip ${LOG};mv ${LOG}.gz ${ARC_DIR}/
done
find ${LOG_DIR}/ -mindepth 3 -maxdepth 3 -type f -name '*.gz' -mtime +90 -delete
find ${LOG_DIR}/ -mindepth 2 -maxdepth 2 -type d -empty -delete
find ${LOG_DIR}/ -mindepth 1 -maxdepth 1 -type d -empty -delete
endscript
}
CFG
EXE
|
|
LXC » Logrotate » Ubuntu » Rotate
cat <<'EXE'| lxc exec logrotate -- bash
for DAYS_AGO in {0..90};do
cat << LOG | tee -a /var/log/academia/academia.log >/dev/null
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin signed up
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /home
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /setting
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /sales/report
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /payment/maybank2u
LOG
if [ "${DAYS_AGO}" != "0" ];then
faketime "$(date -d "${DAYS_AGO} days ago" +%Y-%m-%d)" logrotate -f /etc/logrotate.d/academia
fi
done
ls -ahl /var/log/academia/
EXE
Playground
INET_PATH='.[].state.network.[].addresses[]|select(.family=="inet" and .scope=="global").address'
INET_ADDR=$(lxc list name=logrotate -f=yaml|yq -r "${INET_PATH}")
|
apk cache clean
rm -vrf /var/cache/apk/*
| |
|
| ||
echo "$(date +'D%Y%m%d-T%H%M')-Z$(date +'%z'|tr '+-' 'PM')"
echo "$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
|
echo "$(TZ=BDT-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=MYT-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
|
echo "$(TZ=GMT-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=GMT-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
|
|
| ||
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
|
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%:z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%:z')"
|
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%z')"
|
|
| ||
faketime 'today' logrotate -f /etc/logrotate.d/academia
faketime 'yesterday' logrotate -f /etc/logrotate.d/academia
faketime '2025-06-01' logrotate -f /etc/logrotate.d/academia
|
find /var/log/academia/ -mindepth 3 -maxdepth 3 -type f -name '*.gz' -mtime +50 -print
find /var/log/academia/ -mindepth 2 -maxdepth 2 -type d -empty -print
find /var/log/academia/ -mindepth 1 -maxdepth 1 -type d -empty -print
| |
|
| ||
find /var/log/academia/ -type d -print
find /var/log/academia/ -type f -print
|
||
References
|
| ||
|
| ||