https://github.com/yousafkhamza/retention-based-cleanup-script
It's a bash script and it's used to clean files with retention period. So, it might be useful to clear large-scale backup storing servers to delete these files with a particular retention period. I just built the same script with 3 ways of working.
https://github.com/yousafkhamza/retention-based-cleanup-script
backup-manager bash linux retention scripting shell-script
Last synced: about 1 year ago
JSON representation
It's a bash script and it's used to clean files with retention period. So, it might be useful to clear large-scale backup storing servers to delete these files with a particular retention period. I just built the same script with 3 ways of working.
- Host: GitHub
- URL: https://github.com/yousafkhamza/retention-based-cleanup-script
- Owner: yousafkhamza
- Created: 2021-07-17T03:09:45.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-07-17T10:25:35.000Z (almost 5 years ago)
- Last Synced: 2023-09-20T19:52:43.663Z (almost 3 years ago)
- Topics: backup-manager, bash, linux, retention, scripting, shell-script
- Language: Shell
- Homepage:
- Size: 36.1 KB
- Stars: 6
- Watchers: 2
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Retention Based File-Cleanup Script (Bash)
[](https://travis-ci.org/joemccann/dillinger)
---
## Description
It's a bash script and it's used to clean files with retention period. So, it might be useful to clear large-scale backup storing servers to delete these files with a particular retention period. I just built the same script with 3 ways of working.
----
## Feature
- Easy to handle this script
- Files removing with a retention period
- Easy to schedule it as a cron job.
- Easy to manage Backup/Log's on a Linux machine (Cron Job/Manual)
---
## Pre-Requested Packages Installation
```sh
sudo yum -y install git
```
> please note that this is a bash script where I used for Linux-based distros and servers.
----
## How to get this script
```sh
git clone https://github.com/yousafkhamza/retention-based-cleanup-script.git
cd retention-based-cleanup-script
chmod +x cleanup*.sh
```
## How to use and sample using templates with output
#### _Method 1 - (Standard)_
```sh
yousaf@MSI:/mnt/c/Users/Downloads$ bash cleanup.sh
Enter your directory path: ./wordpress <--------- Enter your absolute path of that directory you need
Enter retension period: 2200 <-------- Retention period
--------------------------------------------------------------
The below-listed files are older than 2200 days under this directory ./wordpress
--------------------------------------------------------------
./wordpress/wp-admin/css/farbtastic.css
./wordpress/wp-admin/images/browser.png
./wordpress/wp-admin/images/comment-grey-bubble-2x.png
Do you want to remove these above-listed files? (Please verify it before) [Y/N]: y <------------------ Ask you a confirmation before deleting
Deleting ./wordpress/wp-admin/css/farbtastic.css
Deleting ./wordpress/wp-admin/images/browser.png
Deleting ./wordpress/wp-admin/images/comment-grey-bubble-2x.png
```
#### _Method 2 - (Command-line value passing)_
```sh
yousaf@MSI:/mnt/c/Users/Downloads$ bash cleanup_cmd_variable_passing.sh ./wordpresss/ 4000 <---------- First value should be absalute path and second one is the retetion period
--------------------------------------------------------------
The below-listed files are older than 2200 days under this directory ./wordpress
--------------------------------------------------------------
./wordpress/wp-admin/css/farbtastic.css
./wordpress/wp-admin/images/browser.png
./wordpress/wp-admin/images/comment-grey-bubble-2x.png
Do you want to remove these above-listed files? (Please verify it before) [Y/N]: y <------------------ Ask you a confirmation before deleting
Deleting ./wordpress/wp-admin/css/farbtastic.css
Deleting ./wordpress/wp-admin/images/browser.png
Deleting ./wordpress/wp-admin/images/comment-grey-bubble-2x.png
```
#### _Method 3 - (For Cronjob and Commandline script (without asking any confirmation before deleting))_
```sh
yousaf@MSI:/mnt/c/Users/Downloads$ ./cleanup_for_cron.sh ./wordpress/ 2000
--------------------------------------------------------------
The below-listed files are older than 2000 days under this directory ./wordpress/
--------------------------------------------------------------
./wordpress/wp-admin/css/farbtastic.css
./wordpress/wp-admin/images/browser.png
./wordpress/wp-admin/images/comment-grey-bubble-2x.png
!...........................WARNING..............................!
We are going to start deleting these above files within 10sec....
if you do not need to execute this purging task, please quite this script on here using with [ctrl + c]
!...........................WARNING..............................!
Deleting ./wordpress/wp-admin/css/farbtastic.css
Deleting ./wordpress/wp-admin/images/browser.png
Deleting ./wordpress/wp-admin/images/comment-grey-bubble-2x.png
```
#### CronJob Example
```sh
crontab -e
0 3 * * * /path/to/cleanup_for_cron.sh /path/to/location/ 30 <---------------------- Run cleanup_for_cron.sh at 3 am every day
```
> Who you guys need to set up an automation backup/log removing as per the retention period please use the script with [cronjob](https://www.tecmint.com/create-and-manage-cron-jobs-on-linux/).
----
## Architecture

----
## Behind the Code
_vim cleanup.sh_
```sh
#!/bin/bash
read -p "Enter your directory: " directory
read -p "Enter retension period: " rp
rm -f ./delcleanup.txt
if [[ -z "$directory" || -z "$rp" ]]
then
echo "Please specify a valid absalute direcotry path and retionsion period!"
exit 1
else
if ! [[ "$directory" =~ ^[[:alnum:]]*$ || "$rp" =~ [^0-9] ]];
then
if [[ -d "$directory" ]];
then
echo "--------------------------------------------------------------"
echo "The below-listed files are older than $rp days under this directory $directory"
echo "--------------------------------------------------------------"
find "$directory" -type f -iname "*" -mtime +"$rp" -exec ls {} \; | tee -a ./delcleanup.txt
echo ""
if [ -s "./delcleanup.txt" ]
then
read -p "Do you want to remove these above-listed files? (Please verify it before) [Y/N]: " con
echo ""
if [[ "$con" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
for delete in $(cat ./delcleanup.txt); do echo "Deleting $delete"; rm -f $delete ; done;
rm -f ./delcleanup.txt
else
rm -f ./delcleanup.txt
fi
else
echo "There is no files found with this $rp days retention period!"
rm -f ./delcleanup.txt
fi
else
echo "No such direcotry found!"
fi
else
echo "Please enter a valid path and period!"
exit 1
fi
fi
```
----
## Conclusion
It's a simple bash script and it's used to clean files with retention period. So, maybe it's useful for those who handled backup/log management on Linux system engineers. Please let me know if you have to face any issues while using this script and please find the below contact details of who needs to connect me.
### ⚙️ Connect with Me