Вопрос или проблема
Я пытаюсь использовать rsync
для копирования папки и связанных с ней подпапок на новый жесткий диск, подключенный по USB:
rsync -av /media/foo/EBU402/hdd011 /media/foo/EBU601/hdd011
Некоторые из подпапок и файлов копируются правильно, но есть подпапки, которые создаются, но не заполняются (они не содержат файлов):
/media/foo/EBU402/ps.all/ps/opx.ps/(129 папок) <-- все папки пустые
Схематично:
media -- foo -- EBU402 -- ps.all -- opx.ps +-- Folder001 <-- все папки пустые
+-- Folder002
+-- Folder003
.
.
.
+-- Folder129
fsck
на обоих дисках сообщает, что они чистые.
Все файлы и папки имеют права, установленные на 0777
.
rsync
не возвращает ошибок.
Внешний диск подключен к USB-центру с питанием.
Количество файлов, подлежащих копированию, менее 10,000.
Я использую Ubuntu 22.04.5 LTS.
Я в недоумении. Это также очень беспокоит, так как rsync
для резервного диска ненадежен.
—- Заметка добавлена 2024-1013T1028:
Я запустил rsync с флагом –stats. Вывод показан ниже. Подкаталоги, которые не были заполнены, теперь (очевидно) правильно заполнены. Я в замешательстве. Теперь мне нужно каким-то образом проверить, что файлы были скопированы, не проверяя существование 4 миллионов файлов.
Количество файлов: 4,021,174 (обычных: 3,823,909, папок: 197,241, ссылок: 24)
Количество созданных файлов: 4,021,174 (обычных: 3,823,909, папок: 197,241, ссылок: 24)
Количество удаленных файлов: 0
Количество переданных обычных файлов: 3,823,909
Общий размер файлов: 1,676,522,777,391 байт
Общий переданный размер файлов: 1,676,522,776,981 байт
Литеральные данные: 1,676,522,776,981 байт
Совпадающие данные: 0 байт
Размер списка файлов: 175,014,901
Время генерации списка файлов: 0.001 секунды
Время передачи списка файлов: 0.000 секунд
Общее количество переданных байтов: 1,677,214,012,251
Общее количество полученных байтов: 74,008,114
отправлено 1,677,214,012,251 байт получено 74,008,114 байт 144,127,864.26 байт/сек
общий размер 1,676,522,777,391 ускорение 1.00
Ответ или решение
Проблема с копированием файлов с помощью rsync: причины и решения
Вы столкнулись с ситуацией, когда команда rsync
создает структуру директории, но не копирует связанный контент. Это может вызывать серьезные опасения по поводу надежности метода резервного копирования, особенно когда речь идет о значительном количестве файлов. Давайте рассмотрим возможные причины данной проблемы и способы их разрешения.
Анализ команды rsync
Вы ввели следующую команду:
rsync -av /media/foo/EBU402/hdd011 /media/foo/EBU601/hdd011
-a
означает "архивный" режим, который сохраняет символические ссылки, права доступа, временные метки и другие атрибуты.-v
— это режим подробного вывода, который предоставляет информацию о процессе передачи.
Ваши ожидаемые результаты включают копирование всех подкаталогов и файлов из директории hdd011
. Однако вы столкнулись с тем, что некоторые подкаталоги созданы, но останутся пустыми.
Возможные причины проблемы
-
Проблемы с разделом файловой системы: Несмотря на то, что
fsck
не обнаружил ошибок, возможно, существуют проблемы с производительностью. Однако в большинстве случаевfsck
выявляет проблемы, которые могут влиять на работоспособность файловой системы. -
Ограничения USB-устройств: Иногда проблемы с подключением через USB, особенно если используется хаб, могут приводить к сбоям в передаче данных. Если возможно, попробуйте подключить внешний диск напрямую к компьютеру и повторить инструкцию.
-
Проблемы с разрешениями: Вы указали, что на файлы установлены права доступа
0777
. Тем не менее, убедитесь, что ваша учетная запись имеет все необходимые права для доступа к данным как на исходном, так и на целевом диске. -
Объем данных: Вы переносили более 1.6 ТБ данных. На некоторых системах могут возникать ограничения по объему передаваемой информации за один раз, особенно при наличии большого количества файлов.
-
Кэши и потери данных: В некоторых случаях системные кэши могут влиять на отображение статуса файлов до завершения процесса копирования.
Решения и рекомендации
-
Использование дополнительных флагов: Попробуйте использовать флаг
--progress
, чтобы отслеживать процесс копирования в реальном времени. Это поможет вам увидеть, как именноrsync
обрабатывает каждую директорию и файл. -
Запуск с параметром
--stats
: Вы уже использовали этот параметр. Это один из лучших способов получить подробные сведения о процессе передачи. Такой отчет может оправдать ваши опасения, так как вы сможете видеть, сколько файлов было создано и сколько данных было передано. -
Проверка целостности данных: Для подтверждения успешного копирования вы можете использовать команду
diff
илиrsync
с флагом-n
(симуляция), чтобы сравнить исходные и целевые директории без фактической передачи данных. Пример:rsync -avn /media/foo/EBU402/hdd011 /media/foo/EBU601/hdd011
-
Ручная проверка содержимого: Если вы действительно хотите убедиться в целостности данных, возможно, будет разумно использовать скриптовое решение, так как у вас есть 4 миллиона файлов. Вы можете создать список файлов в обеих директориях и сравнить их.
-
Использование других инструментов резервного копирования: Если этот процесс вызывает у вас чрезмерное беспокойство, подумайте о том, чтобы попробовать альтернативные инструменты резервного копирования, такие как
tar
,cp
, или специализированные программы для резервного копирования, которые могут предложить более интуитивные интерфейсы и дополнительные функции.
Заключение
Проблема с rsync
может возникнуть по множеству причин, но с помощью вышеперечисленных шагов вы сможете диагностировать и устранить возможные неисправности. Убедитесь, что ваше хранилище в порядке и внимательно следите за разрешениями и производительностью. Если вы будете придерживаться этих советов, это даст вам уверенность в том, что ваши данные будут надежно скопированы и сохранены на новом устройстве.