Вопрос или проблема
здесь проблема с rsync:
Я пытаюсь синхронизировать папку A с сервера A с папкой B на сервере B (с сервера B)
Для этого я создал специального пользователя/ключевой файл/ssh и т.д….
Так что моя проблема в том, что некоторые файлы синхронизируются, а некоторые нет (одинаковая собственность, папка,…)
Я пробовал несколько опций:
rsync -az --stats -e "ssh -p 1980 -i /root/key/keyPraUser" [email protected]:/home/mnt/uploads/ /mnt/uploads/
sudo rsync -az --stats -e "ssh -p 1980 -i /root/key/keyPraUser" [email protected]:/home/mnt/uploads/ /mnt/uploadsBNP/
rsync -rltgoDv --stats -e "ssh -p 1980 -i /root/key/keyPraUser" [email protected]:/home/mnt/uploads/ /mnt/uploadsBNP/
rsync -rtv --force --stats -e "ssh -p 1980 -i /root/key/keyPraUser" [email protected]:/home/mnt/uploads/ /mnt/uploadsBNP/
С сервера A, к файлам:
файл AF1 :
stat 50a3c8cb9aeb88f4846f3c5dd6c4d162f43199ae1728664723.7z
Файл: 50a3c8cb9aeb88f4846f3c5dd6c4d162f43199ae1728664723.7z
Размер: 2438228 Блоки: 4768 IO Блок: 4096 обычный файл
Устройство: 803h/2051d Идентификатор: 49551490 Ссылки: 1
Доступ: (0644/-rw-r--r--) Uid: ( 33/www-data) Gid: ( 33/www-data)
Доступ: 2024-10-16 10:03:29.647959893 +0200
Изменение: 2024-10-11 18:38:50.042744204 +0200
Смена: 2024-10-11 18:38:50.042744204 +0200
Рождение: -
Файл AF2 :
stat fcf7f81c1971c46c74fb3548480d0deafe2acfc01700573438.7z
Файл: fcf7f81c1971c46c74fb3548480d0deafe2acfc01700573438.7z
Размер: 28602 Блоки: 56 IO Блок: 4096 обычный файл
Устройство: 803h/2051d Идентификатор: 49056334 Ссылки: 1
Доступ: (0644/-rw-r--r--) Uid: ( 33/www-data) Gid: ( 33/www-data)
Доступ: 2024-10-16 10:50:18.573666612 +0200
Изменение: 2024-10-16 10:50:04.325538885 +0200
Смена: 2024-10-16 10:50:04.325538885 +0200
Рождение: -
Когда я запускаю команду rsync, получаю это сообщение:
rsync: send_files failed to open "/home/mnt/uploads/ac/190/fcf7f81c1971c46c74fb3548480d0deafe2acfc01700573438.7z": Операция не разрешена (1)
На сервере B, когда я проверяю, были ли скопированы оба файла, вот результат :
(AF1)
stat 50a3c8cb9aeb88f4846f3c5dd6c4d162f43199ae1728664723.7z
Файл: 50a3c8cb9aeb88f4846f3c5dd6c4d162f43199ae1728664723.7z
Размер: 2438228 Блоки: 4768 IO Блок: 4096 обычный файл
Устройство: 903h/2307d Идентификатор: 109445672 Ссылки: 1
Доступ: (0664/-rw-rw-r--) Uid: ( 33/www-data) Gid: ( 1002/dev_user)
Доступ: 2024-10-16 11:18:57.901283844 +0200
Изменение: 2024-10-11 18:38:50.042744204 +0200
Смена: 2024-10-16 11:30:08.254275812 +0200
Рождение: -
(AF2)
stat fcf7f81c1971c46c74fb3548480d0deafe2acfc01700573438.7z
stat: невозможно получить информацию о 'fcf7f81c1971c46c74fb3548480d0deafe2acfc01700573438.7z': Нет такого файла или каталога
Более подробная информация о серверах:
сервер A: Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-176-generic x86_64)
сервер B: Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-156-generic x86_64)
Если кто-то имеет представление о таком поведении, заранее спасибо
Ответ или решение
Проблема с синхронизацией файлов с помощью rsync: некоторые файлы не копируются
Использование утилиты rsync
может быть весьма эффективным для синхронизации файлов между серверами. Однако, как показывает описанная вами ситуация, иногда могут возникнуть проблемы, в результате которых некоторые файлы не копируются должным образом. Ниже приведено подробное объяснение возникшей проблемы, возможные причины ее появления и рекомендации по ее устранению.
Описание проблемы
Вы пытаетесь синхронизировать содержимое папки A
с сервера A
в папку B
на сервере B
с использованием команды rsync
. Однако, как вы отметили, не все файлы копируются: некоторые файлы синхронизированы, в то время как другие отсутствуют. В частности, вы получаете сообщение об ошибке:
rsync: send_files failed to open "/home/mnt/uploads/ac/190/fcf7f81c1971c46c74fb3548480d0deafe2acfc01700573438.7z": Operation not permitted (1)
Кроме того, файл AF2
не был скопирован на сервер B
, как подтверждает сообщение stat: cannot stat 'fcf7f81c1971c46c74fb3548480d0deafe2acfc01700573438.7z': No such file or directory
.
Возможные причины проблемы
-
Проблемы с правами доступа: Поскольку сырые данные показывают, что оба файла имеют одинаковые права доступа на сервере
A
, может возникнуть ситуация, когда пользователь, под которым вы запускаетеrsync
, не имеет соответствующих прав на чтение этих файлов. Проверьте права доступа к файлам и директориям на сервереA
. -
Неправильные параметры rsync: Некоторые ключи
rsync
, такие как-a
(архивный режим), могут вызывать проблемы с синхронизацией, если целевой сервер имеет ограничения на права доступа или конфиденциальность. Попробуйте использовать параметры без ключа-a
для проверки, будет ли это работать. -
Файлы, открытые другим процессом: Если файл используется каким-либо другим процессом, это может препятствовать его копированию. Убедитесь, что файлы не открыты или не обрабатываются другим приложением во время выполнения команды
rsync
. -
Различия в файловых системах: Разные файловые системы могут иметь разные ограничения. Убедитесь, что файловые системы на обоих серверах поддерживают необходимые для ваших файлов атрибуты.
-
Проблемы с путями: Убедитесь, что вы передаете правильные пути к файлам и директориям для синхронизации. Возможно, в пути к целевой директории есть ошибки.
Рекомендации по верификации и исправлению
-
Проверьте права доступа: Используйте команду
ls -l
на сервереA
и убедитесь, что у пользователя, под которым запущенrsync
, есть права доступа на чтение файлов. -
Тестирование с ограничениями: Попробуйте выполнить rsync с меньшим набором параметров:
rsync -r --verbose --progress -e "ssh -p 1980 -i /root/key/keyPraUser" user@server_A:/home/mnt/uploads/ /mnt/uploads/
-
Проверка состояния процессов: Убедитесь, что процесс, который может блокировать файлы, не работает. Вы можете использовать команду
lsof
для проверки. -
Логи rsync: Запустите команду rsync с дополнительным флагом
--log-file=имя_файла.log
, чтобы получить больше информации о процессе и потенциальных ошибках. -
Обновление систем и rsync: Убедитесь, что на обоих серверах установлены последние обновления. Иногда исправления или обновления пакетов могут устранить сценарии, вызывающие проблемы.
-
Проверка целевой директории: На сервере
B
убедитесь, что целевая папка не имеет ограничений по правам доступа и существует.
Заключение
Проблемы с rsync
могут возникать по ряду причин, начиная от прав доступа и заканчивая ограничениями файловых систем. Шаги по устранению неполадок, описанные выше, помогут вам диагностировать и решить проблему с отсутствующими файлами. Не забудьте делать резервные копии перед проведением операции синхронизации, чтобы избежать потери данных.