ssh 批量上傳文件

上傳文件大多數用的是ftp,但是用ftp有一點不好,就是本地和遠程的目錄要對應,這樣就要在多個目錄下去切換,這樣挺麻煩的,如果不注意的話,很有可能傳錯。所以想了個辦法利用scp來批量上傳文件或者目錄。

一,scp上傳不要輸入密碼

如果要用scp來上傳文件,第一步就要去掉scp上傳時要輸入密碼。要不然就沒辦法批量上傳了。具體請參考:ssh 不用輸入密碼

二,ssh批量上傳腳本

1,要上傳的文件列表放到一個test文件中

  1. root@ubuntu:/home/zhangy# cat test   
  2. /home/zhangy/test/aaa   
  3. /home/zhangy/test/nginx.conf   
  4.   
  5. /home/zhangy/test/test.sql   
  6. /home/zhangy/test/pa.txt   
  7. /home/zhangy/test/password  

上面就要上傳的文件。

2,批量上傳的腳本

vim file_upload.sh

 
  1. #!/bin/sh    
  2.    
  3. DATE=`date +%Y_%m_%d_%H`    
  4.    
  5. if [ $1 ]    
  6. then    
  7.   for file in $(sed '/^$/d' $1)     //去掉空行    
  8.   do   
  9.     if [ -f $file ]                 //普通文件    
  10.     then    
  11.       res=`scp $file $2:$file`      //上傳文件    
  12.       if [ -z $res ]                //上傳成功    
  13.       then    
  14.         echo $file >> ${DATE}_upload.log   //上傳成功的日誌    
  15.       fi    
  16.     elif [ -d $file ]              //目錄    
  17.     then    
  18.       res=`scp -r $file $2:$file`    
  19.       if [ -z $res ]    
  20.       then    
  21.         echo $file >> ${DATE}_upload.log    
  22.       fi    
  23.     fi    
  24.   done    
  25. else   
  26.   echo "no file" >> ${DATE}_error.log    
  27. fi   

上傳成功後,返回的是一個空行,上傳不成功,什麼都不返回

3,上傳的格式

  1. ./file_upload.sh test 192.168.1.13  

test是上傳列表文件,192.168.1.13文件要傳到的地方。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章