Команда rsync каждый раз выполняется слишком долго

Вы можете использовать подстановку команд

var2=$(echo "$var1" | cut -d '/' -f 1)

Однако в этом случае было бы лучше использовать подстановку параметров оболочки напрямую:

$ var2=${var1%/*}
$ echo "$var2"
first

(удаляет самую короткую конечную подстроку, соответствующую/*

.
$ var3=${var1#*/}
$ echo "$var3"
second

(удаляет кратчайшую начальную подстроку, соответствующую */), если она вам понадобится.

1
12.06.2020, 17:29
2 ответа

Если это занимает слишком много времени, это может быть связано с тем, что rsyncне может применить свой quick check, который зависит только от размера и времени.

Не разные файловые системы хранят время по-разному, это означает, что то, что rsyncсохраняет, не совпадает с тем, что оно позже извлекает.

Когда это происходит, rsyncне может применить быструю проверку и обращается к проверке контрольной суммы, которая заставляет его читать весь файл, чтобы убедиться, что это один и тот же файл, тем самым замедляя всю передачу.

ls -l --time-style=full-iso original_file
ls -l --time-style=full-iso already_synced_file

Сообщает вам, если это так. Если это так, у вас есть по крайней мере два варианта, в зависимости от того, насколько они далеки:

  • Добавить опцию --size-only, чтобы проверять только размер, а не время.
  • Используйте параметр --modify-window, чтобы принять это во внимание.
3
18.03.2021, 23:28

Следующее, кажется, заставляет мою синхронизацию фотографий работать очень быстро -три секунды вместо трех минут. Я избавился от сокращений, чтобы было понятно, что есть что:

time rsync --dry-run --verbose --compress --update --ignore-existing --recursive --group --times --progress --omit-dir-times --no-perms  --modify-window=120   from/here/  /to/here/

Избавьтесь от времени, когда его больше не нужно измерять, избавьтесь от пробного прогона, когда кажется, что он делает то, для чего предназначен, и ничему не вредит.

Заметил при сборке было довольно много акселераторов и тормозов, при этом ситуации в команде и rsync ни разу не жаловались. Например, -a— это -rlptgoD, p означает --perms, и какое-то время у меня там также было --no-perms.

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

1
18.03.2021, 23:28

Теги

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