Linux script - help!!

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Linux script - help!!
# 1  
Old 08-12-2013
Linux script - help!!

I need to create a bash script to run through crontab, to do the below job:

1- find files that are over 12 months old in /var "files are like file_201201222.mtd file_201201333.mtd
2- Tar them in /backup like: file_201201.tar.bz2 "every month in one tar file"
3- remove them after that
4- Send an email with the files deleted

Your help is highly appreciated!
Thanks in Advance
# 2  
Old 08-12-2013
you can find files older than 12 months with this command:
find /var -name "*.mtd" -ctime +360
to remove them after it finds them use
find ./ -name "*" -ctime +360 -exec rm {} \;
sending an email can be done with the
mail -s "Subject" < /tmp/maildata.txt

Good luck
# 3  
Old 08-12-2013
Thank you very much for the helpful syntax. But can you attend to point number 2 as well Smilie

---------- Post updated at 10:42 PM ---------- Previous update was at 10:41 PM ----------

It will be helpful to find and Tar in the same step
# 4  
Old 08-12-2013
you can use something like:

find /var -type f -name "file_201201*mtd" -mtime +365 2>/dev/null | tar cvfj file_201201.tar.bz2 {} +

# 5  
Old 08-12-2013
Thanks very much again, but can you explain it quickly Smilie
# 6  
Old 08-12-2013
ctime will also match files whose attributes have been recently changed, so in this case I would go with mtime instead.

Also, you don't mention your operating system so I'm gonna assume you are using GNU find which have some neat extra features. You could try:
find /var -type f -name "file_*.mtd" -mtime +365 | xargs tar -jcf somefile.tar.bz2 --remove-files && mailx -s "Some Stuff"

Keep in mind that the above command will only match files that are actually older than 12 months, regardless of their name (as long as they match the model "file_*.mtd").

That however doesn't take care of the monthly tar, so here's a better (untested) approach. You may need to change the date format but that is left as an exercise for you.
for month in $(seq -f %02g 1 12); do
	find /var -type f -name "file_$(date +%Y)${month}$(date +%d).mtd" -mtime +365 | \
	xargs tar -jcf "file_$(date +%Y)${month}.tar.bz2" --remove-files \
	&& echo "Some Stuff" | mailx -s "Subject"

Last edited by verdepollo; 08-12-2013 at 09:19 PM.. Reason: fixed mailx
# 7  
Old 08-13-2013
Thanks, will try this and let you know
I'm using Fedora btw.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Linux script

can anyone help in this i have a file like 2089,success 2089,failure 2087,failure 2089,success 2087,failure. i want output like. 2089,success=2,failure=1 2087,success=1,failure=2 thanks (8 Replies)
Discussion started by: pradeep rawat
8 Replies

2. UNIX for Dummies Questions & Answers

Linux script

Hello, could you please help me with the following request? I need a linux command script that does the following. 1. delete folders folder1 and folder2 located in install/users/web/folder1&2. and also delete folder3 install/jboss/server/folder3. All these folders has many folder and files... (1 Reply)
Discussion started by: bern11
1 Replies

3. Shell Programming and Scripting

Need help! Linux shell script

Hi all, I am trying to make a Nodemanager work in RHEL 5 I got this script from '', and made appropriate changes to suit my weblogic installation. I keep getting the error, "line 82: syntax error: unexpected end of file". I have checked every line to make sure all... (4 Replies)
Discussion started by: chakrv1
4 Replies

4. Shell Programming and Scripting

Need linux script!!

I have a text file like this: 25 raj 78 rohit 89 bhanu 58 mohit 29 mano 53 rohit 63 shiva 74 lapan 63 bhanu what i need is a linux script to reorganize this file by adding the relevant content(number) to the names and print only once.... please help me someone. ... (1 Reply)
Discussion started by: shan1990
1 Replies

5. Shell Programming and Scripting

Help, Linux Script

#!/bin/sh args=("$@") echo "#=================================" echo "#Script Name:" echo "#By:" echo "#Purpose:" echo "#:Command Line: picoc" echo "#=================================" pico $@ this is my script. i think it is ok w/o error. but when i run it i got error. i'm using a VMBox... (1 Reply)
Discussion started by: jrdncchr
1 Replies

6. Linux

linux script

I need to write a script to which need to track errors in log and need to check last 100 lines in the log at every 5 minits. if error fund need to mail my self error type 1. "STATE_ADMIN" if found need to print: <Jan 5, 2011 11:47:02 AM IST><ewaps2> <ADFAPPS2> < STATE_ADMIN 2."Java heap... (0 Replies)
Discussion started by: udara
0 Replies

7. Shell Programming and Scripting

Linux script help

I am creating a script that will incorporate multiple variables organized in a spreadsheet for pdftk. I have a 1000 page pdf that I have to split into about 300 individual pdfs. The basic command line to extract pages is as follows: $ pdftk file.pdf cat 1-7 output newfile.pdf file.pdf =... (8 Replies)
Discussion started by: tankcommander
8 Replies

8. Shell Programming and Scripting

Help with linux bash script

Hello everybody! This is my first time having to write a script so your help is most appreciated.Also i am a beginner when it comes to linux so please bare with me.Thanks in advance to all who will look into this for me. I have to write a bash script that will show the free space on the hard... (4 Replies)
Discussion started by: manike
4 Replies

9. Shell Programming and Scripting

help with linux shell script

HI im a novice with shell scripts but i need help with a random script I have this folder filled with 500 different file names... I need help creating a script that will take each filename and make a new folder named that filename and then move that file into the newly created folder. Then the... (1 Reply)
Discussion started by: emachala
1 Replies

10. Shell Programming and Scripting

Linux Script help

Hi Everyone , have a nice day given below is a simple linux script but its first part is not working ( variable k assignment ) , while second loop is working fine can anyone help me out with this #!/bin/sh echo "Enter Date" read date1 for i in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14... (6 Replies)
Discussion started by: Dastard
6 Replies
Login or Register to Ask a Question