Как синхронизировать два каталога с кодом Bash?

StackOverflow https://stackoverflow.com/questions/19838912

  •  28-07-2022
  •  | 
  •  

Вопрос

Может ли кто -нибудь помочь мне с командой Bash Code, а не 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

Нет правильного решения

Другие советы

rsync -avzh /tmp/src /tmp/dst/

Позвольте мне попробовать, нам нужно точно прояснить, что означает синхронизация:

Допустим, у вас есть два дира

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 (без перезаписываемого до здесь), а затем копировать (и перезаписать) D2/F1 с D1/F1 и D1/F2 с D2/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

Это оно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top