ftp文件上传脚本
简介
在shell脚本中使用ftp命令或者curl命令上传日志文件到ftp服务器,用于定时备份文件到ftp服务器。
ftp上传文件
ftp参数
-
命令行参数
-i #使用非交付模式(默认是交互模式,每次操作前会有个提示让你确认)
-n #不使用当前用户名登录,而是在命令行使用user name passowrd登录 -
交互参数
user name password #使用name和password登录服务器
lcd path #切换本地路径
cd path #切换服务端路径
binary #使用二进制传输模式,如果非二进制,传输图片或者可执行文件可能无法打开。
put local-file [remote-file] #上传本地文件local-file到服务端
get
mput filepattern #当前路径下使用正则匹配满足filepattern的文件都会被上传(未执行glob关闭正则)
脚本
#!/bin/bash
ftpserver="ftpserverip"
ftpuser="username"
ftppass="password"
ftpput(){
ftp -i -n $ftpserver<<END #1>/dev/null 2>/dev/null
user $ftpuser $ftppass
lcd $1
cd $2
put $3 $4
END
}
loginfo(){
tt=$(date +"%Y-%m-%d %H:%M:%S :: ")
echo "$tt $1" >> ~/scripts/backup.log
}
mvlog(){
loginfo "backup log in $1 to ftpserverip:$2"
cd $1 || exit 1
filelist1=$(find . -maxdepth 1 -name "*.gz" -type f -mmin +180)
filelist2=$(find . -maxdepth 1 -name "*.zip" -type f -mmin +180)
filelist="$filelist1 $filelist2"
for ff in ${filelist[@]}
do
loginfo "backup $ff"
fname=`basename $ff`
ftpput $1 $2 $ff $fname && rm -f $ff
done
}
mvlog /localpath /destpath
curl上传文件
curl与ftp服务器交互
使用curl的好处是可以使用--limit-rate 1M来限制文件上传速率为1M
#假设ftp服务器ip为ftpserverip,用户名为username,密码为password,要上传的本地文件名为fname
curl ftp://$ftpserverip/fname -u "$username:$password" -T "{fname}" --limit-rate 1M
#创建文件夹dirname
curl ftp://$ftpserverip/ -u "$username:$password" -X "MKD dirname"
#删除文件夹
curl ftp://$ftpserverip/ -u "$username:$password" -X "RMD dirname"
#查看ftp服务器文件列表
curl ftp://$ftpserverip/ -u "$username:$password"
#下载文件
curl ftp://$ftpserverip/fname -u "$username:$password" -o fname
mvlog(){
loginfo "backup log in $1 to ftpserverip:$2"
cd $1 || exit 1
filelist1=$(find . -maxdepth 1 -name "*.gz" -type f -mmin +180)
filelist2=$(find . -maxdepth 1 -name "*.zip" -type f -mmin +180)
filelist="$filelist1 $filelist2"
for ff in ${filelist[@]}
do
loginfo "backup $ff"
fname=`basename $ff`
curl ftp://$ftpserverip/$2/$fname -u "$username:$password" -T "{$fname}"
done
}
mvlog /localpath destpath

浙公网安备 33010602011771号