我想将目录的内容移动到具有相同文件夹的另一个目录中。
下面是一个例子:
我有./backup
目录base
和test
. 现在我想将这些目录移动到./backupArchives
.
我用这个:
mv ./backup/* ./backupArchives
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty
Run Code Online (Sandbox Code Playgroud)
我尝试使用--force
,但没有运气。当文件夹已经存在时,有没有办法移动它?
注意:我只想合并内容,没有覆盖。
zwe*_*ets 268
虽然它的手册页没有记录它,但mv
如果目标目录包含文件,它将拒绝将目录重命名为另一个目录。这在您的情况下是一件好事,因为您最终想要将源的内容合并到目标中,但这是mv
行不通的。
使用rsync -a backup/ backupArchives/
来代替。在那之后rm -rf backup/*
。
除了使用rsync
,您还可以执行经典的
(cd backup && tar c .) | (cd backupArchives && tar xf -)
Run Code Online (Sandbox Code Playgroud)
这将为您赢得更多极客积分。
pat*_*cek 63
快速而肮脏,如果您知道自己在做什么:
cp -r ./backup/* ./backupArchives && rm -R ./backup/*
Run Code Online (Sandbox Code Playgroud)
在您移动您需要的目录之后*
(代表任何文本或数字)。例如:
mv /var/www/* /recovery/wwwrecovery/
Run Code Online (Sandbox Code Playgroud)
就是这样,如果您移动文件,则移动为:
mv /var/www/index.php /recovery/index.php
另一种方法是使用 tar 打包该文件夹内容:
tar -cvzpf backup.tar.gz /var/www
Run Code Online (Sandbox Code Playgroud)
然后移动它位于任何其他文件。我也推荐这一步,因为 tar 压缩它并使它的尺寸更小。
要将文件解压缩到另一个文件夹,请使用
tar -xvzpf /var/www/
Run Code Online (Sandbox Code Playgroud)
如果您需要复制到不属于您的位置,请确保sudo
在您决定使用的任何选项之后添加命令。
sudo tar -cvzpf backup.tar.gz /var/www/
Run Code Online (Sandbox Code Playgroud)
小智 5
我必须复制一个包含大量大文件的非常大的目录,因此我在目标目录中创建了指向原始文件的硬链接,如下所示:
cp -al ./backup/* ./backupArchives
Run Code Online (Sandbox Code Playgroud)
然后我删除了原始文件,只留下每个文件的一个硬链接。
由于硬链接非常节省空间,您甚至可以使用硬链接将backupArchives
和backup
目录复制到新的试用位置,并检查文件计数是否符合您的预期(作为虚拟运行)。这假设您的文件系统支持硬链接 - ext4 支持。
归档时间: |
|
查看次数: |
456335 次 |
最近记录: |