ローカルとサーバーにファイルがあります。まず、rsync
「ドライラン(dry-run)」モードで実行して、ファイル間にいくつかの違いがあることを確認しました。
$ rsync -aP --dry-run [email protected]:/home/dir .
[email protected]'s password:
receiving incremental file list
dir/myfile.txt
dir/myfile.txt
これは明らかにファイルが更新されるため、ファイルが異なることを意味します。その後、以下を使用して同じファイルを確認しましたdiff
。
$ ssh [email protected] 'cat /home/dir/myfile.txt' | diff --report-identical-files - dir/myfile.txt
[email protected]'s password:
Files - and dir/myfile.txt are identical
したがって、明らかにこれらのファイルは同じです。
このファイルが更新されるのはなぜrsync
ですか?コマンドラインで理由をどのように確認できますか?
答え1
rsync
変更レポート
- 権限の違い
- タイムスタンプの違い
- コンテンツ(およびファイルサイズ)の違い
@roaimaはコメントから選択できると指摘しました。rsync のマニュアルページ:
-i, --itemize-changes output a change-summary for all updates
あなた可能要約が簡潔で(私が持っているバージョンでは)報告するだけでしたが、役に立ちました。タイプ(ファイル、リンク、ディレクトリ)と名前。以下は、Debian 7およびテストシステムでrsync 3.0.9-4および3.1.1-3を使用した結果です。
cd+++++++++ backup-invisible-island/
>f+++++++++ backup-invisible-island/.bash_history
cL+++++++++ backup-invisible-island/conf -> ../system/invisible-island.net/conf
cL+++++++++ backup-invisible-island/statistics -> ../system/invisible-island.net/statistics
cd+++++++++ backup-invisible-island/anon_ftp/
cL+++++++++ backup-invisible-island/anon_ftp/AdaCurses -> pub/AdaCurses
cL+++++++++ backup-invisible-island/anon_ftp/DEBS -> pub/DEBS
cL+++++++++ backup-invisible-island/anon_ftp/GIT -> pub/GIT
私が直接使用している場合は、ディレクトリタイムスタンプを変更することは比較的重要ではありません。私が使用するスクリプトは、次の内容だけを表示します。文書変更点:
答え2
Rsyncは、ファイルの内容を比較せずに同じと判断できない場合、ファイルを同期します。内容を確認せずにファイルが同じかどうかわからない場合は、ファイルを同期して違いがないことを認識できます。
デフォルトでは、2つのファイルのサイズとタイムスタンプが同じ場合、rsyncは2つのファイルが同じであると判断します(したがって、その内容の読み取りをスキップします)。
2つのファイルが同じ場合に異なると見なされる最も一般的な理由は、そのファイルが過去にコピーされており、コピーのタイムスタンプがコピーのタイムスタンプではなくコピーの日付であるため、内容は同じですが、タイムスタンプが異なるためです。元のファイル。たとえば、ファイルがscp
なく-p
、含まずにrsync
コピー-p
された、または-a
Webブラウザからダウンロードされた可能性があります。
タイムスタンプが異なる場合、rsyncはメタデータ()を同期するように指示したため、ファイルを同期する必要があります-a
。したがって、リストの内容はrsync -n
完全に理解されます。 rsyncが実行するアクションがあります。とにかく時間を同期するのは良い考えです。もう何もしないことがわかり、rsyncが将来実行されるように予約する唯一の方法だからです。
答え3
以前の回答に注意してください。同じファイルが変更されたことを繰り返し報告するrsyncを見つけると、タイムスタンプの問題である可能性が高くなります。一部のファイルシステム(特にFAT)は、より正確なタイムスタンプを保存しないため、rsyncはそれを設定できない可能性があります。異なるファイルシステムは同じタイムスタンプを持ちます。
答え4
まず、理由を調べてください。実行し$ls -lau
、権限とタイムスタンプの違いを確認してください。異なる場合は問題になり、-p
コピー権限を渡して-t
コピーにタイムスタンプを使用する必要があります。
使用量で見ると、定期的にデータをバックアップしているようです。これを「タイムシフト」というプログラムが完璧にしてくれますが、残念ながらリモートバックアップを正式にサポートしていませんが、回避策については、この提案を確認してください。。