Как поднять среду Rsync на WSL для зеркального отражения изменений от ПК до VPS?

У меня есть DigitalOcean VPS Ubuntu 16.04.2, в который я обычно SSH со Шпаклевкой и вносят изменения там, но я недавно узнал, что могу сделать дубликат этого сервера в моем ПК (Win10 домой с WSL), сделать изменения здесь локально и затем зеркально отразить их (в то время как SSH туннелировал) с помощью названной программы rsync, если все пошло хорошее. Основное преимущество здесь является удобным, основным слоем резервного копирования.

Если возможно использовать rsync в бете WSL, как это сделано с момента rsync установлен, например, если я поднимаю серверную среду в своем Win10 домашний WSL с этим кодом:

apt-get update -y && apt-get upgrade -y
apt-get install tree zip unzip make php-zip php-curl php-xml php-gd
apt-get install fail2ban
apt-get install lamp-server^ -y
a2enmod rewrite
sed -i 's/post_max_size \= .M/post_max_size \= 200M/g' /etc/php/7.0/apache2/php.ini # regex dot instead of 2 or 8.
sed -i 's/upload_max_filesize \= .M/upload_max_filesize \= 200M/g' /etc/php/7.0/apache2/php.ini

cat <<-'LAMPENV' >> /etc/apache2/apache2.conf

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
LAMPENV

systemctl restart apache2.service

и я затем поднимаю веб-сайты на своем ПК локально с localhost/site_name, как я зеркально отражаю его с rsync к VPS?

Я задаю этот вопрос главным образом, чтобы видеть, достаточно ли то, что я описал до сих пор, - если я ничего не пропускаю.

В ответе рассмотрите способ, которым я описал выше как основание для rsync действие и говорит, если бы что-то, что детализируют пропавшие без вести, и, как Вы сделали бы так с rsync в WSL впоследствии.

2
задан 12 May 2017 в 21:05

1 ответ

Сначала удостоверьтесь, что Вы можете соединиться по SSH от удаленной машины до локальной. С этой целью необходимо скопировать закрытый ключ в каталоге /root/.ssh и это имеет достаточно ограничений - sudo chmod 400 /root/.ssh/id_rsa. Также можно создать /root/.ssh/config файл как это:

$ sudo cat /root/.ssh/config

Host my-localhost-name
    HostName 77.71.11.10
    IdentityFile ~/.ssh/id_rsa
    User my-user-name
    Port 22122

Теперь можно использовать rsync от удаленной машины таким образом:

sudo rsync -avzp -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress my-localhost-name:/var/www/<my-folder>/ /var/www/<my-folder>/

В случае, если Вы не имеете /root/.ssh/config файл команда должен быть:

sudo rsync -avzp -e "ssh -i /root/.ssh/id_rsa -p 22122 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress my-user-name@77.71.11.10:/var/www/<my-folder>/ /var/www/<my-folder>/

Где:

  • -a, --archive быстрый способ сказать, что Вы хотите рекурсию и хотите сохранить почти все (при этом-H является известным пропуском). Единственное исключение к вышеупомянутой эквивалентности - когда - файлы - от указаны, в этом случае-r не подразумевается.

  • -v, --verbose увеличивает объем информации, который Вам дают во время передачи. По умолчанию rsync работает тихо.

  • -z, --compress - данные файла сжатия во время передачи.

  • -p, --perms заставляет получение rsync устанавливать целевые полномочия совпасть с исходными полномочиями. (См. также - chmod опция для способа изменить то, что rsync считает исходными полномочиями.)

  • -e, --rsh=COMMAND позволяет Вам выбирать альтернативную удаленную программную оболочку для использования для коммуникации между локальными и удаленными копиями rsync...

    Также можно добавить здесь дополнительные опции к ssh команда. Опции используются в вышеупомянутом примере -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null полезны для хранения Rsync тихим и не запрашивающим каждый раз, Вы соединяетесь с новым сервером.

  • --progress покажите прогресс во время передачи.

Запаздывающая наклонная черта на источнике изменяет это поведение, чтобы не создавать дополнительный уровень каталога в месте назначения. Можно думать о запаздывании / на источнике как значение "копии содержание этого каталога" в противоположность "копии каталог по имени", но в обоих случаях атрибуты содержания каталога передаются содержанию каталога на месте назначения. Другими словами, каждая из следующих команд копирует файлы таким же образом, включая их установку атрибутов /dest/foo:

rsync -av /src/foo /dest
rsync -av /src/foo/ /dest/foo

Источники:

3
ответ дан 2 December 2019 в 02:46

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

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