rsync -avzh /tmp/src /tmp/dst/
Как синхронизировать два каталога с кодом Bash?
-
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
Нет правильного решения
Другие советы
Позвольте мне попробовать, нам нужно точно прояснить, что означает синхронизация:
Допустим, у вас есть два дира
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
Это оно.