用curl实现自动上传下载
| November 19, 2008 10:57 | root | Via 本站原创
写了一个批量自动上传下载文件的小工具。 特点:
1. 文件名中可包含日期如TEST20070212.txt
2. 可多次运行,不会重复处理已成功的条目
3. 配置方便,异常处理完善
想来今后或许还用得上,所以放在这里晒一下。好不好用各位试下就知道了。 myftp.sh内容如下:
典型的配置范例myftp.cfg如下:
#SYSID FILE_NAME DIRECTION(DNLD/UPLD) REMOTE_PATH/ LOCAL_PATH/
0001 010YCDZ$YYYYMMDD$.txt UPLD ftp://user:passwd@10.245.6... /home/myftp/whdl/
0002 010YCJZ$YYYYMMDD$.TXT UPLD ftp://user:passwd@10.245.6... /home/myftp/whdl/
0003 010YJJS$YYYY-MM-DD$.TXT DNLD ftp://user:passwd@10.245.6... /home/myftp/whdl/
1. 文件名中可包含日期如TEST20070212.txt
2. 可多次运行,不会重复处理已成功的条目
3. 配置方便,异常处理完善
想来今后或许还用得上,所以放在这里晒一下。好不好用各位试下就知道了。 myftp.sh内容如下:
#!/bin/bash
#Author: Robin Guo
DATE_YYYYMMDD=`date +%Y%m%d`
DATE_YYMMDD=`date +%y%m%d`
DATE_YYYY_MM_DD=`date +%Y-%m-%d`
#日志文件~/log/YYYYMMDD.LOG
FTP_LOG=~/log/${DATE_YYYYMMDD}.LOG
#Function ftp_download
#Example:
#ftp_download ftp://interfs:qwerasdf@10.... config.test
ftp_download()
{
if [ "$#" = "2" ]
then
if [ -f $2 ]
then
#文件已存在,说明上次下载已成功,可跳过
echo "INFO : $2 exists" | tee -a $FTP_LOG
else
echo "FROM : $1" | tee -a $FTP_LOG
echo "TO : $2" | tee -a $FTP_LOG
curl -s -P 21000 --connect-timeout 8 --max-time 60 $1 -o $2 > /dev/null 2>&1
CURL_RETCODE=$?
if [ "$CURL_RETCODE" = "0" ]
then
echo "INFO : downlaod $1 is ok" | tee -a $FTP_LOG
touch $2 > /dev/null 2>&1
else
echo "ERROR: download $1 is failed. curl return ($CURL_RETCODE)" | tee -a $FTP_LOG
rm -f $2 > /dev/null 2>&1
fi
fi
echo "" | tee -a $FTP_LOG
fi
}
#Function ftp_upload
#Example:
#ftp_upload uploadfile.txt ftp://interfs:qwerasdf@10....
ftp_upload()
{
if [ "$#" = "2" ]
then
if [ -f $1 ]
then
if [ -f $1.ok ]
then
#“文件.ok”存在,说明上次已成功上传,可跳过
echo "INFO : already upload $1" | tee -a $FTP_LOG
else
echo "FROM : $1" | tee -a $FTP_LOG
echo "TO : $2" | tee -a $FTP_LOG
curl -s -P 21000 --connect-timeout 8 --max-time 60 -T $1 $2 > /dev/null 2>&1
CURL_RETCODE=$?
if [ "$CURL_RETCODE" = "0" ]
then
#上传成功,做标记
touch ${1}.ok > /dev/null 2>&1
echo "INFO : upload $1 is ok" | tee -a $FTP_LOG
else
echo "ERROR: upload $1 is failed. curl return ($CURL_RETCODE)" | tee -a $FTP_LOG
fi
fi
else
echo "ERROR: upload failed. $1 not exists." | tee -a $FTP_LOG
fi
echo "" | tee -a $FTP_LOG
fi
}
date "+%y-%m-%d %H:%M" | tee -a $FTP_LOG
if [ "$#" != "1" ]
then
echo "Usage: ftp.sh ftp.cfg"
exit 1
fi
FTP_CONFIG=$1
if [ -f $FTP_CONFIG ]
then
echo "INFO : Config File: $FTP_CONFIG" | tee -a $FTP_LOG
echo "" | tee -a $FTP_LOG
else
echo "ERROR: Config File $FTP_CONFIG not exist" | tee -a $FTP_LOG
exit 1
fi
killall curl > /dev/null 2>&1
#从配置中读取条目
while read V_SYSID V_FILE_NAME V_DIRE V_REMOTE_PATH V_LOCAL_PATH
do
FIRST_CHAR=${V_SYSID:0:1}
if [ "$FIRST_CHAR" != "#" ]
then
#展开文件名中的日期段
FILE_NAME=${V_FILE_NAME}
FILE_NAME=${FILE_NAME/\$YYYYMMDD\$/$DATE_YYYYMMDD} # $YYYYMMDD$ to 20070120
FILE_NAME=${FILE_NAME/\$YYMMD\$/$DATEYYMMDD} # $YYMMDD$ to 070120
FILE_NAME=${FILE_NAME/\$YYYY-MM-DD\$/$DATE_YYYY_MM_DD} # $YYYY-MM-DD$ to 2007-01-20
if [ "$V_DIRE" = "DNLD" ]
then
echo "INFO : Download ${FILE_NAME} ... " | tee -a $FTP_LOG
ftp_download ${V_REMOTE_PATH}${FILE_NAME} ${V_LOCAL_PATH}${FILE_NAME}
fi
if [ "$V_DIRE" = "UPLD" ]
then
echo "INFO : Upload ${FILE_NAME}... " | tee -a $FTP_LOG
ftp_upload ${V_LOCAL_PATH}${FILE_NAME} ${V_REMOTE_PATH}${FILE_NAME}
fi
fi
done < $FTP_CONFIG
#Author: Robin Guo
DATE_YYYYMMDD=`date +%Y%m%d`
DATE_YYMMDD=`date +%y%m%d`
DATE_YYYY_MM_DD=`date +%Y-%m-%d`
#日志文件~/log/YYYYMMDD.LOG
FTP_LOG=~/log/${DATE_YYYYMMDD}.LOG
#Function ftp_download
#Example:
#ftp_download ftp://interfs:qwerasdf@10.... config.test
ftp_download()
{
if [ "$#" = "2" ]
then
if [ -f $2 ]
then
#文件已存在,说明上次下载已成功,可跳过
echo "INFO : $2 exists" | tee -a $FTP_LOG
else
echo "FROM : $1" | tee -a $FTP_LOG
echo "TO : $2" | tee -a $FTP_LOG
curl -s -P 21000 --connect-timeout 8 --max-time 60 $1 -o $2 > /dev/null 2>&1
CURL_RETCODE=$?
if [ "$CURL_RETCODE" = "0" ]
then
echo "INFO : downlaod $1 is ok" | tee -a $FTP_LOG
touch $2 > /dev/null 2>&1
else
echo "ERROR: download $1 is failed. curl return ($CURL_RETCODE)" | tee -a $FTP_LOG
rm -f $2 > /dev/null 2>&1
fi
fi
echo "" | tee -a $FTP_LOG
fi
}
#Function ftp_upload
#Example:
#ftp_upload uploadfile.txt ftp://interfs:qwerasdf@10....
ftp_upload()
{
if [ "$#" = "2" ]
then
if [ -f $1 ]
then
if [ -f $1.ok ]
then
#“文件.ok”存在,说明上次已成功上传,可跳过
echo "INFO : already upload $1" | tee -a $FTP_LOG
else
echo "FROM : $1" | tee -a $FTP_LOG
echo "TO : $2" | tee -a $FTP_LOG
curl -s -P 21000 --connect-timeout 8 --max-time 60 -T $1 $2 > /dev/null 2>&1
CURL_RETCODE=$?
if [ "$CURL_RETCODE" = "0" ]
then
#上传成功,做标记
touch ${1}.ok > /dev/null 2>&1
echo "INFO : upload $1 is ok" | tee -a $FTP_LOG
else
echo "ERROR: upload $1 is failed. curl return ($CURL_RETCODE)" | tee -a $FTP_LOG
fi
fi
else
echo "ERROR: upload failed. $1 not exists." | tee -a $FTP_LOG
fi
echo "" | tee -a $FTP_LOG
fi
}
date "+%y-%m-%d %H:%M" | tee -a $FTP_LOG
if [ "$#" != "1" ]
then
echo "Usage: ftp.sh ftp.cfg"
exit 1
fi
FTP_CONFIG=$1
if [ -f $FTP_CONFIG ]
then
echo "INFO : Config File: $FTP_CONFIG" | tee -a $FTP_LOG
echo "" | tee -a $FTP_LOG
else
echo "ERROR: Config File $FTP_CONFIG not exist" | tee -a $FTP_LOG
exit 1
fi
killall curl > /dev/null 2>&1
#从配置中读取条目
while read V_SYSID V_FILE_NAME V_DIRE V_REMOTE_PATH V_LOCAL_PATH
do
FIRST_CHAR=${V_SYSID:0:1}
if [ "$FIRST_CHAR" != "#" ]
then
#展开文件名中的日期段
FILE_NAME=${V_FILE_NAME}
FILE_NAME=${FILE_NAME/\$YYYYMMDD\$/$DATE_YYYYMMDD} # $YYYYMMDD$ to 20070120
FILE_NAME=${FILE_NAME/\$YYMMD\$/$DATEYYMMDD} # $YYMMDD$ to 070120
FILE_NAME=${FILE_NAME/\$YYYY-MM-DD\$/$DATE_YYYY_MM_DD} # $YYYY-MM-DD$ to 2007-01-20
if [ "$V_DIRE" = "DNLD" ]
then
echo "INFO : Download ${FILE_NAME} ... " | tee -a $FTP_LOG
ftp_download ${V_REMOTE_PATH}${FILE_NAME} ${V_LOCAL_PATH}${FILE_NAME}
fi
if [ "$V_DIRE" = "UPLD" ]
then
echo "INFO : Upload ${FILE_NAME}... " | tee -a $FTP_LOG
ftp_upload ${V_LOCAL_PATH}${FILE_NAME} ${V_REMOTE_PATH}${FILE_NAME}
fi
fi
done < $FTP_CONFIG
典型的配置范例myftp.cfg如下:
#SYSID FILE_NAME DIRECTION(DNLD/UPLD) REMOTE_PATH/ LOCAL_PATH/
0001 010YCDZ$YYYYMMDD$.txt UPLD ftp://user:passwd@10.245.6... /home/myftp/whdl/
0002 010YCJZ$YYYYMMDD$.TXT UPLD ftp://user:passwd@10.245.6... /home/myftp/whdl/
0003 010YJJS$YYYY-MM-DD$.TXT DNLD ftp://user:passwd@10.245.6... /home/myftp/whdl/
What is dbcached?和如何去安装dbcached和使用
| November 18, 2008 18:28 | root | Via 本站原创

Installation (安装)
wget http://www.monkey.org/~pro...
tar zxvf libevent-1.3e.tar.gz
cd libevent-1.3e/
./configure --prefix=/usr
make && make install
cd ../
wget http://dbcached.googlecode...
tar zxvf dbcached-1.0.beta2.tar.gz
cd dbcached-1.0.beta2/
./configure --prefix=/usr/local/dbcached --with-libevent=/usr
make && make install
cd ../
Run as a daemon (作为守护进程运行)
/usr/local/dbcached/bin/memcached -d -m 256 -p 11211 -c 51200 -u nobody -x 192.168.0.2 -y 26010 -z 26010
● -x {ip_addr} hostname or IP address of nmdb server
● -y {num} TCP port number of nmdb server (default: 26010) for set & get command
● -z {num} UDP port number of nmdb server (default: 26010) only for set command, UDP will be used to replace TCP for set command when using parameter -z
● -x {IP地址} nmdb 服务器的域名或者IP地址,推荐使用IP地址
● -y {端口号} nmdb 服务器的TCP端口号 (默认: 26010) 支持 set/delete/... 等写命令 和 get 等读命令
● -z {端口号} nmdb 服务器的UDP端口号 (默认: 26010) 只支持 get 等都命令, 当使用 -z 参数时,将使用 UDP 协议代替 TCP 协议执行 set 操作,执行 get 操作时仍然使用 TCP 协议。强烈推荐加上 -z 参数。
● 其他参数跟 memcached 1.2.4 完全一样,就不再详细说明。
● 如果想让 dbcached 通过 NMDB 保存数据时采用 TCP 协议,去掉 -z 参数即可,例如:(除非因防火墙、NAT穿透等问题导致 UDP 协议不可用,否则不建议使用 TCP 协议)
/usr/local/dbcached/bin/memcached -d -m 256 -p 11211 -c 51200 -u nobody -x 192.168.0.2 -y 26010
● 如果想让 dbcached 作为普通的 Memcached 运行,去掉 -x、-y、-z 参数即可,例如:
/usr/local/dbcached/bin/memcached -d -m 256 -p 11211 -c 51200 -u nobody
载录来源:http://code.google.com/p/d...
张也转载了:http://blog.s135.com/read....
周立功 我的25年嵌入式生涯(转 可以得到某些启发)
| November 18, 2008 18:17 | root | Via 本站原创
http://blog.sina.com.cn/s/blog_4d52f5a701000bav.html
老大的lighttpd配置文章
| November 18, 2008 11:42 | root | Via 本站原创
http://blog.sina.com.cn/s/articlelist_1340168604_2_1.html
ubuntu下配置nginx+php+mysql+zend
http://www.zhanghaifeng.com/archives/33
CentOS 5.1下 postfix + extmail + dovecot + maildrop 最新版安装笔记:
http://hi.baidu.com/delphiss/blog/item/38571c94f7a7d50e7af48052.html
http://www.zhanghaifeng.com/archives/33
CentOS 5.1下 postfix + extmail + dovecot + maildrop 最新版安装笔记:
http://hi.baidu.com/delphiss/blog/item/38571c94f7a7d50e7af48052.html




