lftp利器與一次故障分析

2021-06-28 07:32:42 字數 1476 閱讀 2645

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/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功能

對一次網路故障的分析

做網管 免不了遇到一些網路故障,有些網路故障可能找不出造成的原因,比如前段時間小王 遇到的一次網路故障 詳見 奇怪的網路故障 下文這個故障稱為第乙個故障 儘管問題解決了,但沒有找到故障原因,而今天說的這個網路故障 下文這個故障稱為第二個故障 很可能是第乙個故障造成的,因為第乙個故障解決後,第二個故障...

記一次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一下任務堆積,但是妹紙執行後沒反應,於是妹紙就沒招了 把我叫了過去,於是排障開始了。根據報錯 回到工...