Làm thế nào để tùy chọn --fuzzy cho rsync hoạt động?


9

Làm thế nào để rsync --fuzzylàm việc? Tôi không nhận được kết quả như mong đợi.

Từ hướng dẫn:

Tùy chọn này cho rsync biết rằng nó sẽ tìm tệp cơ sở cho bất kỳ tệp đích nào bị thiếu. Thuật toán hiện tại tìm trong cùng thư mục với tệp đích cho một tệp có kích thước và thời gian sửa đổi giống hệt nhau hoặc tệp có tên tương tự. Nếu được tìm thấy, rsync sử dụng tệp cơ sở mờ để cố gắng tăng tốc độ truyền.

Nếu tùy chọn được lặp lại, quá trình quét mờ cũng sẽ được thực hiện trong bất kỳ thư mục đích thay thế phù hợp nào được chỉ định qua --compare-Dest, --copy-Dest hoặc --link-Dest.

Lưu ý rằng việc sử dụng tùy chọn --delete có thể loại bỏ mọi tệp đối sánh mờ tiềm năng, do đó, hãy sử dụng --delete-after hoặc chỉ định một số loại trừ tên tệp nếu bạn cần ngăn chặn điều này.

Vì vậy, tôi hy vọng tập lệnh shell sau sẽ đổi tên tệp đích / a1 thành đích / a2 trong lần chạy rsync thứ hai. Tuy nhiên như tôi giải thích đầu ra, đây không phải là điều đang xảy ra ( 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

Đầu ra:

├── 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

Đầu ra của 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.

Làm thế nào để rsync --fuzzylàm việc?

Tại sao tôi không nhận được kết quả mà tôi mong đợi?

Câu trả lời:


3

Bạn đang sử dụng rsyncđể sao chép tệp giữa hai cây tệp cục bộ. Thuật toán gia tăng và tất cả các tối ưu hóa liên quan của nó --fuzzy, như bị bỏ qua trong chế độ này.

Lặp lại thử nghiệm của bạn với một tệp cục bộ được sao chép vào một máy chủ từ xa (hoặc từ xa đến cục bộ; nó không thành vấn đề) và bạn sẽ thấy nó hoạt động như mong đợi.

Ví dụ, sửa đổi tập lệnh của bạn ở cả hai nơi như $(pwd)/destinationđược thay đổi thành localhost:$(pwd)/destination. Nó không thanh lịch nhưng nó sẽ đủ.

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

Kết quả kịch bản từ lần thứ hai 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.