cp -r 覆盖

cp -r 覆盖

这不是一个问题,而是我对不同的 cp -r 行为感到好奇。这是在最新的 Ubuntu 上。我在一个包含多个子目录的目录中有一个过时的副本。我想通过简单地用较新的副本覆盖目录来更新过时的副本。添加新文件并简单地覆盖相同的文件。

所以一开始我是这么做的:

$cp -r <path>/curr_dir <path>/destination_dir 

curr_dir 中的新文件被添加了,但是同名文件没有更新,嗯?

但是,如果我:

$cd <path>/curr_dir
$cp -r * <path>/destination_dir/

然后添加较新的文件并覆盖过时的文件。

为什么会有这种差异?我检查了我的 .bashrc 和 .profile,没有看到 cp 命令的任何特殊别名。

我肯定遗漏了什么。有什么评论或想法吗?

谢谢

答案1

在您的案例中使用 cp 并不是您真正想要的:首先,它不会删除不再存在的文件。您想要的是rsync

rsync -a --delete /source/directory/ /destination/directory/

注意结尾的斜线,它们事情。

添加-v查看进度的选项,如果您想测试,--dry-run也请添加该选项。

相关内容