rsync
は、どのファイルが変更され、どのファイルが変更されていないかをどのようにして知るのですか?データはファイルのどこかに記録されますか?
増分バックアップを行いたいのですが、最初にすべてのファイルが転送されます。
したがって、私の主な質問は、最初のファイルをFTP経由でアップロードし、rsync
経由ではない場合です。 Will rsync
は、これらの既存のファイルをスキップするか、最初の実行ですべてをアップロードします。
Rsyncには、何を見て何を宛先にコピーするかを制御するいくつかのフラグがあります。ほとんどの場合、「-a」フラグが使用されます。これは「アーカイブ」フラグです。これがおそらく必要なものです。 「-av」フラグを指定してrsyncを実行し、バックアップするデータに対して最初の実行を行わせます。次回の実行時には、ファイルのブロックチェックサムが実行され、既存のファイルで変更された部分のみがコピーされ、新しいファイルがコピーされ、存在しないファイルが削除されます。次の「-a」オプションセクションを確認します。
http://linux.die.net/man/1/rsync
最初の実行はBandWidthを集中的に使用し、次の実行はほとんどの場合プロセッサを集中的に使用しますが、最初の実行と比較して使用する帯域幅はほとんどありません。データセットに多くのチャーンがない限り。
Rsyncは、ソースまたは宛先ディレクトリでファイルを取得する方法を気にしません。フラグを追加して別のことをしない限り、2つのディレクトリ間で変更をコピーするだけです。
変更内容をログに記録する場合は、「-log-file」オプションを使用できます。全体として、このようなものはあなたが望むもののように聞こえます:
rsync -av --log-file=/var/log/rsync.log -e "ssh -l backup-user" backup-user@source-machine::module /nas01/backups
rsyncは「増分」を行わず、「差分」に似ています。 changes(以前の実行に関するある程度の知識があると想定)は転送されませんdifferencesを転送します(ソースとターゲットファイルを比較することにより)
プロセスの簡素化:
rsyncはデータをログに記録せず、ファイル変更のタイムスタンプをチェックしてからコンテンツをチェックします。最初にFTPでアップロードした場合は問題ありません。rsyncはすべてのデータを再送信するのではなく、すべてのコンテンツを通過してタイムスタンプを修正します。しかし、再び大きな送金はありません。
たぶん私は知識が豊富ですが、増分バックアップは最初に完全バックアップがあることを意味します。次に、そのバックアップ以降に変更されたファイルのバックアップがあります。次に、前のバックアップ以降に変更されたバックアップの別のバックアップがあるため、完全バックアップと、それ以降のすべての増分バックアップが必要です。
したがって、アーカイブモードを使用するだけでは、増分バックアップではありません。 ファイルが変更される前にファイルを取得するために時間を遡ることができないことを意味するため、違いは重要だと思います。
真の増分バックアップを実行する場合は、--backup-dir
などのオプションを使用します。例があります here 。
本当の質問が「rsync経由で増分バックアップを実行したい」である場合、いくつかのオプションが利用可能です。私はダーヴィッシュを使います:
スナップショットが得られるため、復元は簡単です。ハードリンクを使用して完全なスナップショットを提供すると同時に、ファイルが同一である場所のスペースを節約します。内部的には、rsyncの--link-destオプションを使用します。
--link-dest=DIR hardlink to files in DIR when unchanged
Rsyncを使用しているため、変更が非常に小さいネットワーク帯域幅(したがって時間)も節約できます。 tarして、ローカルに作成されたdirvishイメージを最初にスニーカーネットする場合も、ファイルが多く、低速リンクがある場合に機能します。