この質問は私の以前に基づいています。質問。両方のコンピュータ(AとB)は同じファイル構造を持っています。ファイルは同じですが、タイムスタンプが異なります(Aの時間は正確で、Bの時間は間違っています)。上記の質問はこの問題に対処しています。
しかし、私は次のトリックを試しました。これにより、マシンBの構造内のすべてのファイルの変更時間が1.1.1970に変更されました。
awk 'BEGIN{FS="\t"}{print "touch --no-create --no-dereference -m -t \"197001010000\" \"" $1 "\""}' files.txt > commands2.sh
parallel < "commands2.sh"
ファイルはfiles.txt
コンピュータAで作成され、次の行が含まれています。ここでファイルの絶対パスはで、変更日はとして出力"$1"\t"$2"
されます。$1
$2
stat -c %y $1
stat
ファイルの日付が実際に1970年に設定されていることを確認しました。テストにKrusaderディレクトリ同期を使用し、KrusaderはAからBにデータを正しくコピーすることにしました。
次にrsync
最初にテストしますA -> B
。
rsync -azEX --dry-run --itemize-changes --info=BACKUP1,DEL1,NAME1,REMOVE1 --delete --exclude-from=/home/user/.rsync-transport-in-ssh.rules /home/user user@remote:/home/user/
出力が空です。それからB -> A
rsync -azEX --dry-run --itemize-changes --info=BACKUP1,DEL1,NAME1,REMOVE1 --delete --exclude-from=/home/user/.rsync-transport-in-ssh.rules user@remote:/home/user/ /home/user
出力には行わなければならない転送がいっぱいですが、Bのすべてのデータは1970年のものなので、これは完全に間違っています。
したがって、質問は2つあります。 1)rsync
コピーする場所を決定するために実際に使用されるものは何ですか? 2)私が望む方法で動作を実行する方法はありますか?
この日付はrsync
更新されておらず、B
ほとんどの場合、この日付はA
。
答え1
- コピーする場所を決定するために、rsyncは正確に何を使用しますか?
- 私が望むように行動を強制する方法はありますか?
rsync
いくつかの方法を使用してファイルの内容をコピーするかどうかを決定します。例えば、- ファイルサイズとタイムスタンプの比較
- コンテンツチェックサム
- ソースとターゲットの場所(つまり、同じファイルシステム上にあるか別のサーバー上にあるか)
rsync
ファイルメタデータ(権限、所有権、タイムスタンプなどのファイルに関するデータ)転送とファイルコンテンツの間には違いがあります。また、両方のシステムが関連している場合は、rsync
チェックサムを使用してファイルの内容のどの部分が変更されたかを確認できるため、ファイル全体ではなく変更された部分のみを転送できます。
リモートサーバーにファイルをコピーします。これで、ローカルコピーを変更して追加バイトスタート。ファイルをコピーするために使用され、rsync
単一のデータブロックにブロックチェックサムストリームを転送することがわかります。ソースとターゲットのアップロード速度が1Mbit / sに制限され、インスタンスの1つの前にバイトを追加する600MBファイルの例では、ソースファイルの「コピー」には平均有効速度415Mbitに対して20秒かかりました。 /S。
- 回答者前の質問