在 Linux 上安裝配置 BitTorrent Sync [轉]

背景介紹:
目前咱們線上的前端服務器數量比較多,超過200多臺,每次發佈新應用的時候,都是將軟件包放在一臺專門的Push服務器上,再由全部的前端服務器經過rsync自動同步。但隨着前端服務器的數量愈來愈多,Push服務器的帶寬已經成爲了瓶頸。html

而BitTorrent Sync這種P2P方式的同步則是一種解決方案。同時它的跨平臺支持也很是好,不管是Windows,Linux,Mac OS,甚至手機端都有相應的客戶端。雖然目前還沒有開源,但能夠無償使用,仍是很不錯的。前端

下面,就是咱們在線上的純Linux測試環境中的安裝與配置步驟:linux

Servers:
Master:idc2-server1
Slave:idc2-server二、idc2-server3web

  1. 下載BitTorrent Sync,在全部服務器上
    $ sudo wget http://download-lb.utorrent.com/endpoint/btsync/os/linux-x64/track/stable -O /tmp/btsync_x64.tar.gz
    $ sudo mkdir /opt/btsync
    $ cd /opt/btsync
    $ sudo tar xzf /tmp/btsync_x64.tar.gzvim

  2. 建立服務管理腳本,在全部服務器上
    $ sudo vim /etc/init.d/btsync
    服務器

    #!/bin/sh
    #
    # description: starts and stops the btsync client
    
    CONF=/opt/btsync/btsync.cfg
    PROC=/opt/btsync/btsync
    PIDFILE=/opt/btsync/btsync.pid
    
    start() {
      PID1=$(pidof btsync)
      if [ -z ${PID1} ]; then
        echo -n "Starting BitTorrent Sync: "
        ${PROC} --config ${CONF}
      else
        echo "BitTorrent Sync is already running at pid:${PID1}"
      fi
      return $?
    }  
    
    stop() {
      echo -n "Stopping BitTorrent Sync: "
      PID1=$(pidof btsync)
      if [ ! -z ${PID1} ]; then
        kill -9 ${PID1}
        echo "OK"
      else
        echo "Failed"
      fi
      return $?
    }  
    
    status() {
      PID1=$(pidof btsync)
      PID2=$(cat ${PIDFILE}) 
      echo -n "Checking BitTorrent Sync: "
      if [ ! -z ${PID1} ] && [ "${PID1}" -eq "${PID2}" ]; then
        echo "OK"
      else
        echo "Failed"
      fi
      return $?
    }  
    
    case "$1" in
      start)
       start
      ;;
      stop)
        stop
      ;;
      restart)
        stop
        sleep 1
        start
      ;;
      status)
        status
      ;;
      *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 2
    esac
    btsync Code

    sudo chmod +x /etc/init.d/btsyncdom

  3. 建立用於同步的目錄,在全部服務器上
    sudo mkdir /opt/btsync_transfertcp

  4. 建立配置文件,在idc2-server1上
    sudo vim /opt/btsync/btsync.conf
    ide

     { 
      "device_name": "idc2-server1",
      "listening_port" : 8889, // 0 - randomize port
    
      "check_for_updates" : false,
      "use_upnp" : false,
    
      "storage_path" : "/opt/btsync",
      "pid_file" : "/opt/btsync/btsync.pid",
    
      "download_limit" : 0, // 0 - no limit
      "upload_limit" : 0, 
    
      "webui" :
      {
        "listen" : "0.0.0.0:8888",
        "login" : "admin",
        "password" : "btsync"
      }
    
      ,
      "folder_rescan_interval" : 60,
      "lan_encrypt_data" : false,
      "lan_use_tcp" : true
    }
    btsync.conf Code
  5. 建立同步所需的密鑰,在idc2-server1上
    sudo /etc/init.d/btsync start
    打開Web UI:http://idc2-server1:8888
    用戶名: admin
    密碼: btsync測試

    點擊 "Add Folder",
    在 "Path" 中輸入 "/opt/btsync_transfer"
    點擊 "Generate" 獲得 "Secret" 爲 "ALUORWDEWOLV354ZHPHFT4TSQO67JWQAN"
    以下圖所示:

  6. 建立配置文件,在idc2-server2和idc2-server3上:
    sudo vim btsync.cfg

    { 
    #定義設備名稱,通常寫主機名或者IP
      "device_name": "idc2-server2",
    #是使用隨機端口仍是固定端口,0表示隨機
      "listening_port" : 8889, // 0 - randomize port
     
    #是否檢查文件更新
      "check_for_updates" : false,
    #使用UPnP進行端口映射
      "use_upnp" : false,
       
    #storage_path包含一些運行時產生的狀態文件,若是沒有定義,則會在二進制命令運行的目錄下產生一個.sync隱藏目錄
      "storage_path" : "/opt/btsync",
    #定義pid文件的路徑
      "pid_file" : "/opt/btsync/btsync.pid",
     
    #是否對上傳/下載進行限速,0表示不限速
      "download_limit" : 0, // 0 - no limit
      "upload_limit" : 0, 
      "webui" :
      {
    #若是去掉listen項,則表示禁用WEB UI
        "listen" : "0.0.0.0:8888", 
        "login" : "admin",
    #若是去掉login/password,則表示不用驗證
        "password" : "btsync"
      }
      , 
     
    #若是你在配置文件中設置了shared folders,則WEB UI中的會被禁止,配置文件中的會覆蓋UI中設置的。
      "shared_folders" :
      [ 
        {
    #你的secret,可使用--generate-secret參數生成
          "secret" : "ALUORWDEWOLV354ZHPHFT4TSQO67JWQAN", // * required field
    #同步的目錄
          "dir" : "/opt/btsync_transfer", // * required field
    #是否自動刪除文件
          "use_sync_trash" : false,
    #是否使用中繼服務器
          "use_relay_server" : true,
    #是否使用tracker服務器
          "use_tracker" : true,
          "search_lan" : true,
    #設置不用查找就能夠直接鏈接的機器   
          "known_hosts" : 
          [
            "idc2-server1:8889"
          ] 
        } 
      ] 
      ,
      "folder_rescan_interval" : 60,
      "lan_encrypt_data" : false, // Encryption is very painful in terms of speed. Disabling it for LAN to increase the speed. 
      "lan_use_tcp" : true
    }
    btsync.cfg Code

    sudo /etc/init.d/btsync start
    idc2-server3 同 idc2-server2設置,只需更改IP、主機名便可

  7. 在/opt/btsync_transfer中放置一些文件,就能夠查看同步的狀態了
    打開Web UI:http://idc2-server1:8888
    #將示例配置文件保存到當前目錄下:
    ./btsync –dump-sample-config > sync.conf
    #啓動btsync服務
    ./btsync –config sync.conf

  8. 注意事項
    若是是選擇只讀同步(服務器->本地),在文件傳送完畢後若是不想再同步,記得在本地客戶端上刪除同步的目錄,不然容易出現服務器端刪除了文件,本地也會自動的刪除該文件的狀況。固然,讀寫同步更是如此。

    參考資料:

    http://heylinux.com/archives/2917.html

    http://my.oschina.net/guol/blog/202002

相關文章
相關標籤/搜索