如何为某些 2 个文件夹递归添加/替换仅修改/更新的文件?

如何为某些 2 个文件夹递归添加/替换仅修改/更新的文件?

所以我目前正在做这样的事情:

rm -rf ../../../$CLOUD_INSTALL_SUBDIR/lib_boost
mkdir ../../../$CLOUD_INSTALL_SUBDIR/lib_boost
cp -r ../../../$BOOST_ROOT_DIR/$BOOST_INSTALL_SUBDIR/lib/* ../../../$CLOUD_INSTALL_SUBDIR/lib_boost/

这太糟糕了...所以我想知道如何在两个文件夹之间更新/删除/仅添加更新的文件(在演示中,我们有一个包含最新内容的文件夹../../../$BOOST_ROOT_DIR/$BOOST_INSTALL_SUBDIR/lib/和一个包含可能过时内容的文件夹../../../$CLOUD_INSTALL_SUBDIR/lib_boost)?

答案1

Rsync 是您最新最好的朋友。

rsync -av original/folder/ new/folder/

尾部斜杠对两者都很重要;如果您排除第一个,它将将该文件夹作为它自己的文件夹复制到new/folder/.最好使用该-a标志来保留权限、时间戳等。

Rsync 还将根据需要自动创建目录以复制结构。

答案2

您可以使用 rsync 来实现这一点,在您的示例中它会像这样:

rsync -va ../../../$CLOUD_INSTALL_SUBDIR/lib_boost/ ../../../$CLOUD_INSTALL_SUBDIR/lib_boost

其中 -v 选项启用详细模式,-a 启用存档模式

您可以在其上阅读有关 rsync 的更多信息手册页

相关内容