Как синхронизировать две директории с помощью 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 ответа
Позвольте мне попробовать, нам нужно уточнить, что именно означает синхронизация:
Допустим, у вас есть два директора
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
вот и все.