注意:mput上传可以带目录,put只上传文件,但put上传只能上传登录ftp 前停留的目录。
mput上传的文件路径,用户必须有访问权限。
否则无法上传。
#!/bin/sh
echo>/home/oracle/ftp/Thu_ftp
rq=$(date +%Y%m%d)
find /u01/backup/data/ora_rman_backup/ticket1/Thu/log/ | grep $rq>
/home/oracle/ftp/Thu_ftp
echo "open 192.168.248.106" >>/home/oracle/ftp/ftpcmd
echo "user ftp Sports-BsT_BeiJing ">>/home/oracle/ftp/ftpcmd
awk '{print "prompt mput ",$0;}' ftpfile>>/home/oracle/ftp/ftpcmd echo "quit">>/home/oracle/ftp/ftpcmd
echo>/home/oracle/ftp/ftp.out
ftp -ivn<ftpcmd>/home/oracle/ftp/ftp.out
egrep -i "ABORT|NOT|DENIED|ERROR|FAIL|A DIRECTORY|NO SUCH"
ftp.out>/dev/null
if [ $? -ne 0 ];then
exit
fi
exit
还有一种方法 justkk说的也要先把上传的文件找出来写到ftpfile里
#!/bin/ksh
(
echo "user abcabc"
echo "bin"
cat ftpfile|xargs -n1 echo put
) | ftp -inv ftp-ip-address
这个还比较麻烦,可以把ftp的输出信息定向到一个文件中,检查文件中是否有错误信息
ftp -ivn<ftpcmd>ftp.out
egrep -i "ABORT|NOT|DENIED|ERROR|FAIL|A DIRECTORY|NO SUCH"
ftp.out>/dev/null
if [ $? -ne 0 ];then
exit
fi
简化了一下,应该也更精确,通过FTP协议的响应码判断.
ftp -ivn<ftpcmd>ftp.out
grep "^[45]" ftp.out>/dev/null
if [ $? -ne 0 ];then
exit
fi
有个ftpfile 这里面就是上传的文件
上传完了这样删除
cat ftpfile | xargsrm -rf
"日期不是今天的文件"可以通过find命令查找
find . -mtime +1。