ウィンドウズマックソフトウェア設定セキュリティ生産性リナックスAndroidパフォーマンス設定Apple すべて

rsyncを使ったバックアップと同期の方法

編集済み 2 数時間前 によって ExtremeHow 編集チーム

バックアップコマンドラインファイル同期データ管理ユーティリティスクリプティングセキュリティストレージ転送

rsyncを使ったバックアップと同期の方法

翻訳が更新されました 2 数時間前

Rsyncは、異なるシステム間でファイルをバックアップし同期するために使用できる強力なツールです。これは高速で効率的なファイル転送を可能にするコマンドラインユーティリティです。デルタエンコーディングを使用することで、Rsyncはソースと宛先ディレクトリ間の違いのみを転送します。これにより、低帯域幅消費のため、特にネットワーク接続を通じてのバックアップや同期に最適なツールとなります。

rsyncの基本を理解する

Rsyncは、ローカルだけでなくリモートホストでもファイル転送に使用できます。rsyncコマンドの基本構文は次のとおりです:

rsync [options] source destination

ここで、sourceは転送したいファイルの場所、destinationはそれを移動したい場所です。

インストール

Rsyncは通常、ほとんどのLinuxディストリビューションにプリインストールされています。インストールされているかどうかを確認するには、以下を入力します:

rsync --version

Rsyncがインストールされていない場合は、オペレーティングシステムに関連するパッケージマネージャーを使用して追加できます。例えば、Debianベースのシステムでは次のようにします:

sudo apt-get install rsync

Red Hatベースのシステムでは、次のようにインストールします:

sudo yum install rsync

rsyncの基本的な使用方法

Rsyncの主要機能はファイルとディレクトリの同期です。例えば、source_directoryからdestination_directoryにすべてのファイルをコピーするには、次のコマンドを使用できます:

rsync -avzh /path/to/source_directory/ /path/to/destination_directory/

このコマンドで使用されるオプションを分析します:

source_directory/の最後のスラッシュは、ディレクトリ自体ではなく、そのディレクトリの内容のみがコピーされることを保証します。

SSHを使ったRsync

Rsyncの最も強力な機能のひとつは、SSHを使用してネットワーク経由でファイルを同期する能力です。SSHはデータを暗号化して、盗聴者がそれを読むことができないようにするので、安全なデータ転送が可能です。ローカルシステムとリモートシステム間でディレクトリを同期するには、次のコマンドを使用します:

rsync -avz -e "ssh" user@remote_host:/path/to/remote_directory/ /path/to/local_directory/

このコマンドは、リモートシェルプログラム(この場合はSSH)を指定するために-eオプションを使用します。

同様に、ローカルシステムからリモートサーバーにファイルをコピーするには、sourcedestination引数を変更します:

rsync -avz /path/to/local_directory/ user@remote_host:/path/to/remote_directory/

SSHがデフォルトの22以外の異なるポートを使用する場合は、次のようにして指定できます:

rsync -avz -e "ssh -p 2222" /path/to/local_directory/ user@remote_host:/path/to/remote_directory/

削除の処理

ディレクトリを同期する際、宛先ディレクトリがソースディレクトリを完全にミラーリングすること(削除も含む)が望ましい場合があります。そのためには--deleteオプションを使用します:

rsync -avz --delete /path/to/source_directory/ /path/to/destination_directory/

--deleteを使用すると、Rsyncはソースに存在しないファイルを宛先から削除します。

大規模なファイルセットの処理

大きなファイルや大量のファイルの場合、Rsyncが完了するまでに時間がかかることがあります。このプロセスを高速化するために、Rsyncをバックグラウンドプロセスとして&記号を使用して実行することができます。これにより、コマンドラインを他のタスクに使用できるようになります:

rsync -avz /path/to/source/ /path/to/destination/ &

チェックサムで時間を節約

デフォルトでは、Rsyncはファイルの転送が必要かどうかをサイズや変更日時などのチェックに基づいて判断します。コンテンツの違いに基づいて転送を強制するには、次のようにします:

rsync -avzc /path/to/source/ /path/to/destination/

-cオプションはRsyncにチェックサム比較を行わせるもので、時間がかかる可能性がありますが、転送される各ファイルが同一であることを確認します。

特定のファイルタイプ

Rsyncに特定のファイルタイプの含めまたは除外を指示することができます。例えば、テキストファイルのみを同期する場合、次のように入力します:

rsync -avz --include '*.txt' --exclude '*' /path/to/source/ /path/to/destination/

ここで、--includeはRsyncに.txtファイルのみを含めるよう指示し、--excludeは他のすべてを省くよう指示します。

バックアップファイルの進行状況ログ

バックアップ操作中、いつ何が転送されたかを知ることが重要になる場合があります。そのためにRsyncには次のオプションがあります:

rsync -avz --log-file=rsync.log /path/to/source/ /path/to/destination/

このコマンドはrsync.logファイルにログを作成または追加します。

高度な利用

基本的な機能以上を必要とするユーザーのために、Rsyncは高度なオプションを提供しています。例えば、--bwlimitオプションを使って帯域幅制限を設定し、転送速度の最大を設定できます:

rsync -avz --bwlimit=1000 /path/to/source/ /path/to/destination/

これにより、帯域幅が1000 KB/sに制限されます。

デーモンとしての実行

Rsyncはデーモンとして機能し、大規模なセットアップやスクリプト駆動のタスクにクライアントが接続できるバックグラウンドサービスとして動作します。これを有効にするには、rsyncd.confファイルでいくつかの設定が必要です。例えば:

[backup] path = /path/to/share comment = Backup Directory read only = no list = yes uid = root gid = root auth users = username secrets file = /path/to/rsyncd.secrets

デーモンモードでは、Rsyncは要求を待ち受け、SSHを必要としません。しかし、このセットアップをファイアウォールや認証方法で確保することが重要です。

自動化

定期的なバックアップのために、RsyncはLinuxのcronジョブを使用して自動化できます。これにより、指定した時間に手動の入力なしでバックアップが行われます。例えば、毎日午前2時にバックアップを設定するには、次のようにcrontabファイルを編集します:

crontab -e

次の行を追加します:

0 2 * * * rsync -avz /path/to/source/ /path/to/destination/

このcronジョブは毎日午前2時にRsyncコマンドを実行します。

結論

Rsyncは系統的なバックアップと同期タスクに非常に役立つ多目的ツールです。適切なオプションと設定を用いることで、ほぼすべてのデータバックアップニーズに応じるようにRsyncをカスタマイズできます。変更のみを同期して増分バックアップを実行できるその能力は、時間とネットワークリソースの使用効率の両面で非常に効率的です。オープンソースでクロスプラットフォームをサポートするRsyncは、自動バックアップソリューションに最適な選択肢です。

記事の内容に誤りがある場合, あなたは


コメント