Here’s’ a script that moves or copies certain files (in my case Asterisk recordings) of anything above a certain date (as defined in the CLI) to a destination you pick.
You must first define the sourcepath, sourcefilename, destination and an option to flag move or just copy.
Place it anywhere and execute ./archivefiles 10
-> which means move/copy files that are over 10 days old from date to a desired location.
You could of course run it in cron if you like on a regular basis. Say you run ./
Here’s the script. Copy from the start till the end.
1) nano /usr/bin/archivefiles # create it
2) paste start –> end of script below # copy the script
3) chmod +x /usr/bin/archivefiles # make it executable
NOTE: Make sure your date/time in server is consistent/correct.
###start###
#!/bin/bash
# [email protected]
# usage #archivefiles 10 (meaning archivefiles will find files older than 10 days to do a move or copy)
#
# DEFINE THESE
SOURCEPATH=/var/spool/asterisk/monitor/ # With trailing / (slash )
SOURCEFILENAME=*.wav # filetype
DEST=/usr/src/mytestdst/ # With trailing / (slash )
MOVE=0 # NOTE:0 – copy, 1 – move
#
#
# START THE SCRIPT
# CHECK IF OLDER THAN VARIABLE DEFINED
#
OLDERTHAN=$1
if [[ $OLDERTHAN = “” ]]; then
echo “Define a period. Like 10 for 10 days”
exit 1
else
echo “”
fi
CHECK IF VALUE ENTERED IS AN INTEGER
#
if [ $OLDERTHAN ]; then
if [ ! $(echo “$OLDERTHAN” | grep -E “^[0-9]+$”) ]; then
echo $OLDERTHAN is not a valid integer.
exit 1
else
if ! [ $OLDERTHAN -ge 0 ] || ! [ $OLDERTHAN -le 10000 ]; then
echo $OLDERTHAN is an invalid value. Range is [1-10000]
exit 1
fi
fi
fi
CHECK IF SOURCE DIRECTORY EXIST
#
if [[ -d $SOURCEPATH ]]; then
echo “OK – Source directory exits”
cd $SOURCEPATH
else
echo “Source Directory not found, check your settings… quitting”
exit 1
fi
grabfiles=ls -l $SOURCEPATH$SOURCEFILENAME | head -n 1 | grep -c "-r"
if [[ $grabfiles != “0” ]]; then
echo “OK – Source files exist”
else
echo “Oops, no source files, check your settings…quitting”
exit 1
fi
# CHECK IF DESTINATION EXISTS
#
if [ -d $DEST ]; then
echo “OK – Destination directory exits”
else
echo “Destination directory not found, check your settings… quitting”
exit 1
fi
Tried to get this working but repeated failed attempts with error below….
OK – Source directory exits
OK – Source files exist
OK – Destination directory exits
find: invalid argument `+' to `-mtime'
Give more details like your OS platform, etc….
centos 5.5
freepbx 2.9
asterisk 1.8.1.3
Would you like any more information to troubleshoot this?