上传文件大多数用的是ftp,但是用ftp有一点不好,就是本地和远程的目录要对应,这样就要在多个目录下去切换,这样挺麻烦的,如果不注意的话,很有可能传错。所以想了个办法利用scp来批量上传文件或者目录。
一,scp上传不要输入密码
如果要用scp来上传文件,第一步就要去掉scp上传时要输入密码。要不然就没办法批量上传了。具体请参考:ssh 不用输入密码
二,ssh批量上传脚本
1,要上传的文件列表放到一个test文件中
- root@ubuntu:/home/zhangy# cat test
 - /home/zhangy/test/aaa
 - /home/zhangy/test/nginx.conf
 - /home/zhangy/test/test.sql
 - /home/zhangy/test/pa.txt
 - /home/zhangy/test/password
 
上面就要上传的文件。
2,批量上传的脚本
vim file_upload.sh
- #!/bin/sh
 - DATE=`date +%Y_%m_%d_%H`
 - if [ $1 ]
 - then
 - for file in $(sed '/^$/d' $1) //去掉空行
 - do
 - if [ -f $file ] //普通文件
 - then
 - res=`scp $file $2:$file` //上传文件
 - if [ -z $res ] //上传成功
 - then
 - echo $file >> ${DATE}_upload.log //上传成功的日志
 - fi
 - elif [ -d $file ] //目录
 - then
 - res=`scp -r $file $2:$file`
 - if [ -z $res ]
 - then
 - echo $file >> ${DATE}_upload.log
 - fi
 - fi
 - done
 - else
 - echo "no file" >> ${DATE}_error.log
 - fi
 
上传成功后,返回的是一个空行,上传不成功,什么都不返回
3,上传的格式
- ./file_upload.sh test 192.168.1.13
 
test是上传列表文件,192.168.1.13文件要传到的地方。
 
 
 转载请注明
 作者:海底苍鹰
 地址:http://blog.51yip.com/linux/1356.html


			
 
  
								
								
				
				
				
				
				
				
				
微信收款码
支付宝收款码