У меня есть 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 впоследствии.
Сначала удостоверьтесь, что Вы можете соединиться по 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
Источники: