linux下 如何直接覆盖目录
时间:2014-09-25 19:02 来源:linux.it.net.cn 作者:it
// 10-overwrite_directory_in_linux-linux下覆盖目录方案-20140718
// liuzhengyi
// 2014-07-18
需求:
用一个目录覆盖另一个目录
参见: 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 参数是将目的目录当作普通文件。
为什么会有合并文件夹的效果?
(责任编辑:IT)
// 10-overwrite_directory_in_linux-linux下覆盖目录方案-20140718 // liuzhengyi // 2014-07-18 需求: 用一个目录覆盖另一个目录 参见: 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 参数是将目的目录当作普通文件。 为什么会有合并文件夹的效果? |