-1

任何人都可以帮助我使用 bash 代码而不是 shell 命令,以使两个文件夹同步,这是我尝试做的,我需要使用这段代码将 d1 目录与 d2 同步,但是使用这段代码,我得到的只是第一个文件在 d1 中复制到 d2 中而不复制文件的其余部分,以及在 bash 文件中重写此代码以将 d2 与 d1 同步的最佳方法是什么,我需要用 bash 代码而不是 shell 命令解决我的问题,所以请,帮助我的代码并指导我解决我的问题

#!/bin/bash

di1=$(ls d1)


n=${#di1[@]}


for (( i = 1; i <$n+1 ; i++ )); do

      t=$(find d2 -name ${di1[$i]})

    if [[ $t = '' ]]; then

     cp d1/${di1[$i]} d2

    fi

 done
4

2 回答 2

2
rsync -avzh /tmp/src /tmp/dst/
于 2013-11-07T16:17:32.977 回答
0

让我试一试,我们需要弄清楚同步的确切含义:

假设你有两个目录

d1
 L f1 10/25 11:40
 L f2 10/25 10:22
 L f4 10/10 08:01
d2
 L f1 10/25 10:11
 L f2 10/26 09:56
 L f3 10/24 11:37

其中 d# 是一个目录,f# 是一个文件(# 表示任何一位数字,如果你还没有弄清楚的话),他们的时间戳记在 MM/DD hh:mm 中。

所以你想把 f4 复制到 d2,把 f3 复制到 d1(直到这里才被覆盖),然后用 d1/f1 复制(并覆盖)d2/f1,用 d2/f2 复制(并覆盖)d1/f2。

那么你应该最终得到:

d1
 L f1 10/25 11:40
 L f2 10/26 09:56
 L f3 10/24 11:37
 L f4 10/10 08:01
d2
 L f1 10/25 11:40
 L f2 10/26 09:56
 L f3 10/24 11:37
 L f4 10/10 08:01

好吧,到目前为止,我所做的只是改写您的问题,以确保它以我可以回答的方式,因此,如果有人阅读它,则解决方案可能很简单:

在两个方向更新现有文件

cp -ur d1 d2
cp -ur d2 d1

而已。

于 2013-11-11T12:54:00.903 回答