Как выполнить синхронизацию между двумя серверами через их общий хост Windows

Этот ответ касается не подсветки синтаксиса , а конкретно , а скорее проблемы сохранения согласованных конфигураций на нескольких машинах.

Вы не можете легко изменить поведение утилит в удаленной системе путем изменения конфигурации в вашей локальной системе, особенно если вы хотите настроить множество различных приложений.

Если ваш домашний каталог подключен к общему сетевому ресурсу, например, NFS, тогда локальные изменения, например, ~ / .bashrc или другие файлы на вашем локальном компьютере, очевидно, будут перенесены в удаленные системы, если они смонтируют тот же общий ресурс.

Следующим шагом (если совместное использование домашнего каталога в разных системах невозможно) будет настроить ваши локальные конфигурации так, как вы хотите, а затем скопировать их в удаленные системы, используя либо scp или rsync или что-то подобное. Если вы планируете настраивать локальные конфигурации, может быть хорошей идеей написать для этого простой сценарий.

Такой сценарий может быть таким же простым, как (непроверенный)

#!/bin/bash

configs=( "$HOME/.bash_profile" "$HOME/.bashrc" )
remotes=( "host1" "host2" )

for remote in "${remotes[@]}"; do
   scp "${configs[@]}" "$remote:"
done

Следующим шагом будет сохранение соответствующих файлов конфигурации в сетевой системе контроля версий файлов с некоторым описанием, такой как Git. Это дополнительно позволит вам создавать ветки для определенных машин или разновидностей Unix, а также упростит вам доступ к конфигурациям по сети.

Также обратите внимание, что разные утилиты, хотя и используют одно и то же имя, могут отличаться по своей реализации или версии в разных системах и, следовательно, требуют разной конфигурации. Это означает, что одна конфигурация, например, Здесь Bash может сломать вашу оболочку. Одним из очевидных источников такой поломки являются различия между Bash версии 3 и Bash версии 4 или тот факт, что некоторые (не Linux) системы не используют GNU coreutils (который предоставляет ls и другие подобные инструменты оболочки).

Я работаю над различиями в макете файловой системы (еще одна проблема при попытке настроить оболочку, сценарии инициализации которой используются для разных учетных записей в разных Unix), что требует от меня установки ПУТЬ по-разному на разных хостах) в моем ~ / .profile (я использую ksh93 вместо bash ) следующим образом:

PATH="$( getconf PATH )"
case "$(uname -s)" in
    OpenBSD) PATH="$PATH:/usr/local/sbin:/usr/games" ;;
    NetBSD)  PATH="$PATH:/usr/X11R7/bin" ;;
esac
1
17.06.2017, 00:45
1 ответ

Я не знаю, доступна ли правильная версия scp в MinGW, но вы можете использовать -3 вариант:

man scp

[...]

-3 Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts. Note that this option disables the progress meter.

[...]

0
28.01.2020, 00:55

Теги

Похожие вопросы