フォルダの内容を比較・差分コピー: rsync コマンド

UBC/informatics/commands_mac/rsync

このページの最終更新日: 2026/09/08

  1. 2 つのフォルダの差分を調べ、最低限のコピー
  2. rsync のオプション一覧

広告

2 つのフォルダの差分を調べ、最低限のコピー

差分を調べる。

rsync -avhn --itemize-changes コピー元フォルダパス コピー先フォルダパス

-n を外し、--progress としたこれが実際のコピーコマンド。

rsync -avh --progress コピー元フォルダパス コピー先フォルダパス

途中までコピーが進んでおり、サブフォルダがある場合は、コピー元のフォルダパス末尾に / をつける。そうでないと、「コピー元フォルダ」の中に同名のフォルダができ、そこの中にコピーされてしまう。

rsync -avh --progress コピー元フォルダパス/ コピー先フォルダパス


広告

「あとがき」で当サイトを参考にしたと書いてくれているラノベです。Kindle Unlimited で読めました。ストーリーと文章が良く、面白かったです。

rsync のオプション一覧

オプション

分類など

意味・利用上の注意

-a

--archive

アーカイブモード。サブフォルダを再帰的にたどってコピーし、シンボリックリンク、更新日時、パーミッション、所有者・グループなどを可能な範囲で維持する。通常のフォルダ同期では基本となる推奨オプション。概ね -rlptgoD に相当する。

-r

--recursive

サブフォルダ以下を再帰的に処理する。-a には既に含まれるため、通常は -a と併記不要。

-v

--verbose

処理対象の情報を詳しく表示する。何がコピー・更新されたかをTerminal上で確認しやすくなる。

-h

--human-readable

ファイルサイズや転送量を、KB、MB、GBなど人が読みやすい単位で表示する。

-n

--dry-run

試行実行。実際にはファイル作成・上書き・削除をせず、rsyncがコピー・更新・削除の対象と判断した内容だけを表示する。初回実行時や --delete 使用前には必ず実行する。

--itemize-changes

差分表示

ファイルごとに、作成・更新・属性変更などの差分内容を記号で表示する。-n と組み合わせると、実コピー前に対象を詳細確認できる。

--progress

進捗表示

処理中ファイルごとの転送済み容量、転送速度、進捗率、残り時間の目安を表示する。大量ファイルでは表示が多くなる。

-P

--partial --progress

--partial--progress の短縮形。中断時に部分コピー済みファイルを残し、次回のrsyncで再利用できる可能性を持たせつつ、進捗も表示する。

--partial

中断対策

転送が中断されたとき、通常は削除される途中ファイルをコピー先に残す。HDD接続が不安定な場合や大容量ファイルのコピーに有用。

--partial-dir=.rsync-partial

中断対策

途中ファイルをコピー先の各フォルダではなく、.rsync-partial という専用隠しフォルダに保管する。作業途中の不完全ファイルを通常ファイルと混在させたくない場合に向く。

--append

大容量ファイル再開

コピー先にある既存ファイルの末尾へデータを追記する。コピー先ファイルの先頭部分がコピー元と完全に同一であることを前提とするため、通常のフォルダ同期より限定的な用途向け。

--append-verify

大容量ファイル再開

--append に検証を加えた方式。コピー先にある部分ファイルの既存部分を確認したうえで追記する。巨大なFASTQ、BAM、RAW、イメージファイルなどで中断後の転送再開を狙う際に使う。ただし、コピー先ファイルが途中まで正しくコピーされている前提が必要。

-c

--checksum

更新時刻とファイルサイズによる通常比較ではなく、ファイル内容のチェックサムで比較する。コピー完了後の厳密な整合性確認に有用。ただしコピー元・先の全ファイルを読み込むため、数TB規模では非常に時間がかかる。

--ignore-existing

既存ファイル保護

コピー先に同名ファイルが既に存在する場合、内容や更新時刻を比較せず必ずスキップする。既存データを絶対に触りたくない場合には有用だが、途中コピー・破損・古いファイルもスキップされるため、通常のコピー再開には原則非推奨。

-u

--update

コピー先の同名ファイルのほうが新しい場合、そのファイルを上書きしない。コピー先で独自に編集したファイルを保護したい場合に使う。ただし、コピー元を正とする完全同期には不向き。

--existing

既存ファイルのみ更新

コピー先に既に存在するファイルだけを更新し、新しいファイルや新規ディレクトリは作らない。更新のみ行いたい特殊な運用向け。

--ignore-errors

エラー時の削除制御

I/Oエラーが発生しても、--delete を伴う削除処理を続行できるようにする。誤削除の危険を高めるため、通常のHDDコピーでは使用しない。

--delete

ミラー同期

コピー元に存在しないファイルをコピー先から削除し、コピー先をコピー元と同じ構成に近づける。今回の「中断したコピーの再開」だけなら不要。誤指定時にコピー先データを消す危険があるため、必ず事前に -n --itemize-changes で確認する。

--delete-delay

ミラー同期

--delete による削除を転送完了後まで遅延させる。コピー中の容量やフォルダ構造の変動を抑えたい場合に使うが、削除の危険性自体は変わらない。

--exclude='PATTERN'

除外指定

指定パターンに一致するファイル・フォルダをコピー対象から外す。例:--exclude='.DS_Store'--exclude='*.tmp'。解析中間ファイルや一時ファイルを除外したいときに使用する。

--include='PATTERN'

対象指定

指定パターンに一致するファイル・フォルダを明示的に対象へ含める。--exclude と組み合わせ、特定の拡張子・特定のディレクトリだけを選択同期する際に使う。ルールの順番が結果に影響する。

--exclude-from=FILE

除外リスト

除外パターンを記載したテキストファイルを読み込む。除外対象が多い場合、コマンドを長くせず管理できる。

--max-size=SIZE

サイズによる除外

指定サイズより大きいファイルを転送対象から除外する。例:--max-size=10G。巨大なRAWデータを後回しにして、先に小さなファイル群だけコピーしたいときに有用。

--min-size=SIZE

サイズによる対象化

指定サイズより小さいファイルを除外する。例:--min-size=1M。大きなデータファイルだけを選んで転送したい場合に使う。

-t

--times

更新日時を保持する。-a に含まれる。更新日時が保存されることで、以後のrsyncがサイズと時刻を用いる高速な差分判定を行いやすくなる。

-p

--perms

UNIXパーミッションを保持する。-a に含まれる。コピー先がexFATやNTFSなどの場合、ファイルシステム側の制約により期待どおりに保存できないことがある。

-E

macOS拡張属性

macOS版rsyncで、拡張属性やリソースフォークを扱うために使われることがある。macOS標準搭載rsyncのバージョンやコピー先ファイルシステムに依存するため、通常の研究データコピーでは必須ではない。

-X

--xattrs

拡張属性を保持する。macOS上ではFinderタグ、隔離属性なども関係する場合がある。コピー先がAPFSまたはMac OS拡張で、Mac固有のメタデータまで維持したい場合に検討する。

-H

--hard-links

ハードリンクの関係を保存する。処理負荷とメモリ使用量が増えるため、通常のデータフォルダでは不要。Time Machineや特殊なバックアップ構造を扱う場合などに限定する。

-S

--sparse

スパースファイルの空き領域を維持する。仮想マシンイメージ、ディスクイメージ、データベースファイルなどに有効なことがある。コピー先ファイルシステムがスパースファイルを適切に扱える必要がある。

--stats

統計表示

処理ファイル数、転送量、実データ量、転送速度、スキップ量などの集計を終了時に表示する。ログとしてコピー規模や差分量を把握したい場合に便利。

--info=progress2

全体進捗

ファイル単位ではなく、転送全体の進捗量・進捗率・平均速度・残り時間の推定を表示する。大量の小ファイルがある場合、--progress より見やすいことが多い。Mac標準搭載rsyncが古い場合は対応していない可能性がある。

--log-file=FILE

ログ保存

実行内容を指定ファイルへ保存する。長時間コピーでは、完了後にエラー・転送対象を確認できる。例:--log-file="$HOME/rsync-copy.log"

--mkpath

出力先作成

存在しないコピー先の親ディレクトリを自動作成する比較的新しいオプション。Mac標準rsyncでは未対応の場合があるため、事前に rsync --version で確認する。

--protect-args

-s

特殊文字を含むファイル名・パスを保護して扱う。ローカルHDD間のコピーでは通常、パスをダブルクォーテーションで囲めば足りる。リモート接続を伴うrsyncで有用。



広告

References

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。