ftp伺服器和客戶端軟體都異常豐富,標準的ftp客戶端一般情況下已經夠用,但是lftp可能才是最強大的ftp客戶端軟體!這玩意十分不可思議!可以稱得上ftp中的戰鬥機!
緣起lftp比標準的ftp強大不少,還有很多其它值得研究的命令,建議以後ftp客戶端首選lftp!
同步指令碼(有bug)
cat deploy_static.sh
#!/bin/bash指令碼故障host=""
username="username"
password="yourpassword"
local_path="/home/xnow"
remote_path="/develop"
lftp -c "open $host
user $username $password
lcd $local_path
cd $remote_path
mirror --reverse --delete --dereference --verbose \
--exclude-glob=.git/ #<==強大的mirror功能
"
這個指令碼用了一段時間,都很不錯,直到某天開發同學急匆匆找我說把測試的資源發布到線上了,現在全部手動做了一次才恢復!分析問題原因發現 git裡的資料都是正常的,於是調出發布指令碼deploy_static.sh的日誌,發現有兩次錯誤,一次是連線伺服器失敗,最近的一次執行過程中cd 切換到開發目錄的時候失敗,報了550錯誤!是碰上又拍雲不靠譜的時候了嗎?
這就是問題的原因:在切換到線上開發目錄失敗的情況下,指令碼繼續向下執行,導致把本地開發目錄同步到線上正式環境目錄!於是,嘭~~
解決辦法
基於上面的分析,找到了幾條解決思路:
柳暗花明:更好的辦法
測試的時候發現lftp支援&&這種方式執行語句,只有在上乙個命令成功的情況下在繼續執行下乙個命令,幾乎和bash一樣!!!於是,一切困難迎刃而解~
修改後的指令碼在每個lftp命令後加上了&&,僅僅是幾個符號而且,簡單得想哭!
修改過後的暫無bug版deploy_static.sh:
cat deploy_static.sh
#!/bin/bashhost=""
username="username"
password="yourpassword"
local_path="/home/xnow"
remote_path="/develop"
lftp -c "open $host
user $username $password && \
lcd $local_path && \
cd $remote_path && \
mirror --reverse --delete --dereference --verbose \
--exclude-glob=.git/ #<==強大的mirror功能
對一次網路故障的分析
做網管 免不了遇到一些網路故障,有些網路故障可能找不出造成的原因,比如前段時間小王 遇到的一次網路故障 詳見 奇怪的網路故障 下文這個故障稱為第乙個故障 儘管問題解決了,但沒有找到故障原因,而今天說的這個網路故障 下文這個故障稱為第二個故障 很可能是第乙個故障造成的,因為第乙個故障解決後,第二個故障...
記一次manila故障
排查過程 1.檢視manila的日誌,api.log scheduler.log share.log,排程日誌最具參考性,但是顯示建立成功 實際狀態為creating 排到share時出現大量報錯 get all share usage failed 2.檢查後端儲存,節點均正常 排查過程 1.關閉...
一次svn的故障處理
辦公室乙個妹紙在用svn的時候,刪掉了乙個目錄,然後上傳的時候出現錯誤,根據報錯,度娘解釋要用cleanup,但是cleanup不能用,妹紙從網上查到要用sqlite3連線wc.db,然後delete一下任務堆積,但是妹紙執行後沒反應,於是妹紙就沒招了 把我叫了過去,於是排障開始了。根據報錯 回到工...