используя rsync для слияния папок резервного копирования

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

Я регулярно делаю резервные копии своей пользовательской папки с нескольких компьютерных систем. Мне не удалось найти пример того, как объединить все мои резервные папки в одну всеобъемлющую. Если кто-то знает, как написать скрипт для объединения нескольких старых резервных папок в одну всеобъемлющую, содержащую самые последние файлы, я был бы признателен.
Я пытался использовать rsync для объединения двух резервных копий пользовательских папок в одну всеобъемлющую папку со всеми последними директориями и файлами. Сначала я создал две директории на своем внешнем резервном диске, где находятся резервные копии; /merge и /tomerge. Папка, в которую я хотел объединить другие папки, была помещена в директорию /merge. Папка, которую я хотел в нее объединить, была помещена в директорию /tomerge. Обе пользовательские папки имеют одно и то же имя и в основном одинаковую структуру директорий. Если файл существует, его следует пропустить, если он не более новый. Я также хотел удалить исходные файлы, чтобы освободить место на диске после объединения. Я использовал следующую команду:
rsync -rauv –progress –remove-source-files tomerge/ merge/

Похоже, что было передано 244 файла, но количество файлов и размер папки для объединения не увеличились.
Я получил несколько ошибок (код 22 и 23). Ниже приведена последняя часть списка прогресса, но кажется, ничего не было передано.

vance/Documents/Manufactures Data/aavid/._62725_9.75X6X2.28_0.51-degC-per-Watt.PDF
4,096 100% 6.94kB/s 0:00:00 (xfr#239, ir-chk=1014/62203)
vance/Documents/Manufactures Data/aavid/.directory
61 100% 0.10kB/s 0:00:00 (xfr#240, ir-chk=1013/62203)
vance/Documents/Manufactures Data/aavid/62725_9.75X6X2.28_0.51-degC-per-Watt.PDF
84,241 100% 134.42kB/s 0:00:00 (xfr#241, ir-chk=1012/62203)
vance/Documents/Online Orders/1Prov_number.txt
73 100% 0.08kB/s 0:00:00 (xfr#242, ir-chk=1161/63023)
vance/Documents/Online Orders/1V_number~
54 100% 0.06kB/s 0:00:00 (xfr#243, ir-chk=1160/63023)
vance/Downloads/EPSON_DS-510/Image Scan vs Manual
413,103 100% 120.91MB/s 0:00:00 (xfr#244, ir-chk=1001/70705)
rsync: [generator] recv_generator: mkdir “/media/vance/UBUNTU/merge/vance/KiCad/Projects/1000W PFC ” failed: Invalid argument (22)
*** Пропускаем любые содержимое из этой неудачной директории ***
vance/KiCad/Projects/1000W PFC /

отправлено 22,157,872 байт получено 2,921,466 байт 477,701.68 байт/сек
общий размер 95,518,308,087 ускорение 3,808.65
ошибка rsync: некоторые файлы/атрибуты не были переданы (см. предыдущие ошибки) (код 23) в main.c(1338) [sender=3.2.7]

Где я ошибся?

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

Чтобы объединить папки резервных копий с использованием rsync, важно следовать определённым шагам и учесть возможные проблемы, такие как конфликты имён файлов и каталоги, которые могут иметь недопустимые символы. На основе вашего описания, вы столкнулись с несколькими вопросами, которые мы подробно рассмотрим.

Использование rsync для слияния папок резервных копий

Шаг 1: Понимание вашей команды

Вы использовали следующую команду:

rsync -rauv --progress --remove-source-files tomerge/ merge/
  • -r: рекурсивно копирует каталоги.
  • -a: архивный режим, который включает в себя множество опций для поддержания атрибутов файлов.
  • -u: обновляет файлы в целевом каталоге только если файлы в источнике более новые.
  • -v: выводит подробную информацию о процессе.
  • --progress: отображает прогресс копирования.
  • --remove-source-files: удаляет файлы источника после успешной передачи.

Основные причины возникновения ошибки 22 и 23:

  • Ошибка 22: Указывает на невозможность создания каталога из-за недопустимого имени или символов. В вашем случае каталог "1000W PFC " может содержать пробел в конце, что может быть причиной проблемы.
  • Ошибка 23: Сообщает о том, что некоторые файлы или атрибуты не были переданы из-за предыдущих ошибок.
Шаг 2: Как исправить проблему
  1. Проверьте имена каталогов:
    Убедитесь, что у вас нет пробелов или специальных символов в названиях каталогов, которые могут вызвать проблемы. Переименуйте каталог "1000W PFC " в что-то без пробелов, например, "1000W_PFC".

  2. Перепроверка команд:
    Попробуйте выполнить команду с флагом --ignore-errors, чтобы игнорировать ошибки и продолжать передачу:

    rsync -rauv --progress --remove-source-files --ignore-errors tomerge/ merge/

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

  3. Используйте --dry-run для тестирования:
    Перед действительным объединением папок используйте --dry-run, чтобы увидеть, какие файлы будут скопированы:

    rsync -rauv --dry-run tomerge/ merge/
  4. Убедитесь, что нет прав доступа:
    Убедитесь, что у вас есть необходимые права доступа к обоим каталогам, и что ни один файл не находится в использовании.

  5. Применение кода ошибки:
    Для дальнейшего анализа ошибок rsync, проверьте системные журналы, которые могут предоставлять дополнительную информацию о том, почему команда не сработала как планировалось.

Шаг 3: Альтернативный метод

Если проблемы с rsync продолжаются, вы можете попробовать воспользоваться командой cp или написать скрипт на Python, чтобы объединить директории, проверяя, что файл более новый:

cp -uR tomerge/* merge/

Этот метод не будет столь эффективен, как rsync, но может помочь вам в случае с простыми копированием.

Заключение

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

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

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

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