rsync: Кажется, неправильно проверяет размер, дату/время или контрольную сумму

Вопрос или проблема

Я чувствую, что rsync работает неправильно для меня, и я не уверен, что именно я делаю не так.

Вот ситуация. У меня есть две локальные директории: /home и /home2. Я пытаюсь понять rsync, поэтому использую эти локальные директории, прежде чем делать коммиты на серверах. Директории /home2 и /home были созданы в какой-то момент в прошлом, но в них много одних и тех же файлов — некоторые новее других в этих двух директориях.

У меня есть только скрытые файлы в обеих директориях для пользователя.

## Только скрытые файлы
[root@prod-srvr2 home2] $  ll /home2/newusr
total 0

## Список всех скрытых файлов в /home2/newusr
[root@prod-srvr2 home2] $  ls -lad /home2/newusr/.*
drwx------.  3 newusr newusr 114 Oct 14 08:23 /home2/newusr/.
drwxr-xr-x. 17 root   root   234 Oct  4 15:20 /home2/newusr/..
-rw-------   1 newusr newusr  87 Oct  3 19:00 /home2/newusr/.bash_history
-rw-r--r--.  1 newusr newusr  18 Mar 30  2022 /home2/newusr/.bash_logout
-rw-r--r--.  1 newusr newusr 141 Mar 30  2022 /home2/newusr/.bash_profile
-rw-r--r--.  1 newusr newusr 376 Mar 30  2022 /home2/newusr/.bashrc
drwx------.  2 newusr newusr  29 Jan 15  2024 /home2/newusr/.ssh
-rw-------   1 newusr newusr 219 Oct 14 08:23 /home2/newusr/.Xauthority

## Список всех скрытых файлов в /home/newusr
[root@prod-srvr2 home2] $  ls -lad /home/newusr/.*
drwx------  4 newusr newusr 6144 Oct 28 09:56 /home/newusr/.
drwxr-xr-x 18 root   root   6144 Oct  4 15:20 /home/newusr/..
-rw-------  1 newusr newusr   97 Oct 25 19:00 /home/newusr/.bash_history
-rw-r--r--  1 newusr newusr   18 Mar 30  2022 /home/newusr/.bash_logout
-rw-r--r--  1 newusr newusr  141 Mar 30  2022 /home/newusr/.bash_profile
-rw-r--r--  1 newusr newusr  376 Mar 30  2022 /home/newusr/.bashrc
drwx------  3 newusr newusr 6144 Jun  4 20:47 /home/newusr/.dbus
drwx------  2 newusr newusr 6144 Jan 15  2024 /home/newusr/.ssh
-rw-------  1 newusr newusr  290 Oct 28 09:56 /home/newusr/.Xauthority

## rsync с проверкой контрольной суммы в режиме "сухой" - ** Неверно - файлы в /home новее и больше
[root@prod-srvr2 home2] $  rsync -Hvnaczh /home2/newusr/ /home/newusr
sending incremental file list
./
.Xauthority
.bash_history

отправлено 336 байт  получено 26 байт  724.00 байт/сек
общий размер 1.57K  ускорение 4.35 (РЕЖИМ СУХОЙ)

## Проверка размера и даты/времени в режиме "сухой" - ** Неверно - файлы в /home новее и больше
[root@prod-srvr2 home2] $  rsync -Hvnazh /home2/newusr/ /home/newusr
sending incremental file list
./
.Xauthority
.bash_history

отправлено 240 байт  получено 26 байт  532.00 байт/сек
общий размер 1.57K  ускорение 5.91 (РЕЖИМ СУХОЙ)

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

Спасибо за любую помощь, которую вы можете мне оказать.

Ответ или решение

rsync: Как правильно использовать параметры и диагностировать проблемы с синхронизацией файлов

Понимание работы утилиты rsync – это важный аспект для успешного взаимодействия с файлами на локальных и удаленных системах. В вашем случае наблюдаются проблемы с синхронизацией между каталогами /home и /home2, и хотя утилита кажется вам некорректно функционирующей, скорее всего, это связано с ошибочным использованием её параметров. Давайте разберем вашу ситуацию в деталях.

Описание проблемы

Вы выполнили команды rsync с различными параметрами, и результаты показали, что некоторые файлы из /home/newusr (файлы, которые, как вы отметили, более новые или более объемные) не передаются. При этом размеры передаваемых данных варьируются от одной команды к другой.

Возможные причины

  1. Некорректное использование опций:

    • Вы используете параметр -c, который заставляет rsync вычислять контрольные суммы для всех файлов. Это может существенно замедлить процесс и приведет к тому, что файлы не будут синхронизированы, если контрольные суммы совпадают, даже если размеры и даты отличаются.
    • Опция -n приводит к выполнению "сухого" запуска (dry run), что полезно для предварительной проверки, но не является окончательной проверкой.
  2. Различные параметры:

    • В вашем примере два раза выполнен rsync, но с изменением параметров: в одном случае используется -c, в другом — нет. Разные параметры могут приводить к разной обработке файлов, что и объясняет разницу в передаче данных.
  3. Проблемы с правами:

    • Убедитесь, что у вас достаточно прав на чтение файлов в /home/newusr и на запись в /home2/newusr. Если прав недостаточно, это может вызывать проблемы с синхронизацией.
  4. Конфликтующие изменения:

    • Если на файлы в /home/newusr были внесены изменения после последнего выполнения rsync, это также может помешать правильной синхронизации.

Рекомендации для решения проблемы

  1. Команда без контрольных сумм:
    Попробуйте выполнить rsync без параметра -c, чтобы проверить, не будут ли переданы файлы только на основе времени и размера:

    rsync -Havnazh /home2/newusr/ /home/newusr
  2. Тестирование с различными параметрами:
    Запустите rsync с параметром -u, который синхронизирует только более новые файлы:

    rsync -Havzu /home2/newusr/ /home/newusr
  3. Проверка прав:
    Убедитесь, что вывод команды ls -la показывает, что у вас есть все необходимые права доступа. Если необходимо, используйте chmod или chown, чтобы изменить права.

  4. Логирование:
    Включите детальное логирование, используя параметр -vv, чтобы увидеть более подробный вывод о том, что делает rsync:

    rsync -Havv /home2/newusr/ /home/newusr
  5. Сравнение с утилитами:
    Вы также можете использовать другие утилиты для сравнения файлов, такие как diff, чтобы явно увидеть различия между директориями:

    diff -r /home2/newusr/ /home/newusr/

Заключение

Убедитесь, что у вас есть четкое понимание параметров, которые вы используете с rsync. Ошибки в параметрах могут привести к неправильной синхронизации файлов, даже если программа сама по себе работает корректно. Сравните результаты с различными параметрами, проверьте права и используйте логирование для получения более подробной информации о процессе. Это не только улучшит ваши навыки работы с rsync, но и позволит избежать проблем в будущем.

Оцените материал
Добавить комментарий

Капча загружается...