2015-11-02 52 views
0

IM試圖瞭解這兩個命令做purpase:什麼是命令的rsync -rvzh

config=$(date +%s) 
rsync -rvzh $1 /var/lib/tomcat7/webapps/ROOT/DataMining/target > /var/lib/tomcat7/webapps/ROOT/DataMining/$config 

這條線出現在一個更大的腳本 - script.sh看起來像這樣:

#! /bin/bash 

config=$(date +%s) 
rsync -rvzh $1 /var/lib/tomcat7/webapps/ROOT/DataMining/target > /var/lib/tomcat7/webapps/ROOT/DataMining/$config 

countC=0 
countS=`wc -l /var/lib/tomcat7/webapps/ROOT/DataMining/$config | sed 's/^\([0-9]*\).*$/\1/'` 
let countS-- 
let countS-- 
let countS-- 

while read LINEC#read line 
do 
    if [ "$countC" -gt 0 ]; then 
     if [ "$countC" -lt "$countS" ]; then 

      FILENAME="/var/lib/tomcat7/webapps/ROOT/DataMining/target/"$LINEC 
      count=0 
      countW=0 

      while read LINE 
      do 
       for word in $LINE; 
       do 
        echo "INSERT INTO data_mining.data (word, line, numWordLine, file) VALUES ('$word', '$count', '$countW', '$FILENAME');" >> /var/lib/tomcat7/webapps/ROOT/DataMining/query 
        mysql -u root -Alaba1515< /var/lib/tomcat7/webapps/ROOT/DataMining/query 
        echo > /var/lib/tomcat7/webapps/ROOT/DataMining/query 
        let countW++ 
       done 
       countW=0 
       let count++ 
      done < $FILENAME 
      count=0 

      rm -f /var/lib/tomcat7/webapps/ROOT/DataMining/query 
      rm -f /var/lib/tomcat7/webapps/ROOT/DataMining/$config 

     fi 
    fi 
    let countC++ 
done < /var/lib/tomcat7/webapps/ROOT/DataMining/$config #finish while 

我能夠找到很多關於rsync的紀錄片和它正在做什麼,但我不明白命令的其餘部分做了什麼。請幫忙嗎?

+1

http://explainshell.com/是你的朋友。 –

+1

也有,在這個腳本中有很多可怕的。例如,如果一行包含'*',那麼'$ LINE'中的'for word將會查看它運行的當前目錄中的文件。應該重寫爲使用'read -a'。另外,製作可能會導致數據庫內容無法引用並執行SQL注入攻擊的內容也是微不足道的。 –

回答

0

第一個命令將當前時間(以秒爲單位)分配給shell變量config。例如:

$ config=$(date +%s) 
$ echo $config 
1446506996 

rsync是一個文件複製實用程序。第二個命令因此創建參數1中所列目錄的備份副本(稱爲$1)。備份副本位於/var/lib/tomcat7/webapps/ROOT/DataMining/target。什麼被複制的日誌文件保存在var/lib/tomcat7/webapps/ROOT/DataMining/$config

rsync -rvzh $1 /var/lib/tomcat7/webapps/ROOT/DataMining/target > /var/lib/tomcat7/webapps/ROOT/DataMining/$config 

rsync選項的含義:

  • -r告訴rsync的遞歸複製文件跳水到子目錄

  • -v它告訴給請詳細說明,以便顯示覆制的內容。

  • -z告訴它在從一個位置到另一個位置的傳輸過程中壓縮文件。

  • -h告訴它以可讀的格式在輸出中顯示任何數字。

注意,因爲$1不是雙引號內,將這段腳本,如果目錄$1的名稱中包含空格失敗。