Bash脚本可自动在两个文件夹之间进行复制

时间:2014-05-19 10:35:09

标签: bash

我试图创建一个脚本来自动将一个文件夹的内容复制到另一个文件夹。

我需要用新文件覆盖目标文件夹中的内容。

我可以使用现有的工具吗?

如果它是一个命令行工具会更好。

如果没有,有人可以给我一个关于如何创建这样一个脚本的提示吗?


编辑:2014年5月20日

我做到了:

#!/bin/bash

main_dirs=();
j=0;
while read line
do
    ((j += 1));
    if [[ j -eq 1 ]]; then
        output_app_dir=$line;
    elif [[ j -eq 2 ]]; then
        input_app_dir=$line;
    else
        main_dirs+=($line);
    fi
done < publish.config

cd $input_app_dir;

for i in "${main_dirs[@]}"
do
  rsync -arvR --info=COPY ./$i "$output_app_dir"
done

使用此&#34;配置文件&#34;那只是一个纯文本文件:

/home/rikytres/warda/dplus-moncler/public/javascripts/app
/home/rikytres/warda/box/public/ImportBox/app
controller/box/
view/box/
store/box/
model/box/
[EOF]

我知道,这是一个非常糟糕的解决方案,但我不像Bash Script开发人员那样好...... :(


更新

我也在MacOSX中使用这个脚本,它可以工作!

2 个答案:

答案 0 :(得分:1)

我建议rsync。手册页很长,但不要让它吓到你。

最简单的形式就是:

rsync --recursive source/ destination/

您可以使用--dry-run尝试不同的选项,以便在不实际执行任何操作的情况下查看结果。

您可能希望使用选项--verbose--progress来获得一些反馈。

答案 1 :(得分:0)

首先:如果你想共享文件,有几种不同的感兴趣的协议:Samba(SMB),NFS,FTP,SSH / sFTP / SCP。如果涉及Windows计算机,Samba是最简单的,但您也可以在两台Ubuntu(甚至是Mac OS)计算机之间使用它。 SSH对于Ubuntu来说是件好事,因为它是一个非常强大的工具 - 例如通过SSH运行rsync是一种保持两个目录同步的命令方法。