Linux下 定时计划上传ftp文件
注:Linux 原有一个很好的程序叫mirror 但是没有时间研究又赶着用这一功能,所以写了以下的bash脚本,仓促之作有很多不足之处,敬请指教。至于bash命令的详细说明请参考我前面的文章。
目标:每三分钟检查有没有文件更新(距上次修改时间有没有三分钟),如果有就上传,并且
删除原文件
在ftpconfig 目录下新建如下三个文件,并chmod a+x ****
excuteftpupload.sh tmpfile uploadfile.sh
test目录为上传文件所在的目录
ftptmpfile 目录为临时目录
***************************************************
[qqlaputa@test ftpconfig]$ cat uploadfile.sh
#!/bin/bash
# Author:shijian
# Date 02.11.2008
# Purpose:auto upload ftp files
DIR="/home/qqlaputa/test"
DIR2="/home/qqlaputa/ftpconfig"
DIR3="/home/qqlaputa/ftptmpfile"
for file in `ls -A $DIR`
do
FILE1=`date -r $DIR/$file +%s`
FILE2=`date -r $DIR2/tmpfile +%s`
if [ $FILE1 -lt $FILE2 ]
then
cp -f $DIR/$file $DIR3
rm -f $DIR/$file
else
echo not older $DIR/$file
fi
done
touch /home/qqlaputa/ftpconfig/tmpfile
sh /home/qqlaputa/ftpconfig/excuteftpupload.sh
#END
[qqlaputa@test ftpconfig]$
****************************************************
[qqlaputa@test ftpconfig]$ cat uploadfile.sh
#!/bin/bash
# Date 02.11.2008
# Purpose: auto upload ftp files
DIR="/home/qqlaputa/test"
DIR2="/home/qqlaputa/ftpconfig"
DIR3="/home/qqlaputa/ftptmpfile"
for file in `ls -A $DIR`
do
FILE1=`date -r $DIR/$file +%s` (注意这里有反引号
FILE2=`date -r $DIR2/tmpfile +%s`
if [ $FILE1 -lt $FILE2 ]
then
cp -f $DIR/$file $DIR3
rm -f $DIR/$file
else
echo not older $DIR/$file
fi
done
touch /home/qqlaputa/ftpconfig/tmpfile
sh /home/qqlaputa/ftpconfig/excuteftpupload.sh
#END
[qqlaputa@test ftpconfig]$ cat excuteftpupload.sh
ftp -v -n 192.168.40.11 << END
user 123_test 123_test
binary
hash
lcd /home/qqlaputa/ftptmpfile
prompt
mput *
bye
END
rm -f /home/qqlaputa/ftptmpfile/*
[qqlaputa@test ftpconfig]$
**********************************************************
定时设置 使用Linux 计划任务程序crontab
#crontab -e
*/3 * * * * /home/qqlaputa/ftpconfig/uploadfile.sh
#用crontab –l 查看计划任务
查看有没有执行
# tail /var/log/cron
查看tmpfile有没有更新
#ls -lrt /home/qqlaputa/ftpconfig
也可以用#mutt查看来没有收到邮件