Я пытаюсь добиться следующего:
Чтобы проверить, правильно ли я синхронизировал все данные со старого NAS на новый, я выполняю:
rsync --rltD -hvinu /path/to/old/NAS/ /path/to/new/NAS
Теперь: -n дает мне пробный прогон, -ia список изменений, а -u должен пропускать все файлы, более новые на новом NAS (что мне нужно, поскольку на новом NAS уже есть обновления — люди уже работают с ним).
Приведенная выше команда выдает мне список, содержащий следующее для нескольких каталогов:
.d..t
что согласно man-странице означает, что передача не произойдет, но атрибуты (например, время) будут обновлены в цели.
Проверив затронутый каталог, я вижу, что каталог в цели НОВЕ, чем в источнике.
Так что я бы
- ожидайте, что вы даже не увидите его в выводе rsync - поскольку его следовало бы пропустить,
- эта временная метка не должна обновляться. -Вы должны об этом позаботиться.
Есть ли здесь профессионал rsync, который может объяснить? Что я не понимаю?
Кстати: Это реализация rsync на Qnap NAS (источник) и Synology NAS (цель).
ОБНОВЛЕНИЕ 1:
Похоже, что --update применяется только к файлам, а не к каталогам. rsync делает то, что и должен: сравнивает размер и метку времени последнего изменения и обновляет метку времени в месте назначения до метки в источнике (которая старше).
Я не нашел опции для применения --update к каталогам - однако есть --omit-dir-times, которая будет игнорировать временные метки в каталогах. Применение этой опции также приведет к игнорированию новых каталогов в источнике. Таким образом, добавленный файл в источнике будет синхронизирован с местом назначения, но соответствующее изменение времени его родительского каталога не будет синхронизировано. Я не могу себе представить, чтобы это было ошибкой/недостатком в rsync - должно быть, я что-то здесь упускаю?