Data rotation and cleanup help keep your Raspberry Pi's storage tidy and free from old files. This stops your device from running out of space and keeps things organized.
Data rotation and cleanup in Raspberry Pi
# Example bash script for data rotation and cleanup # Delete files older than 7 days in /home/pi/data find /home/pi/data -type f -mtime +7 -exec rm {} \; # Move current log to backup and create new log mv /home/pi/log.txt /home/pi/log_backup_$(date +%F).txt > /home/pi/log.txt
find command searches files by age and deletes them.
Using mv with $(date +%F) adds the current date to the backup filename.
# Delete files older than 30 days in /var/log find /var/log -type f -mtime +30 -exec rm {} \;
# Rotate a log file daily
mv /home/pi/app.log /home/pi/app_$(date +%Y-%m-%d).log
> /home/pi/app.log# Remove empty files in a folder find /home/pi/data -type f -empty -delete
This script deletes files older than 5 days in the data folder and rotates the log file by renaming it with the current date. Then it creates a new empty log file.
#!/bin/bash # Directory to clean DATA_DIR="/home/pi/data" # Delete files older than 5 days find "$DATA_DIR" -type f -mtime +5 -exec rm {} \; # Rotate log file LOG_FILE="/home/pi/myapp.log" BACKUP_LOG="/home/pi/myapp_$(date +%F).log" mv "$LOG_FILE" "$BACKUP_LOG" > "$LOG_FILE" echo "Cleanup done. Old files removed and log rotated."
Always test your cleanup commands on a small folder first to avoid deleting important files.
Use cron jobs to run cleanup scripts automatically at regular times.
Back up important data before running automatic deletion scripts.
Data rotation and cleanup keep your Raspberry Pi storage organized and free from old files.
Use find to delete files older than a certain number of days.
Rotate logs by renaming them with dates and creating new empty files.
Practice
Solution
Step 1: Understand data rotation and cleanup
Data rotation and cleanup help manage files by removing old or unnecessary data.Step 2: Identify the main goal
The goal is to keep storage organized and free space by deleting old files.Final Answer:
To keep storage organized and remove old files -> Option AQuick Check:
Data rotation = storage cleanup [OK]
- Confusing data cleanup with hardware upgrades
- Thinking it changes system performance directly
- Assuming it installs software automatically
Solution
Step 1: Understand the find command syntax
To delete files older than 7 days, use find with -type f (files), -mtime +7 (older than 7 days), and -delete.Step 2: Check each option
find /var/log -type f -mtime +7 -delete uses correct syntax. find /var/log -type d -mtime +7 -delete targets directories (-type d), not files. rm /var/log/* -mtime +7 uses rm incorrectly with -mtime. delete /var/log -older 7 is not a valid command.Final Answer:
find /var/log -type f -mtime +7 -delete -> Option BQuick Check:
find + -mtime +7 + -delete = correct [OK]
- Using -type d instead of -type f
- Trying to use rm with -mtime option
- Using invalid commands like delete
logfile="/var/log/syslog" backup="/var/log/syslog-$(date +%Y%m%d)" mv $logfile $backup > $logfile ls /var/log/syslog*
Solution
Step 1: Understand the script actions
The script renames syslog to syslog-YYYYMMDD (today's date), then creates a new empty syslog file.Step 2: Predict the ls output
After these steps, both /var/log/syslog (empty) and /var/log/syslog-YYYYMMDD exist, so ls lists both.Final Answer:
/var/log/syslog and /var/log/syslog-YYYYMMDD files listed -> Option CQuick Check:
mv + new empty file + ls = both files [OK]
- Thinking syslog file is deleted
- Assuming mv copies instead of moves
- Ignoring the empty file creation with >
logfile="/var/log/app.log" backup="/var/log/app.log-$(date +%Y%m%d)" mv $logfile $backup > $logfile find /var/log -type f -mtime 7 -delete
Solution
Step 1: Check the find command usage
The find command uses -mtime 7 which matches files exactly 7 days old, not older than 7 days.Step 2: Correct the find command
To delete files older than 7 days, use -mtime +7 instead of -mtime 7.Final Answer:
The find command should use -mtime +7 to delete files older than 7 days -> Option AQuick Check:
find -mtime +7 deletes older files [OK]
- Using -mtime 7 deletes only files exactly 7 days old
- Misplacing the > $logfile line
- Incorrect mv command syntax
/var/log/myapp.log is renamed with the date, a new empty log is created, and logs older than 14 days are deleted. Which script snippet correctly performs this task?Solution
Step 1: Rename current log and create new empty log
backup="/var/log/myapp.log-$(date +%Y%m%d)" mv /var/log/myapp.log $backup > /var/log/myapp.log find /var/log -type f -name 'myapp.log-*' -mtime +14 -delete correctly moves the log file to a dated backup and creates a new empty log with >.Step 2: Delete logs older than 14 days
backup="/var/log/myapp.log-$(date +%Y%m%d)" mv /var/log/myapp.log $backup > /var/log/myapp.log find /var/log -type f -name 'myapp.log-*' -mtime +14 -delete uses find with -name 'myapp.log-*' and -mtime +14 to delete backups older than 14 days, which is correct.Final Answer:
backup="/var/log/myapp.log-$(date +%Y%m%d)" mv /var/log/myapp.log $backup > /var/log/myapp.log find /var/log -type f -name 'myapp.log-*' -mtime +14 -delete -> Option DQuick Check:
mv + new file + find -mtime +14 = correct rotation [OK]
- Using rm instead of recreating empty log
- Using -mtime 14 instead of +14 in find
- Copying instead of moving log file
Ready to prove it?
Pass the test and this pattern moves unknown
