Для какого протокола требуется rsync, чтобы включить вычисление контрольной суммы через исходный и конечный серверы?

Я бы рекомендовал держаться подальше от имен динамических переменных. Вы можете создать «составной» ключ массива, чтобы сделать его простым

.
# setup
set variable1 PATH_xyz
set variable2 {3.5400 7.3200}

# store the data in an array named "data"
set data($variable1,modifyPt) $variable2

# extracting it
% puts $data($variable1,modifyPt)    ; # => 3.5400 7.3200

# print the array contents
parray data    ; # => data(PATH_xyz,modifyPt) = 3.5400 7.3200

Вы можете использовать словарь с именем динамической переменной, но извлечение данных из словаря выглядит немного странно:

# store an empty dictionary in the variable "PATH_xyz"
set $variable1 [dict create]

# `dict set` takes a variable *name*
dict set $variable1 modifyPt $variable2

# `dict get` takes a variable *value*
dict get [set $variable1] modifyPt       ; # => 3.5400 7.3200

Таким же неудобным образом можно использовать массивы:

array set $variable1 [list modifyPt $variable2]
parray $variable1                    ; # => PATH_xyz(modifyPt) = 3.5400 7.3200
puts [set ${variable1}(modifyPt)]    ; # => 3.5400 7.3200

или поистине ужасное

puts [subst -nobackslashes -nocommands $${variable1}(modifyPt)]
0
06.10.2020, 20:57
1 ответ

Когда и источник, и место назначения являются «локальными» путями, для вычисления контрольной суммы уже необходимо считать обе стороны. Нет вызова SMB для запроса контрольной суммы, поэтому нет способа уменьшить количество операций ввода-вывода.

Одна сторона передачи должна быть удаленной, чтобы избежать операций ввода-вывода. На другом конце не обязательно должен быть демон, но стандартное соединение SSH также будет работать.

$ rsync /localpath /otherlocalpath     # Both sides read.  No checksum comparison
$ rsync /localpath server:/remotepath  # Destination remote
$ rsync server:/remotepath /localpath  # Source remote
2
18.03.2021, 22:59

Теги

Похожие вопросы