Help on simple shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help on simple shell script
# 1  
Old 01-24-2017
Help on simple shell script

Hello,

I am running openmediavault on my Raspberry and I would like to use it as a backup FTP server of snapshots taken from my IP cams.

So I get the network recorder to upload every 3 seconds a snapshot to the Raspberry. Everything works perfectly.

I would need now a simple script that checks the size of a directory (Backup_NVR) and if it exceeds for instance 3 GB, it deletes recursively all images and empty directories older than 60 minutes.

I would schedule this script as a job and it should be done.

Being new to shell scripting, although I have IT experience, can anyone please draft this script for me?

I would be very grateful, thanks a lot, Daniele
# 2  
Old 01-24-2017
The command for directory usage - du -
Code:
 du -s --block-size G  /fullpath/to/Backup_NVR

Gives the size in GB.
Code:
# get size of directory
sz=$(du -s --block-size G  /fullpath/to/Backup_NVR | awk '{print int($0)}')
if [ $sz -ge 3 ] ; then  # too big delete older files
   find /path/to/Backup_NVR -type f -mmin +60 -exec rm {} \;
fi

This User Gave Thanks to jim mcnamara For This Post:
# 3  
Old 01-25-2017
Quote:
Originally Posted by jim mcnamara
The command for directory usage - du -
Code:
 du -s --block-size G  /fullpath/to/Backup_NVR

Gives the size in GB.
Code:
# get size of directory
sz=$(du -s --block-size G  /fullpath/to/Backup_NVR | awk '{print int($0)}')
if [ $sz -ge 3 ] ; then  # too big delete older files
   find /path/to/Backup_NVR -type f -mmin +60 -exec rm {} \;
fi

---------- Post updated at 12:38 AM ---------- Previous update was at 12:38 AM ----------

Thank you so much, I will try and advise!

---------- Post updated at 12:40 AM ---------- Previous update was at 12:38 AM ----------

Hello,
Again thanks for the script.

Does it also delete the empty directories or shall I add anything else?
Please advise, daniele
# 4  
Old 01-25-2017
-delete is faster than -exec rm.
After deleting the files run another find that deletes the empty directories
Code:
find /path/to/Backup_NVR -type f -mmin +60 -delete
find /path/to/Backup_NVR -mindepth 1 -depth -type d -empty -delete

This User Gave Thanks to MadeInGermany For This Post:
# 5  
Old 01-25-2017
Thanks everybody for helping.
I have written the entire script, inserting a pause to check the directory size before delete and to debug it.

Can anyone please check if it is correct?
Thanks.

QUOTE
Code:
#!/bin/bash
# delete files oder than MM minutes if the size exceeds GG gb

MM=60
GG=3

# get size of directory
sz=$(du -s --block-size G  ./Backup_NVR | awk '{print int($0)}')

echo “Directory size: ” $sz
read -p "Press [Enter] key to continue…”

if [ $sz -ge $GG ] ; then  # too big delete older files

       find ./Backup_NVR -type f -mmin +$MM -delete
    find ./Backup_NVR -mindepth 1 -depth -type d -empty -delete
fi

UNQUOTE

Moderator's Comments:
Mod Comment Please use CODE tags (not QUOTE / UNQUOTE keywords) as required by forum rules!

Last edited by RudiC; 01-25-2017 at 01:34 PM.. Reason: Added CODE tags.
# 6  
Old 01-25-2017
I don't see anything obviously wrong You have edited this in Microsoft Word which has inserted a few nasty "smart quotes" into it. Replace all smart quotes with ' and " in an actual text editor.

And definitely do a "dry run" first: Print filenames instead of deleting them.

I'm not sure how the pause helps you; once you hit it, it either deletes the right files or the wrong ones...

Code:
#!/bin/bash
# delete files oder than MM minutes if the size exceeds GG gb

MM=60
GG=3

# get size of directory
sz=$(du -s --block-size G  ./Backup_NVR | awk '{print int($0)}')

echo "Directory size: " $sz
read -p "Press [Enter] key to continue…”

if [ $sz -ge $GG ] ; then  # too big delete older files

       find ./Backup_NVR -type f -mmin +$MM -print
    find ./Backup_NVR -mindepth 1 -depth -type d -empty -print
fi


Last edited by Corona688; 01-25-2017 at 02:39 PM..
These 2 Users Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help on simple shell script

Hello, I need to create one very simple shell script that checks if the first character of the file ./pump.txt is 0 and in that case gives a message. If the first character is instead 1, it does give a different message. I have written: irr= head -c 1 ./pump.txt if ]; then echo... (4 Replies)
Discussion started by: dcaccount
4 Replies

2. Shell Programming and Scripting

Simple Shell Script! Almost Done!

Hello, I am creating a shell script and I am almost done. I have certain things I want done in the shell but don't know how to finish it properly. Here is what I am aiming to do. I am aiming to have a shell that takes at least 3 parameters. The first two are the two words to replace (the... (3 Replies)
Discussion started by: ShellsNewb
3 Replies

3. Shell Programming and Scripting

Simple Shell Script? Someone help?

Write a shell script which adds up 10 numbers entered by the user and displays the result to the screen. You must use the read command to obtain the numbers from the user. Im a nooby noob (2 Replies)
Discussion started by: LinuxNubBrah
2 Replies

4. Shell Programming and Scripting

Help with simple Shell Script

Hi , I am in need of simple shell script that has one input file containing some words Input file 1 : ****ALEX***JOHN*******VIRGIL***** CHRITINE*****FAISAL*****DON***** ****ALEX***JOHN*******VIRGIL***** CHRITINE*****FAISAL*****DON***** ****ALEX***JOHN*******VIRGIL*****... (6 Replies)
Discussion started by: kmanjuna
6 Replies

5. Shell Programming and Scripting

Help with very simple Shell Script

Write a shell that receives as parameters two folder names. Copies the second folder as subfolder into the first one. Only folders and files with the '.txt' extension will be copied. Detect and avoid recursive copy. This is what I have to do and I don't know where to start. In fact, I started... (5 Replies)
Discussion started by: sharpsh07er
5 Replies

6. Shell Programming and Scripting

Help me with simple shell script.

Hello forum members, I have to redirect a output of command into a text file inside a script file but iam getting an errors.so please see below script and suggest me for corrections. #!/bin/ksh read IP_ADD echo nslookup $IP_ADD 2>&1| tee log1.txt cat /amex/gcst/siva/Testr/log1.txt... (6 Replies)
Discussion started by: rajkumar_g
6 Replies

7. Shell Programming and Scripting

Simple Shell Script

Hello Friends, I am writing a shell script which will grab a file if it exists and copies it to another folder and will append with current date. I have written but gives me error, plz help: -------------------------------------------- #!/usr/bin/sh source=/home/dev4rice/naveen/test1... (4 Replies)
Discussion started by: ganesh123
4 Replies

8. Shell Programming and Scripting

simple shell - how to get a parameter typed in a shell script

Hi, I am new to unix and using linux 7.2. I would like to create a script that would make it easyer for me to run my java programms. At the moment I have to type java myJavaprogram I am trying to write a script that will allow me to type something like this "myscript myJavaprogram" or maybe... (4 Replies)
Discussion started by: cmitulescu
4 Replies

9. Shell Programming and Scripting

Need help in a simple shell script

Hi All I have requirement to write a shell script which would look for the userid which is logged in , and once the User id is found i would delete certain lines from a parameter file .. here is what iam using a=ps -o user | grep -v user | uniq then using an if condition and... (4 Replies)
Discussion started by: raghav1982
4 Replies

10. UNIX for Advanced & Expert Users

I need of a simple shell script

Hi, I need of a simple shell script to launch a perl script. The complet path of the script is: /export/home/x2693/project/v02/appliancemanagement.pl (2 Replies)
Discussion started by: Minguccio75
2 Replies
Login or Register to Ask a Question