Я бы рекомендовал держаться подальше от имен динамических переменных. Вы можете создать «составной» ключ массива, чтобы сделать его простым
.# 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)]
Когда и источник, и место назначения являются «локальными» путями, для вычисления контрольной суммы уже необходимо считать обе стороны. Нет вызова SMB для запроса контрольной суммы, поэтому нет способа уменьшить количество операций ввода-вывода.
Одна сторона передачи должна быть удаленной, чтобы избежать операций ввода-вывода. На другом конце не обязательно должен быть демон, но стандартное соединение SSH также будет работать.
$ rsync /localpath /otherlocalpath # Both sides read. No checksum comparison
$ rsync /localpath server:/remotepath # Destination remote
$ rsync server:/remotepath /localpath # Source remote