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

时间:2012-11-23 18:37:47

标签: bash if-statement copy

我正在尝试在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

不知道这是不是最好的方式,但似乎做了这个工作;)

1 个答案:

答案 0 :(得分:1)

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

--existing              skip creating new files on receiver

所以,以下应该做的工作:

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

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