J'ai un serveur virtuel Ubuntu 16.04.2 DigitalOcean auquel SSH et PuTTY sont généralement modifiés, mais j'ai récemment découvert que je pouvais créer une copie de ce serveur sur mon PC (Win10 home avec WSL), puis effectuer les modifications ici localement. , puis les refléter (pendant que SSH tunnelise) via un programme appelé rsync
, si tout se passe bien. Le principal avantage ici est une couche primaire de sauvegarde confortable.
S'il est possible d'utiliser rsync dans la version bêta du WSL, comment procéder à partir du moment où rsync
est installé, par exemple, si je déclenche un environnement de serveur sur mon WSL domestique Win10 avec ce code:
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
et j'ouvre ensuite les sites Web sur mon PC localement avec localhost/site_name
, comment puis-je le refléter avec rsync
sur le VPS?
Je pose cette question principalement pour voir si ce que j'ai décrit jusqu'ici est suffisant - si je ne manque de rien.
Dans une réponse, veuillez relire la façon que j'ai décrite ci-dessus comme base de l'action rsync
et indiquer s'il manque quelque chose, puis indiquez comment vous le feriez avec rsync
dans WSL.
Tout d’abord, assurez-vous de pouvoir vous connecter via SSH de la machine distante à la machine locale. Pour ce faire, vous devez copier votre clé privée dans le répertoire _/root/.ssh
_ et les restrictions sont suffisantes - _Sudo chmod 400 /root/.ssh/id_rsa
_. Aussi, vous pouvez créer un fichier _/root/.ssh/config
_ comme ceci:
_$ Sudo cat /root/.ssh/config
Host my-localhost-name
HostName 77.71.11.10
IdentityFile ~/.ssh/id_rsa
User my-user-name
Port 22122
_
Vous pouvez maintenant utiliser rsync
à partir de la machine distante de la manière suivante:
_Sudo rsync -avzp -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress my-localhost-name:/var/www/<my-folder>/ /var/www/<my-folder>/
_
Si vous n'avez pas de fichier _/root/.ssh/config
_, la commande doit être:
_Sudo rsync -avzp -e "ssh -i /root/.ssh/id_rsa -p 22122 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress [email protected]:/var/www/<my-folder>/ /var/www/<my-folder>/
_
Où:
_-a
_, _--archive
_ est un moyen rapide de dire que vous voulez de la récursion et que vous voulez conserver presque tout (avec -H une omission notable). La seule exception à l'équivalence ci-dessus concerne la spécification de --files-from. Dans ce cas, -r n'est pas impliqué.
_-v
_, _--verbose
_ augmente la quantité d'informations qui vous sont données lors du transfert. Par défaut, rsync fonctionne en mode silencieux.
_-z
_, _--compress
_ - compresser les données du fichier pendant le transfert.
_-p
_, _--perms
_ force le rsync destinataire à définir les autorisations de destination sur les mêmes autorisations que les autorisations de source. (Voir aussi l'option --chmod pour savoir comment modifier ce que rsync considère comme les permissions de la source.)
_-e
_, _--rsh=COMMAND
_ vous permet de choisir un autre programme Shell distant à utiliser pour la communication entre les copies locale et distante de rsync ...
Vous pouvez également ajouter ici des options supplémentaires à la commande ssh
. Les options utilisées dans l'exemple ci-dessus _-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
_ sont utiles pour garder Rsync silencieux et ne pas vous demander à chaque fois que vous vous connectez à un nouveau serveur.
_--progress
_ affiche les progrès réalisés lors du transfert.
Une barre oblique de fin sur la source modifie ce comportement pour éviter de créer un niveau de répertoire supplémentaire sur la destination. Vous pouvez imaginer une fin _
/
_ sur une source comme signifiant "copier le contenu de ce répertoire" par opposition à "copier le répertoire par son nom", mais dans les deux cas, les attributs du répertoire contenant sont transférés vers le contenant. répertoire sur la destination. En d'autres termes, chacune des commandes suivantes copie les fichiers de la même manière, y compris leur définition des attributs de _/dest/foo
_:_rsync -av /src/foo /dest rsync -av /src/foo/ /dest/foo
_
Sources: