macOS - обновление скриптов - переход с rsync 2.6.9 на 3.0.6 - PullRequest
0 голосов
/ 26 июня 2018

Мы используем rsync в macOS для переноса домашнего каталога определенного пользователя с СТАРЫЙ (текущий) на НОВЫЙ компьютер.

Пользователь владеет СТАРЫЙ компьютер ... у нас есть НОВЫЙ компьютер.

Оба компьютера связаны с Active Directory, и наш скрипт сохраняет UID / GID, вилки ресурсов,и т. д.

Apple связывает rsync 2.6.9, нам нужно использовать -E для «копирования расширенных атрибутов», однако неудачный откат является полным, а дельта не работает ... каждый прогон rsyncобрабатывается как полный прогон.

rsync 3 исправляет это, может «копировать расширенные атрибуты» без прерывания последующих прогонов ... однако из-за изменений с GNU v2 на GNU v3 , Apple и LinusT перевернули GNU v3 птицу (вполне достойно) .

Мы рассказали Apple о том, как обновить rsyncдо 3.0.6, не нарушая ни одного из рабочих процессов наших разработчиков, и они предложили, чтобы мы выбрали папку и вызывали, используя определенныеic path ... поэтому мы выбрали /Library/COMPANY/Applications/rsync в качестве пути установки, где /Library/COMPANY/Applications/rsync/bin/rsync становится путем к бинарному файлу.

Техник подключится к OLD компьютеру пользователя и запустит /Library/COMPANY/Scripts/rsyncStuff.sh, который запрашивает критерии и вкратце запускает команду, подобную этой:

/usr/bin/rsync --log-file=/Library/Logs/rsyncTransfer_${dateStamp}.log --exclude '<stuff>' --archive --verbose --delete --extended-attributes --progress --recursive --human-readable -e ssh /Users/jdoe adminUser@${NEWcomputerIpAddress}:/Users/Shared/

Мы изучили различия между rsync 2.6.9 и 3.0.6, и наше лучшее предположение было бы, что эта команда будетсделать по существу то же самое:

/Library/COMPANY/Applications/rsync/bin/rsync --log-file=/Library/Logs/rsyncTransfer_${dateStamp}.log --exclude '<stuff>' --archive --verbose --delete --xattrs --acls --progress --recursive --human-readable -e ssh /Users/jdoe adminName@${NEWcomputerIpAddress}:/Users/Shared/

Уведомление rsync 2.6.9 используется --extended-attributes, где rsync 3.0.6 использует --xattrs --acls.Проверка работоспособности, это кажется правильным?

Коллега спросил, следует ли нам использовать --rsync-path=PROGRAM, существовавший в 2.6.9, не был уверен, нужно ли это, так как технология вызывает наш скрипт, имы управляем командой, включая путь к rsync ... проверке работоспособности, на всякий случай.:)

[РЕДАКТИРОВАТЬ: Подтверждено --rsync-path=PROGRAM не требуется.]

TIA, Дон

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Ответы Гордона Дэвиссона были чрезвычайно полезны.

"Ответ" будет таким: прочитайте его ответы и выберите, какие варианты он упоминает, полезно, в зависимости от вашей среды и того, как вы управляете своими компьютерами Mac.

Короче говоря, установка rsync 3.0.6 работала как чудо и оказалась версией, которую Майк Бомбич использует для Carbon Copy Cloner.Сейчас он работает на Apple, поэтому я верю его мнению.:)

В нашем случае мы не можем включить root, поэтому после завершения rsync переместите папку из / Users / Shared / jdoe в / Users / jdoe и рекурсивно установите владельца в jdoe.

Совет Джорджа Дэвиссона стал настоящим откровением, особенно заключительные комментарии относительно того, почему / Users / jdoe (на старом компьютере) rsync'd для / Users / shared / jdoe (на новом компьютере) должен быть рекурсивно установлен в jdoe каквладелец.Причина, по которой мы должны это сделать, заключается в том, что мы не можем включить root, но некоторые люди могут включить root, и это сделает процесс rsync менее быстрым.

Вот наша последняя проверенная команда ...как всегда, мы всегда стремимся улучшить наши процессы, поэтому мы открыты для любых будущих предложений / изменений:

/Library/COMPANY/Applications/rsync/bin/rsync --rsync-path=/Library/ATOS/Applications/rsync/bin/rsync --log-file=${logFolder}/rsyncTransfer_${dateStamp}.log --exclude '.Trash' --exclude '.DS_Store' --exclude 'Library/Caches' --exclude 'Library/Keychains' --exclude 'Library/Saved Application State' --exclude 'Box Documents' --exclude 'Box Sync' --archive --verbose --acls --xattrs  --delete --progress --recursive --human-readable -e ssh /Users/${userName} ${adminName}@${ipAddress}:/Users/Shared/

После завершения rsync запустите sudo mv /Users/Shared/${username} /Users/${username} и sudo chown -R ${username} /Users/${username} и получите журнал пользователя

Еще раз спасибо Гордону Дэвиссону за потрясающий вклад!

0 голосов
/ 26 июня 2018

Краткое резюме: если вам нужны расширенные атрибуты, не переходите между rsync v2 и v3;выберите один и используйте его на обоих концах.

Более подробное объяснение: для поддержки расширенных атрибутов (и флагов Finder, и всех других нестандартных метаданных, поддерживаемых HFS +), Apple изменила rsync v2.x, который поставляется сВ macOS используется формат AppleDouble .В дополнение ко всем реальным файлам, он синхронизирует поддельные метаданные «файлы» с префиксом «._», то есть, если у вас есть файл с именем «notes.txt», он синхронизирует оба «notes.txt»и "._notes.txt", где последний содержит метаданные файла.Дельта-переносы должны нормально работать для основного файла, но не поддерживаются для файла метаданных;это не должно иметь большого значения, поскольку файлы метаданных, как правило, довольно малы.

rsync v3, с другой стороны, добавляет в стандарт расширяемые метаданные ... совершенно другим и несовместимым способом.Я не помню, насколько тщательно я тестировал это, но IIRC, если вы попытаетесь перенести расширенные метаданные из v3 в v2, он отклонит их, потому что удаленный (v2) не поддерживает эту функцию.Если вы попробуете это от Apple v2 до v3, вы получите кучу реальных файлов "._", потому что получатель не распознает их как метаданные.

Кроме того, вы правы относительнодругие параметры командной строки, но в v3 вы также можете захотеть --ctimes (сохранить время создания) и --fileflags (сохранить флаги).Хотя это последнее сопровождается предупреждением: у меня возникли проблемы с блокировкой файлов v3 (из-за передачи флага файла uchg), а затем я не смог установить их другие атрибуты.

Лично я предпочитаюиспользуйте v3, поэтому я просто копирую его на компьютеры, между которыми я собираюсь перенести.Я обычно устанавливаю его как / usr / local / bin / rsync3, так что нет никакой двусмысленности относительно того, какая версия используется.

...