Приветствую снова!
Я, наверное, всем тут уже жутко надоел, но есть у меня ещё вот такая проблема - есть раскиданные по фолдерам кучки файлов, которые надо upload to ftp - каждую кучку в отдельный, специальный фолдер на фтп.
я наваял чтото типа такого:
####ana
echo "Starting script:ana $(date +%Y.%m.%d\ %H:%M:%S)..."
getfmts() { if [ -f "$1" ] || [ -d "$1" ]; then echo $(stat -c %Y $1); else echo 0; fi; }
DIRIN_ana=/DWD_sorted/ana # Full path to input directory
DIROUT_ana=/DWD_sorted/ana_sent # Full path to output directory
cd $DIRIN_ana
if [ "$(ls -A .|grep bufr)" ]; then echo "Processing files..."; else echo "No files"; exit; fi
for f in *; do
ts=$(date +%s); tsf=$(getfmts $f)
if [ $((ts-tsf)) -gt 10 ]; then
echo "Sending file $f to ftp..."
curl -T $f ftp://smart:smart@SM/../../smart/edit/dwd/ana
if [ $? -eq 0 ]; then
mv -f $f $DIROUT_ana/
else
echo "There was an error when trying to upload file!"
fi
fi
done
echo "Script finished: $(date +%Y.%m.%d\ %H:%M:%S)"
####hsy
echo "Starting script:hsy $(date +%Y.%m.%d\ %H:%M:%S)..."
getfmts() { if [ -f "$1" ] || [ -d "$1" ]; then echo $(stat -c %Y $1); else echo 0; fi; }
DIRIN_hsy=/DWD_sorted/hsy # Full path to input directory
DIROUT_hsy=/DWD_sorted/hsy_sent # Full path to output directory
cd $DIRIN_hsy
if [ "$(ls -A .|grep bufr)" ]; then echo "Processing files..."; else echo "No files"; exit; fi
for f in *; do
ts=$(date +%s); tsf=$(getfmts $f)
if [ $((ts-tsf)) -gt 10 ]; then
echo "Sending file $f to ftp..."
curl -T $f ftp://smart:smart@SM/../../smart/editor/dwd/gme/hsy
if [ $? -eq 0 ]; then
mv -f $f $DIROUT_hsy/
else
echo "There was an error when trying to upload file!"
fi
fi
done
echo "Script finished: $(date +%Y.%m.%d\ %H:%M:%S)"
####htp
echo "Starting script:htp $(date +%Y.%m.%d\ %H:%M:%S)..."
getfmts() { if [ -f "$1" ] || [ -d "$1" ]; then echo $(stat -c %Y $1); else echo 0; fi; }
DIRIN_htp=/DWD_sorted/htp # Full path to input directory
DIROUT_htp=/DWD_sorted/htp_sent # Full path to output directory
cd $DIRIN_htp
if [ "$(ls -A .|grep bufr)" ]; then echo "Processing files..."; else echo "No files"; exit; fi
for f in *; do
ts=$(date +%s); tsf=$(getfmts $f)
if [ $((ts-tsf)) -gt 10 ]; then
echo "Sending file $f to ftp..."
curl -T $f ftp://smart:smart@SM/../../smart/editor/dwd/htp
if [ $? -eq 0 ]; then
mv -f $f $DIROUT_htp/
else
echo "There was an error when trying to upload file!"
fi
fi
done
echo "Script finished: $(date +%Y.%m.%d\ %H:%M:%S)"
но это весьма длинно ( отдельных аплоадов получается под 20 штук),
а главное - некрасиво, не изящно, коряво как-то...
наверняка это можно сделать както покрасивше, но у меня толком нет идей, как именно.
не то чтобы это ктото кроме меня будет особо видеть, но всёравно, хочется, чтобы было красиво....
если кто сможет помочь примером - спасибо заранее!
PS да, структура с ветками «еррор» и «финишед» не допилена, так что в примере может быть неправильная логика на данный момент.
правильно - каждый блок аплоада выполняется после предыдущего, то есть они все идут по цепочке сверху вниз, независимо, предыдущий аплоад прошёл успешно, или нет (ну, запись в логфайл о неудачном, понятно, будет полезна)...