将目录的内容清空到另一个目录中,同时仅覆盖重复的文件/目录

将目录的内容清空到另一个目录中,同时仅覆盖重复的文件/目录

我有两个目录,/var/www其中一个是全新安装的拉维尔另一个是git cloneLaravel 应用程序。

我基本上需要将 Laravel 应用程序转移到全新安装的 Laravel 中,以便它可以使用必要的/vendor代码正常运行。

但是,我不知道如何使用命令行来执行此操作。我要么rsync删除这些/vendor文件,因为它们不在其中git clone,要么它不会覆盖任何内容。

-www
--laravelFresh
--laravelGithubApplication

我希望所有内容都laravelGithubApplication出来并覆盖laravelFresh其中的所有重复项。我不希望它同步,因为其中laravelFresh没有重复的内容laravelGithubApplication不应被覆盖。

请帮忙。

答案1

mv laravelGithubApplication/* laravelFresh/

之前目录的内容:

laravelGithubApplication/
laravelGithubApplication/file
laravelFresh/
laravelFresh/file
laravelFresh/vendor/
laravelFresh/vendor/file

之后的目录内容:

laravelGithubApplication/
laravelFresh/
laravelFresh/file (overwritten)
laravelFresh/vendor/
laravelFresh/vendor/file

如您所愿,重复文件 ( file) 已被覆盖;现有目录 ( vendor) 保持不变;一切都“出来”了laravelGithubApplication/

答案2

继续评论中的问答尝试这个(假设所有内容都在 /var/www 下):

# cd /var/www
# mkdir laravelCombined
# cd laravelGithubApplication
# find . | cpio -dumpv /var/www/laravelCombined
# cd ../laravelFresh
# find . | cpio -dumpv /var/www/laravelCombined

在删除其中的内容之前/var/www/laravelGithubApplication/var/www/laravelCombined请检查其中的内容是否/var/www/laravelCombined是您需要的。如果是:

# rm -rf /var/www/laravelGithubApplication
# rm -rf /var/www/laravelFresh
# mv /var/www/laravelCombined /var/www/laravelFresh

相关内容