背景:使用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 《目錄的絕對路徑》命令創建目錄后重新執行遷移命令