我想將目錄的內容移動到具有相同資料夾的另一個目錄中。
這是一個例子:
我有./backup
其中的目錄base
和test
.現在,我想將這些目錄移到./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
進入該目錄backup
cp -R --parents ...
注意2:backupArchives
如果您從備份中取得了新文件,請仔細檢查目錄。