Bash 仅当目标目录中存在文件夹时,才从源目录同步/复制文件夹

Bash 仅当目标目录中存在文件夹时,才从源目录同步/复制文件夹,bash,if-statement,copy,Bash,If Statement,Copy,我正试图在ubuntu中编写一个bash脚本来复制一些文件。。我正在做一个小的Android项目,每周翻译应用程序。我对bash脚本非常陌生,所以请容忍我;) 我希望我的脚本检查目标目录,看看我的源目录是否包含相同的文件夹。如果是这样,它应该将源文件夹复制(并在需要时覆盖)到目标目录,保留结构。但也添加了任何额外的文件和文件夹,我可能在这些源文件夹 假设我的源目录中有folder1、folder2、folder3,但目标目录中只有folder1和folder2。然后我只需要将源目录中的folde

我正试图在ubuntu中编写一个bash脚本来复制一些文件。。我正在做一个小的Android项目,每周翻译应用程序。我对bash脚本非常陌生,所以请容忍我;)

我希望我的脚本检查目标目录,看看我的源目录是否包含相同的文件夹。如果是这样,它应该将源文件夹复制(并在需要时覆盖)到目标目录,保留结构。但也添加了任何额外的文件和文件夹,我可能在这些源文件夹

假设我的源目录中有folder1、folder2、folder3,但目标目录中只有folder1和folder2。然后我只需要将源目录中的folder1和folder2复制到目标目录

目标目录的内容经常更改,这就是为什么我需要在它复制文件夹/文件之前进行检查

顺便说一句,源目录和目标目录中的文件夹名称如下:folder1.apk-它有一个扩展名,因此看起来像一个文件

希望我提供了足够的信息;)

编辑:

我最终做了这样的事:

    for dir in `find * -maxdepth 0 -type d`; do
    cp -r -f /source/$dir /destination
    done

不知道这是否是最好的方法,但似乎能完成任务;)

您可能会看一看这个工具,它有很多选项并且易于使用(不需要使用自己的脚本)。例如,在您的案例中有用的选项之一:

--existing              skip creating new files on receiver
因此,应采取以下措施:

rsync -vur --existing ~/project/source /mnt/target/

其中一个可能的好处是,如果您需要或者甚至需要将其用作后台程序来自动同步文件,您可以通过网络以相同的方式同步文件。

您可能会看看这个工具,它有很多选项,并且易于使用(无需使用自己的脚本)。例如,在您的案例中有用的选项之一:

--existing              skip creating new files on receiver
因此,应采取以下措施:

rsync -vur --existing ~/project/source /mnt/target/

其中一个可能的好处是,如果您需要或甚至需要将其用作守护进程来自动同步文件,您可以通过网络以相同的方式同步文件。

谢谢。但这一个的问题是,如果我在源目录和目标目录中找到了匹配的目录,我有时会在源目录中有额外的/新的文件和文件夹,而主文件夹则不会被复制。它是决定内容是否应该被复制的主/顶部文件夹。您可以类似地
rsync src/*dst/
@user1170663我相信您可以通过使用它的选项来实现这一目标,例如--files from=FILE选项允许指定需要同步的确切文件列表。谢谢。但这一个的问题是,如果我在源目录和目标目录中找到了匹配的目录,我有时会在源目录中有额外的/新的文件和文件夹,而主文件夹则不会被复制。它是决定内容是否应该被复制的主/顶部文件夹。您可以类似地
rsync src/*dst/
@user1170663我相信您可以通过使用它的选项来实现这一目标,例如--files from=FILE选项允许指定需要同步的确切文件列表。