Como levantar um ambiente Rsync no WSL para espelhar as alterações do PC para o VPS?

2

Eu tenho um Ubuntu 16.04.2 DigitalOcean VPS para o qual eu geralmente SSH com Putty e faço alterações lá, mas recentemente descobri que posso fazer uma cópia deste servidor no meu PC (Win10 casa com WSL), fazer o muda aqui localmente e, em seguida, espelha-os (enquanto SSH encapsulou) através de um programa chamado rsync , se tudo correu bem. O principal benefício aqui é uma camada básica e confortável de backup.

Se for possível usar o rsync na WSL beta, como é feito a partir do momento em que rsync é instalado, por exemplo, se eu criar um ambiente de servidor na minha WSL home do Win10 com este código:

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

e, em seguida, exibo os sites no meu PC localmente com localhost/site_name , como faço para espelhá-lo com rsync no VPS?

Eu faço esta pergunta principalmente para ver se o que eu descrevi até agora é o suficiente - se eu não sinto falta de nada.

Em uma resposta, revise a maneira que descrevi acima como base para a ação rsync e diga se algo está faltando, e detalhe como você faria isso com rsync na WSL depois.

    
por JohnDoea 12.05.2017 / 19:36

1 resposta

3

Primeiro, verifique se você consegue se conectar via SSH da máquina remota à máquina local. Para este propósito, você deve copiar sua chave privada no diretório /root/.ssh e tem restrições suficientes - sudo chmod 400 /root/.ssh/id_rsa . Além disso, você pode criar o arquivo /root/.ssh/config desta forma:

$ sudo cat /root/.ssh/config

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

Agora você pode usar rsync da máquina remota desta maneira:

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

Caso você não tenha o arquivo /root/.ssh/config , o comando deve ser:

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>/

Onde:

  • -a , --archive é uma maneira rápida de dizer que você deseja recursão e deseja preservar quase tudo (com -H sendo uma omissão notável). A única exceção à equivalência acima é quando --files-from é especificado, no qual o caso -r não está implícito.

  • -v , --verbose aumenta a quantidade de informações que você recebe durante a transferência. Por padrão, o rsync funciona silenciosamente.

  • -z , --compress - compacta os dados do arquivo durante a transferência.

  • -p , --perms faz com que o rsync de recebimento defina as permissões de destino como as mesmas permissões de origem. (Veja também a opção --chmod para uma maneira de modificar o que o rsync considera como as permissões de origem.)

  • -e , --rsh=COMMAND permite que você escolha um programa shell remoto alternativo para usar na comunicação entre as cópias local e remota do rsync ...

    Além disso, você pode adicionar aqui opções adicionais ao comando ssh . As opções usadas no exemplo acima -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null são úteis para manter o Rsync silencioso e não avisar sempre que você se conectar a um novo servidor.

  • --progress mostra o progresso durante a transferência.

  

Uma barra à direita na origem altera esse comportamento para evitar   criando um nível de diretório adicional no destino. Você pode   pense em um / à direita em uma fonte como significando "copie o conteúdo de   este diretório "ao contrário de" copiar o diretório pelo nome ", mas em   Em ambos os casos, os atributos do diretório contido são   transferido para o diretório de contenção no destino. Dentro   Em outras palavras, cada um dos seguintes comandos copia os arquivos   da mesma forma, incluindo a definição dos atributos de    /dest/foo :

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

Fontes:

por pa4080 13.05.2017 / 09:13