Skip to main content

How to Cleanup Ludus Packer Cache

Introduction​

This guide proposes one possible approach to address the issue of accumulating ISO files in the Ludus Packer cache directory. The suggestion uses a time-based file rotation tool called Rotafile, though similar solutions could be implemented using other tools or custom scripts.

Problem Overview​

The Ludus Packer cache directory (typically at /opt/ludus/users/USERNAME/packer/packer_cache, where USERNAME is your Ludus username) accumulates:

  • ISO files ranging from ~400MB to ~6.9GB each
  • Significant disk space usage that grows over time

Installing a Time-Based File Rotation Tool​

For this example, we'll use Rotafile, but similar functionality could be achieved with standard Linux tools like find with cron jobs, or other utilities:

# Clone the repository
git clone https://github.com/aancw/rotafile.git
cd rotafile

# Make scripts executable
chmod +x rotafile.sh install.sh

# Install the script (optional)
sudo ./install.sh

If you prefer not to install external tools, you could also use built-in Linux commands like find with the -mtime option to achieve similar results.

Understanding File Rotation Parameters​

If using Rotafile, it uses this syntax:

rotafile [directory] [time_period] [file_pattern] [options]

Similar approaches with standard Linux tools would look like:

# Using find to locate and delete files older than 30 days
find /path/to/directory -type f -name "*.iso" -mtime +30 -delete

# Using find with exec to implement a dry-run
find /path/to/directory -type f -name "*.iso" -mtime +30 -exec ls -la {} \;

The example commands in this guide will use Rotafile for simplicity, but could be adapted to use built-in tools instead.

Basic Approaches for Ludus Cache Cleanup​

Analyzing the Cache (Preview First)​

Before implementing any deletion, it's always wise to first see what would be affected:

# Determine your Ludus username
LUDUS_USER="USERNAME_HERE"

# Using Rotafile to analyze without deleting
./rotafile.sh /opt/ludus/users/$LUDUS_USER/packer/packer_cache 30d "*.iso" --dry-run

# Alternative with standard find command
find /opt/ludus/users/$LUDUS_USER/packer/packer_cache -type f -name "*.iso" -mtime +30 -ls

This will show which files would be deleted and how much space would be freed, but won't actually delete anything.

Manual Cleanup Options​

To manually clean up the cache:

# Determine your Ludus username
LUDUS_USER="USERNAME_HERE"

# Option 1: Using Rotafile
./rotafile.sh /opt/ludus/users/$LUDUS_USER/packer/packer_cache 30d "*.iso"

# Option 2: Using standard find command
find /opt/ludus/users/$LUDUS_USER/packer/packer_cache -type f -name "*.iso" -mtime +30 -delete

Logging for Auditing Purposes​

It's advisable to maintain logs of cleanup operations:

# Determine your Ludus username
LUDUS_USER="USERNAME_HERE"

# Option 1: Using Rotafile with built-in logging
./rotafile.sh /opt/ludus/users/$LUDUS_USER/packer/packer_cache 30d "*.iso" --log=/var/log/ludus/packer-cache-iso.log

# Option 2: Using find with redirection to log file
find /opt/ludus/users/$LUDUS_USER/packer/packer_cache -type f -name "*.iso" -mtime +30 -ls > /var/log/ludus/find-log.txt
find /opt/ludus/users/$LUDUS_USER/packer/packer_cache -type f -name "*.iso" -mtime +30 -delete >> /var/log/ludus/find-log.txt

Setting Up Automated Cleanup​

For regular maintenance, automated cleanup can be implemented using cron:

# Edit crontab
sudo crontab -e

Add a line to run weekly cleanup (using either approach):

# Get your Ludus username
LUDUS_USER="USERNAME_HERE"

# Option 1: Using Rotafile
0 2 * * 0 /path/to/rotafile.sh /opt/ludus/users/$LUDUS_USER/packer/packer_cache 30d "*.iso" --force --log=/var/log/ludus/packer-cache-$(date +\%Y\%m\%d).log

# Option 2: Using find directly
0 2 * * 0 find /opt/ludus/users/$LUDUS_USER/packer/packer_cache -type f -name "*.iso" -mtime +30 -ls > /var/log/ludus/packer-cache-$(date +\%Y\%m\%d).log 2>&1 && find /opt/ludus/users/$LUDUS_USER/packer/packer_cache -type f -name "*.iso" -mtime +30 -delete >> /var/log/ludus/packer-cache-$(date +\%Y\%m\%d).log 2>&1

Replace /path/to/rotafile.sh with the actual path where Rotafile is installed.

Additional Tips for Ludus-Specific Usage​

Monitoring Cleanup Results​

To verify cleanup operations:

# View the logs
cat /var/log/ludus/packer-cache-*.log

# Determine your Ludus username
LUDUS_USER="USERNAME_HERE"

# Check current cache size
du -sh /opt/ludus/users/$LUDUS_USER/packer/packer_cache

Whether implemented with specialized tools or built-in commands, this approach provides a practical solution to the Packer cache growth issue while ensuring necessary files remain available during active development periods.

Issue Reference: issues#97