Shell Script to Delete 1 folder and keep 5


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Shell Script to Delete 1 folder and keep 5
# 1  
Old 06-14-2010
Shell Script to Delete 1 folder and keep 5

I have situation that I had originally thought would be easily remedied until I learned more about how -mtime actually works.

We have one server that collects backups from a number of other servers. The backup server is limited in space (for reasons that predate my employment). The standard here is to maintain 5 days worth of backup folders in each subdirectory.

Also- I should mention that this is a Windows server and I am using cygwin to run linux scripts.

For the purpose of example, here is the how the directory structure is setup;

g/backup/subdir

Within subdir, the backups directories simply have dates, so under subdir, you'd see;

2010-6-10 2010-6-11 2010-6-12 2010-6-13 2010-6-14 2010-6-15

The goal is to maintain 5 days and delete the 6th day's folder...

The script that I have setup to run against a directory like this is;
Code:
cd /cygdrive/g/backup/subdir
 
/usr/bin/find . -name "20*" -mtime -type d -execdir /usr/bin/rm -r '{}' \;

Now- here's the catch. The backup folders (2010-6-15) don't all get created at the exact same time. In fact for some, the times can vary greatly- from 7pm to 3am. This is where I think it breaks down when trying to use -mtime, since it's actually looking at the number of seconds, not the date on the folder.

I started trying to figure out a way of creating a file count variable, such as;
Code:
'dirnum=ls | wc -l'   #and then to go on and write an 'if/then' script like 
 
'if $dirnum > 5   then....'

Again, I'm stuck with trying to figure out how to delete by date.

Sorry if this post is too wordy or if I've left out info. This marks my first post in a forum as I can usually figure these things out.

If anyone has any ideas or some better direction, it would be much appreciated.

thanks.

Last edited by vbe; 06-14-2010 at 12:21 PM.. Reason: code tags please
# 2  
Old 06-14-2010
A point to start from (?):

Code:
#!/bin/bash

TO_KEEP=5
ls . | grep -E '[0-9]{4}-[0-9]{2}-[0-9]{2}' >> BUFFER
ENTRIES=$( cat BUFFER | wc -l )
KICKOUT=$( cat BUFFER | sort -r | tail -n $(($ENTRIES-$TO_KEEP)) )
echo "$KICKOUT"
rm BUFFER

exit 0
# finis

Code:
[house@leonov] ls 2010*
2010-06-08/  2010-06-09/  2010-06-10/
2010-06-11/  2010-06-12/  2010-06-13/
[house@leonov] bash test.bash
2010-06-08

# 3  
Old 06-15-2010
---------- Post updated 06-15-10 at 12:14 PM ---------- Previous update was 06-14-10 at 04:20 PM ----------

Actually- there is an issue with this. The way in which the backup folders are created are like the following;

Code:
2010-6-9/   2010-6-10/   2010-6-11/

The '6' in this was easily fixed by simply removing the {2} that was after it. (the only issue that results from this is what to do starting in October, but I will just create a second script when that time comes)

What to do with the '9' and then '10' . I've tried various expressions and wildcards, but cannot seem to get it to work. I have a test directory setup with directories just as above. It seems that whatever I try, the directories that echo as the 'last on the list' are 6-10 & 6-11, rather than 6-9 & 6-10.

thanks in advance.

---------- Post updated at 03:21 PM ---------- Previous update was at 12:14 PM ----------

I've actually have changed the list command to the following and it works. However, because of the digit placement of the 9 and the 10, the 9 is seen as the first digit, which messes up the sort command. This is an issue that I will need to resolve elsewhere.

My change;
Code:
ls . | grep -E '[0-9]{4}-[0-9]-[0-9]{0,}' >> BUFFER


Last edited by Scott; 06-15-2010 at 08:27 PM.. Reason: Code tags, please...
# 4  
Old 06-16-2010
I'd rather update the script creating the folders to use what I'd consider standard notation, read: 2 (or 4) digits for the year, 2 digits for every month and day, respectively.
# 5  
Old 06-22-2010
I would have to agree. You're suggested script, with some minor changes, worked flawlessly (when the digits were correct). I'm looking into having the scripts that create the initial backup folders changed, to add another digit to the month/day where needed. Call it clean up work for the last admin.

Last edited by greendevil; 06-22-2010 at 11:31 AM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Delete oldest folder based on folder named as date

Hi, I have a script doing backup to synology server, the script create new folder each day with the date as being folder name i.e. 2018-07-30. Just before creating the new folder I want the script to find the oldest folder from the list and delete it including its content. for example... (3 Replies)
Discussion started by: humble_learner
3 Replies

2. Shell Programming and Scripting

Request for Shell script to move files from Subfolder to Parent folder and delete sub folder

Hi Team, I am new to shell script and there is a requirement where files should be moved from Subfolder to parent folder. Eg: parent folder --> /Interface/data/test/IN Sub folder -->/Interface/data/test/IN/Invoice20180607233338 Subfolder will be always with timestamp... (6 Replies)
Discussion started by: srivarun15
6 Replies

3. Shell Programming and Scripting

Shell script to copy files from on folder to another

I am trying to copy files with specific date and name to another folder. I am very new to shell scripting so i am finding it hard to do that. see the sample code i have written below. srcdir="/media/ubuntu/CA52057F5205720D/Users/st4r8_000/Desktop/office work/26 nov"... (13 Replies)
Discussion started by: Aqeel Abbas
13 Replies

4. Shell Programming and Scripting

Ignore Folder in Shell Script ?

Hi, I currently use a script to extract *.deb files located in a Directory called "/var/mobile/Media/Downloads" The Problem is howver I want the script to ignore the folder: "/var/mobile/Media/Downloads/New Debs and Files" (it shall NOT decompile any of the files in that folder. Here is... (2 Replies)
Discussion started by: pasc
2 Replies

5. Shell Programming and Scripting

Script to delete files in a folder older than 2 days

hi i need a script to delete the files older than 2 days... if my input is say in a folder versions A_14122012.txt A_15122012.txt A_16122012.txt A_17122012.txt i want my output to be A_16122012.txt A_17122012.txt thanks in advance hemanth saikumar. (2 Replies)
Discussion started by: hemanthsaikumar
2 Replies

6. UNIX for Dummies Questions & Answers

Script to delete files in different folder

Hi Experts, i need a little help. i have different folder that contain files that need to be deleted. but those folder contains huge amoung of same with 3 different extention. what i used to do is to delete them using the rm commande rm *.ext *.ext1 *.ext3 what i want to do is to have... (1 Reply)
Discussion started by: yprudent
1 Replies

7. UNIX for Dummies Questions & Answers

Shell script folder creation

hi can any one help me in shell scripting where in my requirement is to write a shell script where in if i run that script i should copy all the .doc files from one system to another systems within a network like from parent folders to child folder example parent folder A within parent folder... (5 Replies)
Discussion started by: afra
5 Replies

8. Shell Programming and Scripting

delete all the files in folder a which exist in folder b

Hi , I need a script which basically deltes all files in folder a which are alreasy present in folder b say folder a has files abc.txt pqr .txt and b has abc.txt pqr.txt rmr.txt then file abc.txt and pqr.txt from a should be deleted (6 Replies)
Discussion started by: viv1
6 Replies

9. Shell Programming and Scripting

Shell script delete log files from folder & subfolders on space usage

Hi, I am trying to write a shell script to delete logs generate by db when space in the folder reaches 70%. i am getting space values from db, find the files at OS and remove them by using a cron job runs every 5minutes. I have to keep the latest 5 files at any time, my problem is that log files... (3 Replies)
Discussion started by: saha
3 Replies

10. Shell Programming and Scripting

Bash script to delete folder based on text file information

I have been working on a script to list all the name's of a subfolder in a text file then edit that text file and then delete the subfolder base on the edited text file so far I have been able to do every thing I just talked about but can't figure out how to delete the subfolers base on a text file... (8 Replies)
Discussion started by: bone11409
8 Replies
Login or Register to Ask a Question