「Sysadminツール:rsyncを使用したバックアップ、復元、ファイル同期の管理」というタイトルの以前の記事で、cp
について説明しました。 およびsftp
、およびrsync
の基本を確認しました ファイルを移動するため。 tarとSSHでSysadminを有効にするに関する他のすばらしい記事もいくつかあります。リモートシステムとの間でファイルをコピーし、作業中のもの(または、さらに言えば、重要な会社のデータ)のバックアップを簡単に実行できることは、私が何度も使用するsysadminツールボックスの基本的で便利なツールです。ただし、信頼性の低いリンクや低速なリンク間でデータを移動するなど、もう少し洗練された方法を実行したい場合もあります。 Rsync
転送中の暗号化を保護するための暗号化、フローを改善するための圧縮、期待どおりの結果が得られるようにするためのチェックサムを提供できます。
[読者も気に入っています:SCPとSFTPを使用してLinuxホスト間でファイルを安全にコピーする方法]
ウェブサイトの維持
私は最初にrsync
を使い始めました CI / CDが父親の目にきらめいていた暗黒時代に、私が管理していたWebサイトのローカルバージョンを同期するため。ローカルコピーを保持して作業し、サイトの最新バージョンのバックアップをとることもできます。そのシナリオを例として使用します。 rsync
を使用できます バックアップ用に、またはテストから本番へのパイプラインを作成するための迅速な方法として、リモートファイルシステムを同期します。また、ディレクトリの同期にも使用し、tar
を使用しました ローカルバックアップを作成するには:
skipworthy ~ enable websync ls -al
total 8
drwxrwxr-x 2 skipworthy skipworthy 4096 Dec 16 13:57 .
drwxrwxr-x 5 skipworthy skipworthy 4096 Dec 16 14:01 ..
skipworthy ~ enable websync rsync -aruv 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
enable/
enable/bar
enable/foo
enable/index
sent 85 bytes received 229 bytes 209.33 bytes/sec
total size is 0 speedup is 0.00
skipworthy ~ enable websync ls -l
total 4
dr-xr-xr-x 2 skipworthy skipworthy 4096 Dec 16 13:49 enable
以前と同じように、ローカルのrsync
、 mtime を維持しながら、アーカイブモードで実行しています およびファイル属性、サブディレクトリへの再帰、および新規または変更されたデータのみの更新。
注 :-v
ほとんどの場合、 verboseを意味します 、コンソールに出力を送信します。
したがって、サイトにページを追加してアップロードしたいとします。
skipworthy ~ enable websync rsync -aruv ./* 192.168.11.111:/usr/share/httpd/enable
sending incremental file list
pagetwo
rsync: recv_generator: mkdir "/usr/share/httpd/enable/enable" failed: Permission denied (13)
これは、rsync
を使用するときに考慮する必要のあることがいくつかあることに注意する良い機会です。 ファイルをプッシュします。 Rsync
宛先ディレクトリだけでなく、ディレクトリツリー全体に対するアクセス許可が必要です。これを達成する方法はいくつかあります。 1つは、 uidを指定することです。 およびgid rsync
の /etc/rsyncd.conf
のデーモン 。別の方法は、rsync
を実行することです 必要な権限を持つユーザーとして。これらは両方とも安全な環境では問題になる可能性があるため、ここで慎重に踏み込んでください。
また、デフォルトでは、rsync
を使用する場合にも注意してください リモートで、rsync
に直接接続しています ポート873でのサービス 。ファイアウォールのルールとアクセス許可を設定するときは、それについて考慮する必要があります。さらに、SELinuxパーミッションがありますが、これはまったく別の議論であり、この記事の範囲内ではありません。一般に、ディレクトリのアクセス許可の問題とセキュリティの問題に対する1つの解決策は、SSHを使用することです(これは今ではおなじみのように聞こえるはずです)。 SSHは暗号化されたトンネルを設定し、任意のポートでリッスンするように設定できます。もちろん、SSHキーを指定して接続をさらに保護し、リモート接続をもう少し自動化しやすくすることができます。
高度な機能
この次の例では、これらの変更をルートとしてプッシュします。私のようにならないでください:
rsync -aruv -e ssh ./* [email protected]:/usr/share/httpd/enable
[email protected]'s password:
sending incremental file list
pagetwo
sent 246 bytes received 36 bytes 43.38 bytes/sec
total size is 31 speedup is 0.11
ポートやキーの場所の指定など、通常のSSHオプションを接続に使用できることに再度注意してください。 Rsync
両端にインストールされ、.ssh/config
で構成されている限り、リモートシェルオプションを選択することもできます。 。
チェックサム
チェックサムについては前に説明しましたが、ここには2つの潜在的に役立つことがあります。まず、rsync
デフォルトでチェックサムを実行し、ターゲットでチェックサムを検証します。これにより、飛行中にデータが失われたり破損したりする可能性がないことを警告します。
次に、チェックサムを使用して、転送するファイル(つまり、実際に異なる)を決定することもできます。 送信元と宛先の間)。これは、 mtimeかどうかわからない場合に便利です。 /一度に 必要なファイルの実際のバージョンを表します。同期しようとしていたファイルシステムが変更された 別のアプリによるので、時間が正しくありませんでした。
skipworthy ~ enable websync rsync -aruv -e ssh --checksum 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
sent 26 bytes received 364 bytes 780.00 bytes/sec
注 :これにより、各サイドのファイルごとにチェックサムが生成されて比較されるため、処理と転送で追加のオーバーヘッドが発生します。
圧縮
もう1つの便利なトリックは、圧縮です。 -z
オプションはストリームを圧縮します、--zc
圧縮タイプを設定し、--zl
レベルを設定します:
skipworthy ~ enable websync rsync -aruv -e ssh --zc=zlib --zl=6 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
sent 26 bytes received 248 bytes 548.00 bytes/sec
total size is 31 speedup is 0.11
タイプまたはレベルを指定しない場合は、rsync
RSYNC_COMPRESS_LISTで提供されるリストを使用します 圧縮の一般的なタイプとレベルについてネゴシエートする環境変数。
[システム自動化についてもっと知りたいですか? RedHatの無料の本であるTheAutomatedEnterpriseを始めましょう。 ]
まとめ
これで、rsync
が完成しました。 これは、Linuxシステム管理に依然として有用で関連性のあるツールのもう1つです。これは、私のキャリアの中で何度も使用できてうれしいツールです。ここで探索する余地がなかったために、これを使用して実行できることは他にもたくさんあります。いつものように、マニュアルページを確認してください。