Ubuntuでrsyncを使いこなす!ファイル同期・バックアップ完全ガイド【初心者向け】

目次

1. はじめに

rsyncとは何か?

rsyncは、ファイルやディレクトリを高速かつ効率的に同期・コピーするためのコマンドラインツールです。特にLinuxやUnix系のシステムで広く使われており、差分のみを転送する仕組みにより、大量のファイルでも無駄なく同期を行うことができます。UbuntuをはじめとするLinuxディストリビューションには標準で用意されていることも多く、サーバー管理者や開発者にとって欠かせない存在となっています。

Ubuntuでrsyncを使うメリット

Ubuntuでは、日常的なファイルのバックアップや複数のディレクトリの同期処理において、rsyncが非常に効果的に機能します。グラフィカルな操作に頼らず、ターミナルから数行のコマンドを入力するだけで、ローカル間・リモート間問わず高速なファイル転送が可能です。

特に以下のような場面で活躍します:

  • 外付けHDDやNASへの定期的なバックアップ
  • 開発中のプロジェクトフォルダの同期
  • リモートサーバーへのデプロイ作業
  • ファイルのミラーリングによる可用性の向上

他のコマンドとの違い

cpコマンドと比べると、rsyncはコピー元とコピー先の差分だけを転送するため、処理時間が大幅に短縮されます。また、scpに比べると、エラー発生時の再開機能や、帯域制限の柔軟な設定が可能である点も優れています。加えて、ファイルの属性(所有者、パーミッション、タイムスタンプなど)を保持したまま転送できる点も大きな利点です。

この記事の目的

本記事では、Ubuntu環境でrsyncをどのようにインストールし、どのように使いこなしていくかを、実際のコマンド例やユースケースを交えながら詳しく解説していきます。初心者でも無理なく導入できるよう、GUIツールやトラブル対策にも触れつつ、rsyncの実践的な使い方を段階的に学んでいきましょう。

年収訴求

2. rsyncのインストール方法(Ubuntu)

Ubuntuにrsyncがプリインストールされているか確認する

多くのUbuntu環境では、rsyncは最初からインストールされていることが一般的です。まずは以下のコマンドで、rsyncが既に利用可能かどうか確認してみましょう。

rsync --version

このコマンドを実行してバージョン情報が表示されれば、すでにインストール済みです。そのまま使用できます。

rsyncがインストールされていない場合の手順

もし「コマンドが見つかりません」や「rsync: command not found」といったメッセージが表示された場合は、以下の手順でインストールを行いましょう。

  1. パッケージ情報を更新します:
sudo apt update
  1. rsyncをインストールします:
sudo apt install rsync
  1. インストールが完了したら、再度バージョンを確認します:
rsync --version

問題なくバージョン情報が表示されれば、インストールは成功です。

snapや他の方法でのインストールは必要か?

UbuntuにおいてrsyncはAPTでのインストールが最も推奨される方法です。snapパッケージも存在しますが、通常用途ではAPT版で十分であり、安定性や互換性の面でも優れています。特別な理由がない限り、APTを使ったインストールを選びましょう。

インストール時の注意点

  • 古いUbuntuバージョンでは、リポジトリの更新が必要な場合があります。
  • root権限が必要なため、sudoを付け忘れないようにしましょう。
  • ネットワーク接続が不安定な環境では、インストール時にエラーが出ることがありますので、安定した回線環境での実行がおすすめです。

3. rsyncの基本的な使い方

rsyncの基本構文

rsyncのコマンド構文はシンプルですが、非常に柔軟です。基本的な形は以下の通りです:

rsync [オプション] コピー元 コピー先

例えば、/home/user/documents/ディレクトリの内容を/mnt/backup/にコピーする場合は、次のように記述します。

rsync -av /home/user/documents/ /mnt/backup/

このコマンドでは次のようなオプションを使用しています:

  • -a:アーカイブモード(ディレクトリ構造・パーミッション・所有者などを維持)
  • -v:詳細な出力(どのファイルがコピーされたかを表示)

ディレクトリの末尾スラッシュに注意

rsyncでは、コピー元にスラッシュを付けるかどうかで挙動が変わります。

  • /home/user/documents/(スラッシュあり)
    → 中身のみがコピーされます(例:file1.txt, file2.txtなど)
  • /home/user/documents(スラッシュなし)
    documentsフォルダごとコピーされます(結果:/mnt/backup/documents/file1.txt

この違いはrsync特有の重要なポイントです。用途に応じて使い分けましょう。

よく使うオプション一覧

rsyncには多くのオプションがありますが、基本的な使用でよく利用されるものは以下です:

オプション説明
-aアーカイブモード(再帰・属性保持)
-v転送ファイルの詳細を表示
-n実行せず、処理内容だけを表示(ドライラン)
--progressコピー進行状況を表示
--deleteコピー元にないファイルをコピー先から削除

実行前に何が行われるか確認したい

実際にファイルを転送する前に、処理対象だけを確認したい場合は、-nまたは--dry-runオプションを使います。

rsync -av --dry-run /home/user/documents/ /mnt/backup/

このようにすることで、「何が行われるか」を事前に確認できるため、事故を防げます。

隠しファイルの扱い

rsyncでは、ドット(.)で始まる隠しファイルも自動的に対象に含まれます。これにより、設定ファイルや環境情報なども一括で同期可能です。

4. リモートサーバーとの同期

SSHを利用したrsyncのリモート同期

rsyncの大きな利点の一つが、SSHを経由してリモートサーバーとファイル同期ができる点です。これにより、安全な接続を保ちつつ、ネットワーク越しにデータを転送できます。

基本構文は以下の通りです:

rsync -avz コピー元 user@リモートIPまたはホスト名:コピー先パス

例として、ローカルの/home/user/documents/ディレクトリを、リモートサーバーの/var/www/backup/に同期する場合は次のようになります:

rsync -avz /home/user/documents/ user@example.com:/var/www/backup/
  • -z オプションはデータを圧縮して送信するため、回線速度が限られている場合に有効です。
  • user@host の部分は、接続先のSSHユーザー名とホストを指定します。

初回の接続と鍵認証の設定

初めて接続するリモート先では、ホスト認証の確認が表示されることがあります。続行して問題ない場合は「yes」と入力しましょう。

頻繁にrsyncを実行する場合、パスワード入力を省略するためにSSHキー認証を導入するのが一般的です。

  1. ローカルでSSH鍵を作成(まだない場合):
ssh-keygen -t rsa
  1. 鍵をリモートサーバーにコピー:
ssh-copy-id user@example.com

以降はパスワードなしでrsyncが実行可能になります。

ポート番号の指定が必要な場合

リモートサーバーがデフォルト以外のSSHポート(22番)を使用している場合、-eオプションで明示的に指定できます。

rsync -avz -e "ssh -p 2222" /home/user/documents/ user@example.com:/var/www/backup/

双方向の同期には注意

rsyncは一方向の同期ツールであり、「コピー元→コピー先」の流れでしか同期しません。双方向同期を行いたい場合は、rsyncだけでは対応が難しく、別ツール(例:unison)の導入を検討する必要があります。

5. rsyncの便利なオプションと活用例

rsyncの基本を超える便利なオプション

rsyncは、基本的なコピー・同期機能に加えて、さまざまな便利なオプションを備えています。以下では、実務で役立つ応用的なオプションをいくつか紹介します。

–delete:コピー元にないファイルを削除

このオプションを使うことで、コピー元に存在しないファイルをコピー先から自動的に削除できます。ミラーリング(完全な複製)を行いたい場合に非常に便利です。

rsync -av --delete /home/user/source/ /mnt/backup/

※ 誤って必要なファイルを消してしまうリスクもあるため、事前に --dry-run での確認がおすすめです。

–exclude:特定ファイルやディレクトリを除外

一部のファイルやディレクトリを同期対象から外したいときには、--excludeを使います。

rsync -av --exclude '*.log' --exclude 'node_modules' /project/ /backup/

複数のパターンを組み合わせることで、柔軟な除外設定が可能です。

–bwlimit:帯域幅制限

バックグラウンドでrsyncを動かしつつ、他の通信に支障を出したくない場合は、転送速度を制限する--bwlimitが有効です。

rsync -av --bwlimit=5000 /data/ user@remote:/data/

(この例では最大5MB/sに制限)

実用的な活用例

バックアップ用途でのrsync

rsyncは、手軽かつ高性能なバックアップツールとしても使えます。以下は、外付けHDDに毎日バックアップを取るようなケースで使えるコマンドです。

rsync -a --delete /home/user/ /media/usb/backup/

ここでは--deleteを併用し、完全なミラーリングを実現しています。

cronと組み合わせた自動実行

rsyncはcronと組み合わせることで、定期的な同期を自動化できます。たとえば、毎晩2時にバックアップを取る場合は、以下のようにcrontabを編集します:

0 2 * * * rsync -a /home/user/ /mnt/backup/ >> /var/log/rsync.log 2>&1

これにより、無人での自動同期が可能となり、業務やサーバー運用の効率が大幅に向上します。

rsyncは「柔軟性」と「効率性」の両立が可能

rsyncの魅力は、その豊富なオプション群によって「どんな用途にも適応できる柔軟性」「転送効率の高さ」を両立している点にあります。単なるコピーではなく、意図通りの同期を安全かつ高速に行うための手段として、rsyncは非常に強力な選択肢となります。

6. GUIツール「Grsync」の紹介

コマンドラインが苦手な人におすすめ

rsyncは非常に強力なツールですが、その操作は基本的にターミナルを使ったコマンド入力が前提です。Linuxに不慣れな初心者や、視覚的に設定を確認しながら使いたい方にとっては、敷居が高く感じられるかもしれません。

そんなときに役立つのが、Grsync(ジー・アール・シンク)というGUIツールです。これはrsyncを内部で使用しつつ、グラフィカルなインターフェースで設定・実行が行えるアプリケーションです。

Grsyncのインストール方法(Ubuntu)

UbuntuではGrsyncをAPTで簡単にインストールできます。

sudo apt update
sudo apt install grsync

インストール後は、アプリケーション一覧に「Grsync」と表示され、クリックすることでGUIが起動します。

Grsyncの基本的な使い方

Grsyncの画面は直感的で、以下のような項目を設定できます。

  • コピー元とコピー先のパスを入力
  • 「再帰的コピー」「ファイル属性を保持」「削除オプション」など、rsyncの主要なオプションに対応したチェックボックス
  • 除外パターンの指定
  • ドライラン実行のボタン

設定後に「実行」ボタンを押せば、バックエンドでrsyncが動作し、ファイルの同期が行われます。

プロファイル機能で定期処理も簡単に

Grsyncでは、設定内容を「プロファイル」として保存できます。複数のバックアップ設定や同期先を切り替えて管理する際に非常に便利です。

たとえば:

  • プロファイル1:USBメモリへのバックアップ
  • プロファイル2:NASとの同期
  • プロファイル3:外部サーバーへのミラーリング

といった使い分けがGUI上で簡単に実現できます。

Grsyncを使うメリット・デメリット

メリットデメリット
コマンド不要で直感的に操作できる一部の高度なオプションはGUIから設定できないことがある
オプションの意味を確認しながら設定できる処理内容の可視化がやや抽象的で、rsyncの出力結果に慣れている人には物足りない可能性あり
安全に始められる(ドライランなどもボタン一つ)ターミナルと比べると柔軟性に劣る場面もある

7. よくあるトラブルとその対処法

ファイルのパーミッションが保持されない

症状:コピー先のファイルの所有者やパーミッションが変わってしまう。
原因:rsyncを一般ユーザー権限で実行しているか、-a(アーカイブ)オプションが使われていない。
対処法

  • -aオプションを明示的に指定する。
  • 必要に応じてsudoを付けてrsyncを実行する。
sudo rsync -a /source/ /destination/

シンボリックリンクが無視される

症状:リンクファイルがコピーされない、または実体としてコピーされる。
原因:デフォルトではシンボリックリンクがそのままコピーされるが、オプションにより挙動が異なる。
対処法

  • リンクをそのままコピー:-aを使用。
  • 実体をコピーしたい場合:--copy-linksを追加する。

「Permission denied」と表示される

症状:特定のファイルやディレクトリで「Permission denied」エラーが出て同期できない。
原因:アクセス権限が不足している。
対処法

  • sudoを付けてrsyncを実行する。
  • コピー元または先のディレクトリに対するアクセス権を確認・修正する。
sudo rsync -a /source/ /destination/

「rsync: connection unexpectedly closed」と表示される(リモート接続時)

症状:リモートサーバーとの接続中にエラーが発生して同期が中断される。
原因:SSHの設定不備や、パスの指定ミス、リモート側の権限設定など。
対処法

  • SSH接続単体で確認:ssh user@hostが通るかチェック。
  • コピー先のパスが正しいか再確認。
  • ファイアウォールやポートの問題も考慮。

「Argument list too long」

症状:大量のファイルを含むディレクトリを同期しようとすると、エラーが出る。
原因:コマンドラインの引数長の制限を超えている。
対処法

  • --exclude--includeで対象を絞る。
  • ディレクトリ単位で複数回に分けて同期する。

8. FAQ(よくある質問)

ここでは、Ubuntuでrsyncを使用する際にユーザーからよく寄せられる疑問や質問をまとめました。初心者の方がつまずきやすいポイントを中心に、明快に解説します。

Q1. rsyncでファイルの所有者やパーミッションを保持するにはどうすればいいですか?

A1. -aオプション(アーカイブモード)を使用することで、ファイルのパーミッション、タイムスタンプ、所有者、グループなどをそのまま保持してコピーできます。システム設定のバックアップなどには必須のオプションです。

rsync -a /etc/ /backup/etc/

Q2. 特定のファイルやフォルダを除外して同期したい場合は?

A2. --excludeオプションを使うことで、特定のファイルやパターンを同期対象から除外できます。

rsync -av --exclude '*.log' /project/ /backup/project/

ワイルドカードも利用でき、node_modules.gitディレクトリなども簡単に除外可能です。

Q3. rsyncでネットワーク帯域を制限するには?

A3. --bwlimitオプションを使えば、転送速度を制限できます。単位はKB/sです。

rsync -av --bwlimit=5000 /data/ user@remote:/data/

この例では最大5MB/sの速度で転送されます。回線を圧迫したくない場合に便利です。

Q4. 実行前に何が行われるか確認したいのですが?

A4. --dry-run(または -n)オプションを使うと、実際にはファイルの転送を行わず、何が実行されるかだけをシミュレーションできます。

rsync -av --dry-run /source/ /destination/

初めてrsyncを使う場合や--deleteを含めた処理を行う際には、この確認作業が非常に重要です。

Q5. 隠しファイル(ドットファイル)はコピーされますか?

A5. はい、rsyncはデフォルトでドット(.)から始まるファイルも含めてコピー対象とします。ただし、特定の隠しファイルを除外したい場合は、--exclude '.*'などの除外ルールを追加する必要があります。

Q6. rsyncとscpの違いは何ですか?

A6. scpは単純なファイル転送に特化したツールで、全ファイルを毎回転送します。rsyncは差分転送が可能で、変更のあった部分のみを効率的にコピーするため、バックアップやミラーリングにより適しています。途中中断からの再開にも強いです。

9. まとめ

本記事では、Ubuntuにおけるrsyncの導入方法から、基本的な使い方、リモートサーバーとの同期、便利なオプション、GUIツール「Grsync」の活用、そしてトラブルシューティングやFAQまで、幅広く解説しました。

rsyncの魅力を振り返る

  • 差分のみの高速転送で、無駄なデータ転送を防ぎます。
  • パーミッションや所有者を保持したまま、バックアップやミラーリングが可能です。
  • リモート同期にも対応しており、SSHと組み合わせてセキュアな運用ができます。
  • 豊富なオプションで、除外設定や帯域制限など、状況に応じた細かな制御が可能です。
  • cronと連携することで、自動化・定期実行も実現できます。
  • GUIツールのGrsyncを使えば、初心者でも安心して操作できます。

rsyncは「Linuxユーザーの必修ツール」

Ubuntuを含むLinux環境において、rsyncはファイル操作・バックアップ・同期の基本ツールとも言える存在です。初めての方でも、今回紹介した内容を実践することで、安全かつ効率的にrsyncを活用できるはずです。

また、rsyncはシンプルな構文ながら、使いこなすことでプロレベルのファイル管理が可能になります。まずは基本を押さえ、必要に応じて応用的なオプションを取り入れながら、自分の環境に最適な使い方を見つけてみてください。

侍エンジニア塾