rsyncログでf +++++++++はどういう意味ですか?


116

私はrsyncサーバーファイルのバックアップを作成するために使用しています。次の2つの質問があります。

  1. プロセスの途中で、停止してrsync再開する必要があります。
    ウィルrsyncそれが停止したか、それは最初から再開されますポイントから始めますか?

  2. 私が見るログファイルで"f+++++++++"。どういう意味ですか?

例えば:

2010/12/21 08:28:37 [4537] >f.st...... iddd/logs/website-production-access_log
2010/12/21 08:29:11 [4537] >f.st...... iddd/web/website/production/shared/log/production.log
2010/12/21 08:29:14 [4537] .d..t...... iddd/web/website/production/shared/sessions/
2010/12/21 08:29:14 [4537] >f+++++++++ iddd/web/website/production/shared/sessions/ruby_sess.017a771cc19b18cd
2010/12/21 08:29:14 [4537] >f+++++++++ iddd/web/website/production/shared/sessions/ruby_sess.01eade9d317ca79a

回答:


196

rsyncのしくみを見て、不可解な結果行をよりよく理解しましょう。

1-rsyncの大きな利点は、中断後、次にスムーズに続行できることです。

その間に変更されていなければ、次のrsync呼び出しでは、すでに転送されたファイルは再度転送されません。ただし、中断されたことを認識していないため、最初からすべてのファイルのチェックが再び開始されます。

2 -各文字は、あなたがのためにセクション読めば翻訳することができるコードである-i, --itemize-changes中をman rsync

質問からサンプルログファイルをデコードします。

> f.st ......

> - the item is received
f - it is a regular file
s - the file size is different
t - the time stamp is different

.d..t ......

. - the item is not being updated (though it might have attributes 
    that are being modified)
d - it is a directory
t - the time stamp is different

> f +++++++++

> - the item is received
f - a regular file
+++++++++ - this is a newly created item

rsyncのmanページの関連部分:

-i、-itemize-changes

属性の変更を含む、各ファイルに加えられている変更の簡単な項目別リストを要求します。これは--out-format = '%i%n%L'を指定するのとまったく同じです。オプションを繰り返すと、変更されていないファイルも出力されますが、受信するrsyncがバージョン2.6.7以上の場合に限ります(-vvを古いバージョンのrsyncで使用できますが、他の詳細なメッセージの出力もオンになります)。セージ)。

「%i」エスケープには、11文字の長さの不可解な出力があります。一般的な形式は、文字列YXcstpoguaxに似ています。ここで、Yは実行される更新のタイプに置き換えられ、Xはファイルタイプに置き換えられます。その他の文字は、変更されている場合に出力される可能性のある属性を表します。

Yを置き換える更新タイプは次のとおりです。

  • A <は、ファイルがリモートホストに転送されている(送信されている)ことを意味します。
  • A >は、ファイルがローカルホストに転送されている(受信されている)ことを意味します。
  • cは、アイテムのローカルでの変更/作成(ディレクトリの作成やシンボリックリンクの変更など)が発生していることを意味します。
  • A hは、アイテムが別のアイテムへのハードリンクであることを意味します(--hard-linksが必要)。
  • A .は、アイテムが更新されていないことを意味します(ただし、変更されている属性がある場合があります)。
  • A *は、項目別出力領域の残りの部分にメッセージ(「削除中」など)が含まれていることを意味します。

Xを置き換えるファイルタイプfは、ファイル、dディレクトリ、Lシンボリックリンク、Dデバイス、およびS特殊ファイル(名前付きソケットやfifoなど)です。

上記の文字列の他の文字は、アイテムの関連付けられた属性が更新されている場合に出力される実際の文字または「。」です。変化なし。これに対する3つの例外は、(1)新しく作成されたアイテムが各文字を「+」で置き換える、(2)同一のアイテムがドットをスペースで置き換える、(3)不明な属性が各文字を「?」で置き換える (これは、古いrsyncと通信するときに発生する可能性があります)。

各文字に関連付けられている属性は次のとおりです。

  • A cは、通常のファイルのチェックサムが異なる(--checksumが必要)か、シンボリックリンク、デバイス、または特殊ファイルの値が変更されていることを意味します。3.0.1より前のrsyncにファイルを送信する場合、この変更フラグはチェックサムが異なる通常のファイルにのみ存在することに注意してください。
  • A sは、通常のファイルのサイズが異なり、ファイル転送によって更新されることを意味します。
  • A tは、変更時間が異なり、送信者の値に更新されていることを意味します(--timesが必要)。Tの代替値は、変更時刻が転送時間に設定されることを意味します。これは、ファイル/シンボリックリンク/デバイスが--timesなしで更新された場合、およびシンボリックリンクが変更され、受信者が時刻を設定できない場合に発生します。(注:rsync 3.0.0クライアントを使用している場合、この時刻設定の失敗に対して、適切なTフラグの代わりにsフラグがtと組み合わされて表示されることがあります。)
  • A pは権限が異なり、送信者の値に更新されていることを意味します(--permsが必要)。
  • o手段所有者が異なっており、(--ownerとスーパーユーザ権限が必要)送信者の値に更新されています。
  • A gは、グループが異なり、送信者の値に更新されていることを意味します(--groupとグループを設定する権限が必要です)。
  • uスロットは、将来の使用のために予約されています。
  • これaは、ACL情報が変更されたことを意味します。
  • これxは、拡張属性情報が変更されたことを意味します。

もう1つの出力が可能です。ファイルを削除すると、 "%i"は、削除される各アイテムの文字列 "* deleting"を出力します(ファイルを次のように出力するのではなく、削除をログに記録する最近の十分なrsyncと話していると仮定します)詳細メッセージ)。


この投稿/回答は非常に古いものですが、コメントを書く必要がありました。rsyncについて私が今まで見た中で最高の答えの1つです。ありがとうmit
ホルヘ

101

少し前に、rsync私が書いているスクリプトの出力を理解する必要がありました。スクリプト私の周りGoogleで検索して@mitが書かれていたものになったことを書いているプロセス中の上。その情報と他のソースからのドキュメントを使用して、ビットフラグとrsyncすべてのアクションのビットフラグを出力する方法を独自に作成しました(デフォルトではこれを行いません)。

私はその情報をここに投稿しています。これは、(私のような)検索でこのページに出くわし、のより良い説明が必要な他の人に役立つことを期待していますrsync

組み合わせで--itemize-changes-vvv旗、rsync私たちのターゲットディレクトリと比較すると、ソースディレクトリに同定されたすべてのファイルシステムの変更の詳細な出力を提供します。によって生成されたビットフラグをrsyncデコードして、何が変更されたかを判別できます。各ビットの意味をデコードするには、次の表を使用してください。

rsyncの出力の各ビット位置と値の説明:

YXcstpoguax  path/to/file
|||||||||||
||||||||||╰- x: The extended attribute information changed
|||||||||╰-- a: The ACL information changed
||||||||╰--- u: The u slot is reserved for future use
|||||||╰---- g: Group is different
||||||╰----- o: Owner is different
|||||╰------ p: Permission are different
||||╰------- t: Modification time is different
|||╰-------- s: Size is different
||╰--------- c: Different checksum (for regular files), or
||              changed value (for symlinks, devices, and special files)
|╰---------- the file type:
|            f: for a file,
|            d: for a directory,
|            L: for a symlink,
|            D: for a device,
|            S: for a special file (e.g. named sockets and fifos)
╰----------- the type of update being done::
             <: file is being transferred to the remote host (sent)
             >: file is being transferred to the local host (received)
             c: local change/creation for the item, such as:
                - the creation of a directory
                - the changing of a symlink,
                - etc.
             h: the item is a hard link to another item (requires 
                --hard-links).
             .: the item is not being updated (though it might have
                attributes that are being modified)
             *: means that the rest of the itemized-output area contains
                a message (e.g. "deleting")

さまざまなシナリオでのrsyncの出力例:

>f+++++++++ some/dir/new-file.txt
.f....og..x some/dir/existing-file-with-changed-owner-and-group.txt
.f........x some/dir/existing-file-with-changed-unnamed-attribute.txt
>f...p....x some/dir/existing-file-with-changed-permissions.txt
>f..t..g..x some/dir/existing-file-with-changed-time-and-group.txt
>f.s......x some/dir/existing-file-with-changed-size.txt
>f.st.....x some/dir/existing-file-with-changed-size-and-time-stamp.txt 
cd+++++++++ some/dir/new-directory/
.d....og... some/dir/existing-directory-with-changed-owner-and-group/
.d..t...... some/dir/existing-directory-with-different-time-stamp/

rsyncの出力のキャプチャ(ビットフラグに焦点を当てています):

私の実験では、両方の--itemize-changesフラグ-vvvフラグを取得するために必要なrsync出力にのエントリのすべてのファイルシステムの変更を。トリプル冗長(-vvv)フラグがないと、ディレクトリ、リンク、デバイスの変更が一覧表示されませんでした。ご使用のバージョンのrsyncを試して、それが期待どおりのすべてを監視および記録していることを確認してください。

この手法の便利な使用法の1つは--dry-run、コマンドにフラグを追加し、rsyncによって決定された変更リストを(変更を加えずに)変数に収集して、リストに対して何らかの処理を行うことです。次のようなものは、変数に出力をキャプチャします。

file_system_changes=$(rsync --archive --acls --xattrs \
    --checksum --dry-run \
    --itemize-changes -vvv \
    "/some/source-path/" \
    "/some/destination-path/" \
| grep -E '^(\.|>|<|c|h|\*).......... .')

上記の例では、からの(stdout)出力rsyncgrep(stdinを介して)にリダイレクトされるため、ビットフラグを含む行のみを分離できます。

キャプチャされた出力の処理:

変数の内容は、後で使用するためにログに記録したり、関心のある項目に対してすぐに繰り返し処理したりできます。私はこの詳細な戦術を、についての調査中に書いたスクリプトで使用していますrsync。スクリプト(https://github.com/jmmitchell/movestough)を見て、キャプチャされた出力を後処理して、新しいファイル、重複ファイル(同じ名前、同じ内容)、ファイルの衝突(同じ名前、異なる)を分離する例を確認できます。内容)、およびサブディレクトリ構造の変更。


1
非常に便利!ログ出力の-Tとは何ですか?
Pol Hallen 2017

Pol、rsyncのTフラグについて質問しますか?
ジョンマークミッチェル

Pol、あなたの質問を正しく理解していれば、rsyncログのtは、比較された2つのファイルのタイムスタンプが異なることを意味します。異なる時期に作成または変更されたことを意味します。
ジョンマークミッチェル

3
出力の "T"は、時刻が現在の時刻に更新されたことを意味します "<f..T ...... Rise.mp3"。少なくともこれは私が観察していることです。"t"はローカルファイルの時刻です。
C.ケリー

1
私は数年遅れていますが、「t」と「T」はmanページで説明されています。tは変更時刻が異なり、送信者の値に更新されることを意味します(--timesが必要です)。Tの代替値は、変更時刻が転送時間に設定されることを意味します。これは、ファイル/シンボリックリンク/デバイスが--timesなしで更新された場合、およびシンボリックリンクが変更され、受信者が時刻を設定できない場合に発生します。(注:rsync 3.0.0クライアントを使用している場合、この時刻設定の失敗に対して、適切なTフラグの代わりにsフラグがtと組み合わされて表示されることがあります。)
user187557

2

1)Wodin、それは完全に真実ではありません。--partialまたは-Pタグを使用する場合(--partial --progressと同じ)、rsyncは中断された転送を再開します。

2)まさに、それが--itemize-changesタグの一般的な出力です。


2

1.)「同期を再開」しますが、同じサイズやタイムスタンプなどのファイルは転送しません。最初に転送するファイルのリストを作成し、この段階ですでにいくつかのファイルを転送していることがわかりますスキップします。タイムスタンプなどを保持するようにrsyncに指示する必要があります(例:を使用rsync -a ...

rsyncは、ファイルを転送しているが、それは何か、それを呼び出します.filename.XYZABC代わりにfilename。次に、そのファイルの転送が完了すると、名前を変更します。したがって、大きなファイルを転送しているときにrsyncを強制終了した場合は、最初からではなく--partialオプションを使用して転送を続行する必要があります。

2.)それが何かわからない。いくつかの例を貼り付けることができますか?

編集:http : //ubuntuforums.org/showthread.php?t=1342171に従って、これらのコードは-i, --itemize-changesオプションのセクションのrsyncのマニュアルページで定義されています。

ジョアンのに基づいて私の答えの部分を修正しました


上記のログの例をいくつか示します。ありがとう。
GodFather 2010

回答を更新しました。コードについては、manページで説明しています。
Wodin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.