mv:目錄不為空

mv:目錄不為空

我想將目錄的內容移動到具有相同資料夾的另一個目錄中。

這是一個例子:

我有./backup其中的目錄basetest.現在,我想將這些目錄移到./backupArchives.

我用這個:

mv ./backup/* ./backupArchives

但我得到了錯誤

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

我嘗試使用--force,但沒有運氣。當資料夾已經存在時有沒有辦法移動它?

注意:我只是想合併內容,沒有覆蓋。

答案1

儘管其手冊頁沒有記錄它,但mv如果目標目錄包含文件,將拒絕將目錄重新命名為另一個目錄。這對你來說是件好事,因為你結果想要合併將來源的內容放入目標中,這是mv不行的。

代替使用rsync -a backup/ backupArchives/。在那之後rm -rf backup/*

除了使用之外rsync,您還可以執行經典的操作

(cd backup && tar c .) | (cd backupArchives && tar xf -)

這將為您贏得更多極客積分。

答案2

快速而骯髒,如果你知道自己在做什麼:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

答案3

在您移動所需的目錄之後*(代表任何文字或數字)。例如:

mv /var/www/* /recovery/wwwrecovery/

僅此而已,如果您移動文件,則移動方式如下:

mv /var/www/index.php /recovery/index.php

另一種方法是使用 tar 打包該資料夾內容:

tar -cvzpf backup.tar.gz /var/www 

然後將其移動到任何其他文件中。我還推薦此步驟,因為 tar 會壓縮它並使其尺寸更小。

若要將文件提取到另一個資料夾,請使用

tar -xvzpf /var/www/

如果您需要複製到不屬於您的位置,請確保sudo在您決定使用的選項後面新增命令。

sudo tar -cvzpf backup.tar.gz /var/www/

答案4

當然rsync可以,但對於不支援的機器rsync(即在 cpanel 中,預設未安裝 rsync),這可能也有效。

使用怎麼樣:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

backup然後根據需要刪除該目錄

注意1:執行前需要先cd進入該目錄backupcp -R --parents ...

注意2:backupArchives如果您從備份中取得了新文件,請仔細檢查目錄。

相關內容