technote:syncwatcher
This is an old revision of the document!
Running Syncs with inotify
The following script can be used to run the TapeTrack Synchronization command whenever a file is uploaded with FTP or SFTP.
The script does the following:
- Listens using
inotifyfor a change to the directory/var/sftp/user/upload. - Spawns a separate thread to run the syncronization.
- Writes output to the reports directory with a time and date stamp.
- Loops back to listen to for the next uploaded file.
#!/bin/bash
function control_c {
logger -s -t TapeTrackSyncWatcher Request to end TapeTrack Sync Watcher recieved
exit
};
set -e
trap control_c SIGINT
trap control_c SIGTERM
logger -s -t TapeTrackSyncWatcher Starting TapeTrack Sync Watcher
outfile=$(mktemp "${TMPDIR:-/tmp/}syncwatch.XXXXXXXXXXXX")
while true; do
#
# Wait on a change to the sftp directory
#
inotifywait -r -e close_write /var/sftp > $outfile 2> /dev/null
#
# A chance has been made so read the results into 3 variables (path, type, file)
#
read -r r1 r2 r3 < $outfile
#
# Delete the temp file
#
rm $outfile
base=`cut -d'/' -f-4 <<< $r1`
if grep -q "/upload/" <<< $r1 ; then
logger -s -t TapeTrackSyncWatcher Launching Sync fpr file $r1$r3
now=$(date +"%m_%d_%Y_%H_%M_%S")
syncfile=$r1$r3 TMSS10Sync -d $base/etc/default.ttidef > $base/reports/stdout-$now.txt 2> $base/reports/stderr-$now.txt &
else
logger -s -t TapeTrackSyncWatcher Skipping file update for file $r1$r3
fi
done
exit
technote/syncwatcher.1555353379.txt.gz · Last modified: 2025/01/21 22:07 (external edit)
