rsyncの--fuzzyオプションはどのように機能しますか?


9

どのように機能しrsync --fuzzyますか?期待した結果が得られません。

マニュアルから:

このオプションは、欠落している宛先ファイルの基本ファイルを探す必要があることをrsyncに指示します。現在のアルゴリズムは、宛先ファイルと同じディレクトリで、サイズと変更時刻が同じであるファイル、または同様の名前のファイルを探します。見つかった場合、rsyncはファジーベースファイルを使用して、転送の高速化を試みます。

オプションが繰り返される場合、ファジースキャンは、-compare-dest、-copy-dest、または--link-destを介して指定された、一致する代替宛先ディレクトリでも実行されます。

--deleteオプションを使用すると、可能性のあるあいまい一致ファイルが削除される可能性があるため、-delete-afterを使用するか、これを防ぐ必要がある場合は、ファイル名の除外を指定してください。

したがって、次のシェルスクリプトは、2回目のrsync実行でファイルdestination / a1をdestination / a2に名前変更することを期待しています。ただし、出力を解釈すると、これは何が起こっているのかではありません(Matched data: 0 bytes)。

#! /usr/bin/env bash
set -e

cd $(mktemp -d)
mkdir source destination
cat /dev/urandom | head --bytes=1M > source/a1
rsync --recursive --times $(pwd)/source/ $(pwd)/destination/
tree
mv source/a1 source/a2
rsync \
    --verbose \
    --recursive \
    --times \
    --delete \
    --delete-after \
    --fuzzy \
    --human-readable \
    --itemize-changes \
    --stats \
    $(pwd)/source/ \
    $(pwd)/destination/
tree
rm -r source destination

出力:

├── destination
│   └── a1
└── source
    └── a1

2 directories, 2 files
building file list ... done
>f+++++++++ a2
*deleting   a1

Number of files: 2 (reg: 1, dir: 1)
Number of created files: 1 (reg: 1)
Number of deleted files: 1 (reg: 1)
Number of regular files transferred: 1
Total file size: 1.05M bytes
Total transferred file size: 1.05M bytes
Literal data: 1.05M bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 1.05M
Total bytes received: 34

sent 1.05M bytes  received 34 bytes  2.10M bytes/sec
total size is 1.05M  speedup is 1.00
.
├── destination
│   └── a2
└── source
    └── a2

2 directories, 2 files

の出力rsync --version

rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, prealloc

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

どのように機能しrsync --fuzzyますか?

なぜ期待した結果が得られないのですか?

回答:


3

rsync2つのローカルファイルツリー間でファイルをコピーするために使用しています。--fuzzyこのモードでは、インクリメンタルアルゴリズムとそれに関連するすべての最適化は無視されます。

ローカルファイルをリモートサーバーにコピーして(またはリモートからローカルに、重要ではありません)テストを繰り返します。期待どおりに動作することがわかります。

例として、に変更$(pwd)/destinationされるなど、両方の場所でスクリプトを変更しlocalhost:$(pwd)/destinationます。エレガントではありませんが、それで十分です。

# Set up PKI for localhost
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
ssh localhost id

2番目のスクリプトの結果rsync

building file list ... done
<f+++++++++ a2
*deleting   a1

Number of files: 2 (reg: 1, dir: 1)
Number of created files: 1 (reg: 1)
Number of deleted files: 1 (reg: 1)
Number of regular files transferred: 1
Total file size: 1.05M bytes
Total transferred file size: 1.05M bytes
Literal data: 0 bytes
Matched data: 1.05M bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 4.20K
Total bytes received: 6.18K

sent 4.20K bytes  received 6.18K bytes  20.75K bytes/sec
total size is 1.05M  speedup is 101.09
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.