rsync
Macから外付けハードドライブにファイルをバックアップするために使用します。たとえば、
rsync -av --delete ~/Pictures/ "/Volumes/My Passport/Mac Backups/Pictures"
これを実行する前に、次のオプションを追加してテスト実行で同じコマンドを実行しました-n
。
rsync -avn --delete ~/Pictures/ "/Volumes/My Passport/Mac Backups/Pictures"
私が知っているのは、コピー/変更されたコンテンツの違いだけを見るべきですが、何らかの理由ですべてのフォルダとファイルが印刷されています。ただし、2つのフォルダを使用して同じコマンドをローカルでテストすると、変更の違いのみが表示されます。なぜこれが起こるのですか?どうすれば解決できますか?
修正する:
オプションを追加した後-i
(学習者の回答のおかげで)、すべてのファイルがリストされている理由を確認できました。権限がコピーされないようです。すべてのフォルダ(およびファイル)には次のものが含まれます。
.d...p... my folder/
権限をコピーするオプションを追加しましたが、まだ運-p
が-o
ありません。-g
どんなアイデアがありますか?
答え1
-i
を表すrsyncオプションがあります--itemize-changes
。 rsyncのマニュアルにはそうなるだろうと述べています。「すべての更新に対する変更要約の出力」。
どのファイルとディレクトリが変更され、ソースディレクトリからターゲットディレクトリに移動されたかが表示されます。また、rsyncがファイルが変更されたと仮定する理由も示しています。たとえば、ソースファイルがターゲットファイルとサイズが異なる、タイムスタンプが異なる、または権限が異なるためです。
ここに例があります。私が作ったdirectory1
とdirectory2
。どちらにも名前付きファイルが含まれており、両方のファイルの中textfile
に文字「A」しかありません。ただし、ディレクトリ1のファイルはタイムスタンプが異なります。したがって、実行結果はrsync -ahzi directory1/ directory2/
次のようになります。
.d..t...... ./
>f..t...... textfile
>
ファイルが異なるため、ローカルの宛先に転送されたことを意味します(たとえば、ファイルを同期すると、そのファイルがリモートの宛先になるために表示されます192.168.1.100:/some/directory
)。 「ファイル」を意味し、ファイルに異なるタイムスタンプがあることを意味します。<
f
t
さて、ファイルの内容も変更されたらどうなりますか?私は「AB」文字を含むようにディレクトリ1のテキストファイルを編集しました。その後、以下を実行しましたrsync -ahzi directory1/ directory2/
。
.d..t...... ./
>f.st...... textfile
>
宛先が異なるため、ファイルが宛先に転送されたことを示します。これはs
ファイルのサイズが異なり、t
タイムスタンプも異なることを示します。
この出力で見ることができる他の「フラグ」は次のとおりです。
p - Permission are different
o - Owner is different
g - Group is different
a - The ACL information changed
私のソースには、これらすべてのフラグの説明があります。http://andreafrancia.blogspot.com/2010/03/as-you-may-know-rsyncs-delete-options.html
答え2
Thomasが指摘したように、問題はハードドライブのフォーマットに関連しています(提案されたソリューションは--chmod
私には効果がありませんでした)。私の外付けハードドライブはExFAT
、私のMacのハードドライブはですMac OS Extended
。だから私はGoogleを少しして解決策を見つけました。ここ >>
a:rlptgoDスイッチをアーカイブして交換します(再帰ディレクトリ、シンボリックリンクの維持、権限の維持、変更時間の維持、グループの維持、所有者の維持、デバイスファイルの維持)。
問題は、Linux exFATが権限関連スイッチ(pgo)をうまく処理できないことです。したがって、回避策はp、g、oを削除し、次のスイッチでrsyncを実行することです。
だから私の質問に対する答えは次のとおりです。
rsync -rltDvn --delete ~/Pictures/ "/Volumes/My Passport/Mac Backups/Pictures"
これで、変更されたファイルのみを表示できます。みんなの助けに感謝します。
答え3
考えられる問題は、タイムスタンプの粒度が外部ドライブとは異なり、rsyncがこれを考慮していないことです。次の方法を使用してこの問題を解決できます。--modify-window
オプション:
--modify-window
2つのタイムスタンプを比較すると、rsyncはタイムスタンプが変更ウィンドウの値内にある場合、そのタイムスタンプを同じものとして扱います。この値は通常ゼロですが、場合によってはより大きな値に設定すると便利です。特に、このオプションは、1秒の解像度で時間を表現できないFATファイルシステムに転送する場合に便利です。
修正された質問を反映する:調べるrsync のマニュアルページビットの詳細--itemize-changes
。権限のみを解決する必要があります。最も使いやすい外付けドライブはvfat:Microsoft形式であり、Unixファイルのアクセス許可は一致しません。グループそしてその他しかし、ほとんどのアプリケーションは実行権限をUnixと一致するようにマッピングしようとしません。この場合、あなたはできない権限をコピーします。次のオプションを使用してこの問題を解決できます(ターゲットから取得する権限を--chmod
示すマスクを提供)。rsync
--chmod
このオプションは、rsyncに、転送中のファイルの権限に1つ以上のカンマ区切りの「chmod」文字列を適用するように指示します。 結果の値は、送信者がファイルに提供した権限で処理されます。つまり、このオプションは、次の場合、既存のファイルには影響しないように見えます。--パーマ有効になっていません。