任何人都可以帮我用bash代码而不是shell命令,让两个文件夹同步,这是我试过的,我需要用这个代码同步d1目录和d2,但是这个代码我只是得到了d1中第一个要在d2中复制而没有文件其余部分的文件,以及在bash文件中重写此代码以使d2与d1同步的最佳方法是什么, 我需要解决我的问题使用bash代码而不是shell命令所以请帮助我的代码并指导我解决我的问题
#! /斌/庆典
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
答案 0 :(得分:3)
rsync -avzh /tmp/src /tmp/dst/
答案 1 :(得分: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
就是这样。