rsync

rsync出力フォーマット読み方大全

突然ですが、rsyncを実行すると下記のような感じで出力されます。

.d..t...... vtuber
>f.st...... vtuber/mirai_akari.txt

dとかfとかはdirectoryfileかなと推測できるのですが、sとかtとかなんじゃろと思っておもむろにman rsyncしてみました。

YXcstpogz

man rsyncを眺めてみると--i, --itemize-changesの項目に出力フォーマットについて書いてあります。
このフォーマットはYXcstpogzのように9項目あるようです。
それではこれらを順番に見ていきまーしょうっ!

Yについて

Yは更新形式を表します。
Yは下記の値を取ります。

< > c h .
リモートへ転送完了 ローカルへ転送完了 作成or変更 ハードリンクされた項目 未更新

Xについて

Xはファイル形式を表します。
Xは下記の値を取ります。

f d L D S
ファイル ディレクトリ シンボリックリンク デバイスファイル 特別なファイル(socketやfifoファイル等)

例外

  1. 新規作成された項目は+が表示されます。
  2. 未更新のファイルはスペースが表示されます。
  3. 不明な属性は?が表示されます(古いrsyncのみ)

2.について補足

例えば後述の備考にあるように未変更のファイルを出力した場合、ドットがスペースに置き換わるよ、ということです。

更新あり.
.f...p... shiro.png
更新なし.
.f        shiro.png

cについて

ファイルのチェックサムが異なる場合表示されます。

sについて

ファイルのサイズが異なる場合表示されます。

tについて

ファイルの変更のタイムスタンプが異なる場合表示されます。
Tが表示されている場合は、転送日時が更新されます。これはシンボリックリンクが転送される時か、ファイルやデバイスファイルが--timesオプションなしで転送される際に表示されます。

pについて

ファイルのパーミッションが異なる場合表示されます。

oについて

ファイルの所有者が異なる場合表示されます。

gについて

ファイルのグループが異なる場合表示されます。

zについて

将来的な利用のために空けてある項目です。
現在は使われていません。

備考

rsync 2.6.7以降のバージョンでは--i --iまたは--itemize-changes --itemize-changesのようにオプションを2回繰り返すと未変更のファイルが出力されます。