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
を使用してそれを行う方法を詳しく説明してください。
まず、リモートマシンからローカルマシンに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
ソース: