Как синхронизировать две директории с помощью bash-кода?

Может ли кто-нибудь помочь мне с кодом bash, а не командой оболочки, чтобы синхронизировать две папки, это то, что я пытался сделать, мне нужно синхронизировать каталог d1 с d2 с этим кодом, но с этим кодом все, что я получаю первый файл в d1 для копирования в d2 без остальной части файла, и что было бы лучшим способом переписать этот код в файле bash для синхронизации d2 с d1,мне нужно решить мою проблему с помощью кода 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

2 ответа

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# - это файл (а # означает любое однозначное число, если вы еще не разобрались), с их временными метками в ММ / ДД чч: мм.

Таким образом, вы хотите скопировать 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

вот и все.

Другие вопросы по тегам