LinuxでRsyncを使用してファイルを転送する方法

LinuxでRsyncを使用してファイルを転送する方法

Rsyncを使用してシステム間でファイルを効率的に転送および同期するためのガイド。

Rsyncは、システム間でファイルを転送および同期するための強力なツールです。バックアップ、ファイルのミラーリング、ローカルディレクトリ間やリモートサーバー間でのファイル更新に広く使用されています。バックアップの管理やマシン間でのファイル転送など、Linuxシステムを扱うすべての人にとってRsyncの使い方を理解することは不可欠です。

Rsyncとは?

Rsyncは、転送元ファイルと転送先ファイルの差分のみを転送することで効率的にファイルをコピーするファイル転送ツールです。この機能によりデータ転送量が削減され、処理が高速化されるため、システム管理者や開発者の間で広く支持されています。

Rsyncのインストール

RsyncはほとんどのLinuxディストリビューションの公式リポジトリで提供されており、標準でプレインストールされていることもよくあります。各種システムへのインストール方法は以下のとおりです:

ステップ1: UbuntuおよびDebianにRsyncをインストールする

sudo apt install rsync

ステップ2: FreeBSDにRsyncをインストールする

sudo pkg install rsync

ステップ3: Arch LinuxにRsyncをインストールする

sudo pacman -S rsync

ステップ4: Fedora、AlmaLinux、Rocky Linux、VzLinuxにRsyncをインストールする

sudo dnf install rsync

ステップ5: CentOSにRsyncをインストールする

sudo yum install rsync

Rsyncコマンドの構文

Rsyncを使用する基本的な構文は以下のとおりです:

rsync [OPTIONS] SOURCE DESTINATION

各項目の説明:

  • OPTIONS: Rsyncの動作を変更するフラグ(例えばアーカイブモードの -a など)。
  • SOURCE: 同期するファイルまたはディレクトリ。
  • DESTINATION: 転送元のコピー先。

SSH経由でリモート転送を行う場合は、次の構文を使用します:

rsync [OPTIONS] [USER@]HOST:SOURCE DESTINATION

置き換え対象の [USER@]HOST をリモートユーザーの認証情報とホストアドレスに置き換えます。

よく使用されるRsyncオプション

よく使用されるオプションを以下に示します:

  • -a, --archive: アーカイブモードを有効にし、ファイル属性を保持します。
  • -v, --verbose: 転送中に詳細な情報を表示します。
  • -z, --compress: 帯域幅を節約するために転送中にデータを圧縮します。
  • --exclude=PATTERN: 特定のパターンに一致するファイルを除外します。
  • --delete: 転送元に存在しない転送先のファイルを削除します。

Rsyncを使用したファイルとディレクトリの転送

まずはテスト環境をセットアップします:

ステップ1: テストディレクトリを作成する

mkdir rsync-test

ステップ2: ディレクトリに移動する

cd rsync-test

ステップ3: サンプルファイルを作成する

touch file1 file2 file3

ローカルファイルの転送

ファイルを新しいディレクトリ destにコピーするには、次を使用します:

rsync file1 file2 file3 dest

ファイルがコピーされたことを確認します:

ls dest/

ローカルディレクトリの転送

ディレクトリとその内容をコピーするには、 -a フラグを使用します:

rsync -a dest/ dest-copy

コピー操作を確認します:

ls dest-copy/

ファイルまたはディレクトリの除外

特定のファイルをコピーから除外するには、 --exclude フラグを使用します:

rsync -a --exclude 'file2' --exclude 'dest*' . output

出力を確認します:

ls output/

リモートマシンへのデータの同期

リモートマシンにファイルを同期するには、次を使用します:

rsync -hazvP --delete --stats . [email protected]:synced_from_local

このコマンドは以下の処理を行います:

  • -h: 数値を人間が読みやすい形式で出力します。
  • -a: アーカイブモードを有効にします。
  • -z: 転送中にデータを圧縮します。
  • -v: 詳細な出力を有効にします。
  • --delete: 転送元に存在しなくなったファイルを転送先から削除します。
  • --stats: 転送の概要を表示します。

SSHを使用してリモートマシンにログインします:

ssh [email protected]

まとめ

Rsyncは、ファイル転送と同期を簡素化する多機能なツールです。ファイルのバックアップを行う場合でも、システム間でデータを転送する場合でも、Rsyncの効率性と柔軟性は非常に有用なリソースとなります。

メリット

  • 差分のみを送信することによる効率的なファイル転送。
  • ファイル属性やメタデータを保持。
  • 帯域幅を節約するための圧縮をサポート。
  • ファイルを含める/除外するための柔軟なオプション。

デメリット

  • オプションが多数あるため、初心者には複雑に感じられる場合がある。
  • リモート転送にはSSHアクセスが必要。
  • 削除オプションを不適切に使用した場合、データが失われる可能性がある。

注意

本記事は教育目的で提供されています。コマンドを使用する際は、必ずプレースホルダーの値を実際のデータに置き換えてください。また、記載内容に依拠する前に、元の情報源に照らして確認してください。

よくある質問

  • Rsyncとは何ですか? — Rsyncは、ローカルシステムとリモートシステム間でファイルを効率的に同期するファイル転送ツールです。
  • LinuxにRsyncをインストールするにはどうすればよいですか? — お使いのディストリビューションのパッケージマネージャーを使用します。例えば apt, dnf、または pacman.
  • この -a オプションはRsyncで何をするものですか? — この -a オプションはアーカイブモードを有効にし、転送中にファイル属性を保持します。
  • Rsyncはリモート転送に使用できますか? — はい、RsyncはSSHを使用してリモートシステムとの間でファイルを転送できます。
  • この --exclude オプションは何をするものですか? — この --exclude オプションを使用すると、転送中にスキップするファイルやディレクトリを指定できます。
  • Rsyncは安全に使用できますか? — はい。ただし、 --deleteのような、転送先からファイルを削除する可能性のあるオプションには注意が必要です。
Free field guide

Docker Security Checklist

Lock down your containers from build to runtime — 29 practical controls covering images, runtime flags, secrets, and the daemon. Enter your email — you'll get the PDF instantly, plus new posts on Docker, Linux & security.