web-dev-qa-db-ja.com

WSLでRsync環境を立ち上げて、PCからVPSへの変更をミラーリングする方法は?

Ubuntu 16.04.2 DigitalOcean VPSを持っていますが、通常はPuTTYとSSHで接続し、そこで変更を行いますが、最近PCでこのサーバーの複製を作成できることがわかりました(Win10 home with WSL)、ここで変更を行います、すべてがうまくいった場合、rsyncというプログラムを介して(SSHトンネリング中に)それらをミラーリングします。ここでの主な利点は、バックアップの快適なプライマリレイヤーです。

WSLベータ版でrsyncを使用できる場合、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を使用してローカルにPCのWebサイトを表示しますが、rsyncを使用してVPSにミラーリングするにはどうすればよいですか?

この質問は主に、これまでに説明した内容で十分かどうか、何も見逃していないかどうかを確認します。

答えとして、上記のrsyncアクションの基礎として説明した方法を確認し、何か不足している場合は言ってください。その後、WSLでrsyncを使用してそれを行う方法を詳しく説明してください。

2
JohnDoea

まず、リモートマシンからローカルマシンに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 [email protected]:/var/www/<my-folder>/ /var/www/<my-folder>/

どこ:

  • -a--archiveは、再帰が必要で、ほとんどすべてを保持したいという簡単な方法です(-Hを省略します)。上記の同等性の唯一の例外は、-files-fromが指定されている場合です。この場合、-rは暗黙指定されません。

  • -v--verboseは、転送中に提供される情報量を増やします。デフォルトでは、rsyncはサイレントに動作します。

  • -z--compress-転送中にファイルデータを圧縮します。

  • -p--permsを指定すると、受信側rsyncは宛先の許可をソースの許可と同じに設定します。 (rsyncがソース許可と見なすものを変更する方法については、-chmodオプションも参照してください。)

  • -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
pa4080