背景:使用mv對服務器檔案進行遷移的程序中,因為網路中斷,所以遷移到一半被停止了,
現狀:有一部分檔案沒有遷移完,但是檔案夾已經存在了,重新mv提示檔案夾已經存在,切已經有檔案,所以不能洗掉
重點提示:如果遠程遷移服務器上的檔案或者其他耗時較長的的命令,一定要加在命令的最后加 & 字符,讓命令在后臺運行,這樣就算本地到服務器的網路中斷了,命令也不會被中斷
解決方法:
在網上找了資料,發現沒有能直接簡單復制的方法,所以用以下兩條命令進行剩余檔案的遷移
cd /trans/data/smb
#/trans/data/smb表示待遷移檔案所在的源目錄,之所以要進入這個目錄執行命令,是因為find進行查找的時候,使用相對路徑的話,后續能直接拼接到目標目錄
find ./ -type f > /tmp/tmp_20220115.txt
#查看當前目錄還有哪些檔案待遷移的,然后寫入臨時檔案
while read i; do mv "$i" "/data/smb/$i"; done < /tmp/tmp_20220115.txt
#讀取臨時檔案中的檔案串列,逐個檔案進行遷移
#用while回圈是因為檔案中會有空格,如果用for的話,會將類似Red Hat這種檔案夾拆分成Red和Hat,不符合實際的情況
#如果遷移程序中報錯目錄不存在的,執行mkdir -p 《目錄的絕對路徑》命令創建目錄后重新執行遷移命令
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412778.html
標籤:Linux
下一篇:linux用戶組管理
