編集済み 2 数時間前 によって ExtremeHow 編集チーム
バックアップコマンドラインファイル同期データ管理ユーティリティスクリプティングセキュリティストレージ転送
翻訳が更新されました 2 数時間前
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の主要機能はファイルとディレクトリの同期です。例えば、source_directory
からdestination_directory
にすべてのファイルをコピーするには、次のコマンドを使用できます:
rsync -avzh /path/to/source_directory/ /path/to/destination_directory/
このコマンドで使用されるオプションを分析します:
source_directory/
の最後のスラッシュは、ディレクトリ自体ではなく、そのディレクトリの内容のみがコピーされることを保証します。
Rsyncの最も強力な機能のひとつは、SSHを使用してネットワーク経由でファイルを同期する能力です。SSHはデータを暗号化して、盗聴者がそれを読むことができないようにするので、安全なデータ転送が可能です。ローカルシステムとリモートシステム間でディレクトリを同期するには、次のコマンドを使用します:
rsync -avz -e "ssh" user@remote_host:/path/to/remote_directory/ /path/to/local_directory/
このコマンドは、リモートシェルプログラム(この場合はSSH)を指定するために-e
オプションを使用します。
同様に、ローカルシステムからリモートサーバーにファイルをコピーするには、source
とdestination
引数を変更します:
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は、自動バックアップソリューションに最適な選択肢です。
記事の内容に誤りがある場合, あなたは