.

iT邦幫忙

0

[0125已更新步驟]PuTTY 移動備份資料時操作失誤 如何挽回

  • 分享至 

  • xImage

各位前輩大家好,新年快樂
今天我在使用PuTTY移動公司系統備份資料的時候,手殘key錯
我原本應該要key這樣
mv /usr/local/tomcat8/logs//home/kuser/logs_bak/logs_20250124
但不小心key成這樣子
mv /usr/local/tomcat8/ /home/kuser/logs_bak/logs_20250124
前面的路徑資料夾少了logs

一開始還沒有發現,所以先是照原本的步驟
[root@localhost kuser]# cd/usr/local/tomcat8
bash: cd: /usr/local/tomcat8: 沒有此一檔案或目錄
[root@localhost kuser]# mkdir logs
mkdir: 無法建立目錄"logs":檔案已存在
系統顯示檔案已存在,當時沒有多想
所以有把繼續操作把舊的logs_bak給刪除的步驟
[root@localhost kuser]# cd /home/kuser/logs_bak
[root@localhost logs_bak]# ls
[root@localhost logs_bak]# rm - r -f 舊的資料夾
[root@localhost kuser]# cd

https://ithelp.ithome.com.tw/upload/images/20250124/20171593yYGWVR53HJ.jpg

接著就開始輸入指令重新啟動系統
[root@localhost ~]# cd /usr/local/tomcat8
系統就跑出
bash: cd: /usr/local/tomcat8: 沒有此一檔案或目錄
然後我再繼續嘗試
[root@localhost ~]# sh /usr/local/tomcat8/bin/startup.sh
一樣就跳出
sh: /usr/local/tomcat8/bin/startup.sh: 沒有此一檔案或目錄
這個時候才發現我自己最前面移動資料夾的時候,漏了一層

因此想說把他移回去
[root@localhost ~]# cd /usr
[root@localhost usr]# ls
[root@localhost usr]# cd /usr/local
[root@localhost local]# cd /usr/local/tomcat8
bash: cd: /usr/local/tomcat8: 沒有此一檔案或目錄
[root@localhost local]# cd /usr/local
[root@localhost local]# ls
[root@localhost local]# mkdir tomcat8
[root@localhost local]# ls
[root@localhost local]# cd /usr/local/tomcat8
[root@localhost local]# ls
[root@localhost local]# mkdir logs
https://ithelp.ithome.com.tw/upload/images/20250124/20171593rOjgvo6cEP.jpg

接著意識到startup.sh是在bin資料夾裡面
於是我又這樣操作
[root@localhost usr]# cd /usr/local
[root@localhost local]# cd /usr/local/tomcat8
[root@localhost tomcat8]# cd /usr/local/tomcat8/bin/startup.sh
果不其然的看到這行代碼
sh: usr/local/tomcat8/bin/staartup.sh: 沒有此一檔案或目錄

所以就開始各資料夾ls翻找
最後在
[root@localhost kuser]# cd /home/kuser/logs_bak
[root@localhost logs_bak]# cd /home/kuser/logs_bak/logs_20250124
[root@localhost logs_bak]# ls
找到bin資料夾

--20250125 14:30更新--
下面是我目前資料夾的分層狀況

https://ithelp.ithome.com.tw/upload/images/20250125/20171593F9J1D8gKXj.jpg

https://ithelp.ithome.com.tw/upload/images/20250125/20171593sz3i0YkjZc.jpg

https://ithelp.ithome.com.tw/upload/images/20250125/201715936YjbxotIX4.jpg

由於 cd /usr/local/tomcat8/裡面只有 bin/ logs/ ,沒有 conf/ lib/ temp/等資料夾且 cd /usr/local/tomcat8/logs 裡面有多了一層logs資料夾

這樣我是否是要這樣操作才能順利把資料夾與檔案歸位?
1.
mv /home/kuser/logs_bak/logs_20250124//usr/local/tomcat8
把 conf/、lib/、webapps/、logs/、temp/ 等資料夾
搬回usr/local/tomcat8資料夾內
2.
mv /usr/local/tomcat8/logs/logs/ /usr/local/tomcat8

.
圖片
  直播研討會

1 個回答

0
zivzhong
iT邦研究生 4 級 ‧ 2025-01-25 03:59:44
最佳解答

參考 Chatgpt 回答:
根據您的描述,整個 tomcat8 目錄其實已被「搬家」到 /home/kuser/logs_bak/logs_日期 裡面了,導致原本在 /usr/local/ 底下的 tomcat8 不見。只要尚未刪除到原本 tomcat8 裡的檔案(尤其是 bin、conf、lib 等資料夾),通常都能直接「搬回」原位即可。以下提供幾個排查與恢復的建議步驟:


1. 確認 Tomcat8 目錄是否完整

  1. 進入您剛找到的 logs_20250124 資料夾

    cd /home/kuser/logs_bak/logs_20250124
    ls
    

    應該會看到原先 tomcat8 內熟悉的結構:

    • bin/(含 startup.sh、shutdown.sh 等)、
    • conf/lib/webapps/logs/temp/
      等資料夾。

    若這些都還在,就代表您「移動」的不只是 logs,而是整個 tomcat8 目錄。

  2. 檢查是否有重要檔案缺失

    • 若您之前在 logs_bak 裡面做了 rm -r -f 舊的資料夾 等指令,請確認是否有誤刪到 binconf 等資料夾。
    • 如果誤刪了關鍵檔案(如 startup.shcatalina.sh 等),那可能就需要從備份或重新安裝 Tomcat 來恢復。

2. 將被誤移走的 Tomcat8 目錄搬回原位

假設您確定 logs_20250124 資料夾裡面包含原本的所有 Tomcat 檔案(bin/conf/ 等),只要把它「搬回」 /usr/local/tomcat8 即可。步驟如下:

  1. 先把您臨時建立的空 tomcat8 資料夾刪除
    (因為您前面為了嘗試修復已經 mkdir /usr/local/tomcat8 以及 mkdir logs 等)

    rm -rf /usr/local/tomcat8
    

    注意:此步驟會刪掉您目前 /usr/local/tomcat8 下所有內容,如果那裡真的只是空資料夾就沒問題。)

  2. 將誤搬走的目錄搬回

    mv /home/kuser/logs_bak/logs_20250124 /usr/local/tomcat8
    

    搬完後,再到 /usr/local/tomcat8 底下看一下結構是否完整:

    cd /usr/local/tomcat8
    ls
    

    如果能看到 bin/ conf/ lib/ logs/ webapps/ 等就代表已經回復正常。

  3. 嘗試啟動 Tomcat

    sh /usr/local/tomcat8/bin/startup.sh
    

    或是進入 bin/ 目錄後執行:

    cd /usr/local/tomcat8/bin
    sh startup.sh
    

    若能正常顯示 Tomcat started. 或類似訊息,就代表修復成功。


3. 若關鍵檔案已誤刪

如果您在執行 rm -r -f 時,不小心刪除了 Tomcat 的關鍵檔案或資料夾(binconf 之類),那就可能要考慮:

  1. 從備份中恢復
    若公司有定期備份 Tomcat 安裝資料夾或整台系統快照,可以從備份中恢復 /usr/local/tomcat8

  2. 重新安裝或重新下載 Tomcat

    • 若 Tomcat 並無特殊客製化設定,您可以直接重新下載相同版本,解壓縮到 /usr/local/tomcat8,再把您需要的設定檔(server.xmltomcat-users.xml 等)或 webapps 裡的專案放回去。
  3. 檢查是否還保留在某個路徑下

    • 例如您只刪除了 logs_bak 下的一些資料夾,但並未把 bin 等檔案刪掉,那可能還留在 logs_20250124 裡的子資料夾中。請再多檢查一下目錄結構。

4. 後續建議

  1. 謹慎使用 rm -r -f

    • 移動檔案或資料夾前,先確認路徑是否正確,避免類似情況再次發生。
    • 建議可以用 mv -i 增加提示,或在刪除前使用 ls 驗證目錄內容。
  2. 建立良好的備份機制

    • 在改動關鍵資料夾(如 Tomcat、系統設定檔)前,先行備份或做好版本控制。
  3. 使用絕對路徑或相對路徑時保持警覺

    • 例如本次意外就因為 /usr/local/tomcat8/logs/usr/local/tomcat8/ 的差別導致。
  4. 分層管理 log 和應用程式

    • 可以將 Tomcat 的 logs 放到 /var/log/tomcat 或其他獨立路徑,減少對主程式目錄的誤動作風險。

總結

最主要的解法就是把您「誤搬走」的 tomcat8 目錄搬回 /usr/local/tomcat8。您可以:

  1. 確認 /home/kuser/logs_bak/logs_20250124 是否包含 Tomcat 的 bin/conf/lib/webapps/ 等資料夾。
  2. 刪除 您臨時新建的空 /usr/local/tomcat8 目錄。
  3. /home/kuser/logs_bak/logs_20250124 移回 /usr/local/tomcat8
  4. 測試啟動,若檔案皆齊全,就能恢復正常。否則,就可能需要從備份或重新安裝/部署 Tomcat。

若有更多疑問或進一步問題,歡迎再提問,祝您順利將環境恢復!

kevin32 iT邦新手 5 級 ‧ 2025-01-25 10:57:22 檢舉

感謝大大的協助指導。

經檢查後我的狀況是這樣
cd /home/kuser/logs_bak/logs_20250124
ls
看到的是conf/、lib/、webapps/、logs/、temp/ 等資料夾。

cd /usr/local/tomcat8/
ls
bin/ logs/
cd /usr/local/tomcat8/bin
ls
有看到startup.sh、shutdown.sh等資料夾
cd /usr/local/tomcat8/logs
ls
catalina.out logs/
cd /usr/local/tomcat8/logs/logs
ls
catlina.日期.log、catalina.out、host-manager.日期.log、
localhost.日期log、localhost_access_log.日期.txt、
manager.日期.log

目前感覺有問題的地方應該是

  1. 我並沒有把
    在cd /home/kuser/logs_bak/logs_20250124裡面的
    conf/、lib/、webapps/、logs/、temp/ 等資料夾 跟著bin資料夾一起搬回
    cd /usr/local/tomcat8
  2. 我在
    cd /usr/local/tomocat8/logs裡面多建了一層logs

這樣我是否就只需要執行
1.
mv /home/kuser/logs_bak/logs_20250124//usr/local/tomcat8
把 conf/、lib/、webapps/、logs/、temp/ 等資料夾
搬回usr/local/tomcat8資料夾內
2.
mv /usr/local/tomcat8/logs/logs/ /usr/local/tomcat8

kevin32 iT邦新手 5 級 ‧ 2025-01-25 11:32:16 檢舉

補充
執行sh /usr/local/tomcat8/bin/startup.sh的時候
是有成功看到
tomcat started 的訊息

我要發表回答

立即登入回答