Linux下覆盖目录的方法
需求:用一个目录覆盖另一个目录参见: http://bbs.chinaunix.net/thread-1987911-1-1.html尝试0:直接cp -rfcp -rf dir1 dir2失败。会将dir1 复制到dir2下。原因参见info coreutils 2.8 target directory尝试1:使用 mv -T dir1 dir2当目录都为空时,可以覆盖。目录非空时,则不可覆盖。
需求:
用一个目录覆盖另一个目录
参见: http://bbs.chinaunix.net/thread-1987911-1-1.html
尝试0:
直接cp -rf
cp -rf dir1 dir2
失败。
会将dir1 复制到dir2下。
原因参见info coreutils 2.8 target directory
尝试1:
使用 mv -T dir1 dir2
当目录都为空时,可以覆盖。
目录非空时,则不可覆盖。
解决方案0:
cp -r -T dir1 dir2
会把dir1中的内容复制到dir2中。
但是dir2中原有而dir1中没有的文件不受影响,不会被删除。
相当于合并。
解决方案1:
rsync -r --delete dir1 dir2
用dir1中的内容覆盖dir2中的内容。
dir2中原有而dir1中没有的文件会被删除掉。
效果上是dir1覆盖了dir2。
一些理解和疑问:
rsync 本身设计用来同步文件,做这件事还是很合适的。
rsync 的--delete 参数可以用来快速删除文件,达到覆盖效果。
但是也要小心使用。以免误删。
cp/mv 的 -T 参数是将目的目录当作普通文件。
为什么会有合并文件夹的效果?
参考文章:
更多推荐
所有评论(0)