rsync - опция iconv на Mac, не работающем (синхронизируют с удаленного сервера Linux на локальный Mac),

Я хочу использовать rsync для данных резервного копирования с удаленного сервера Linux на мой локальный Mac. И я хочу инициализировать эту операцию на своем локальном Mac. Все хорошо работает за исключением того, что существует проблема специального символа: каждый раз я повторно выполняю rsync операцию (после того, как начальная синхронизация), файлы со специальными символами сначала удаляются и затем повторно синхронизируются. Насколько я понимаю, существует проблема с различными наборами символов, и предпочтительное решение, кажется, для использования --iconv опция:

Можно использовать rsync's - iconv опция преобразовать между UTF-8 NFC & NFD, по крайней мере, если Вы находитесь на Mac. Существует специальный utf-8-mac набор символов, который обозначает UTF-8 NFD. Таким образом для копирования файлов от Mac до NAS необходимо было бы выполнить что-то как:

rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

Это преобразует все локальные имена файлов от UTF-8 NFD до NFC UTF-8 на удаленном сервере. Содержание файлов не будет затронуто.

Проблема состоит в том, что это только работает 'один путь' ко мне, а именно, при синхронизации от Mac до Linux. Но я хочу 'пойти другим путем', т.е. синхронизацией С машины Linux НА Mac. И я хочу инициализировать операцию от своего локального Mac. Но когда я пробую:

rsync -av --delete --iconv=utf-8,utf-8-mac mynas:remotedir/ localdir/

Я получаю ошибку:

iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]

Я в потере для понимания, почему это не работает. Моя rsync версия на Mac обновляется от 2.6.9. к 3.1.1. использование Macports. Обратите внимание, что операция работает затем, когда я (на Mac, нотабене) инициирую rsync ОТ Mac ДО Linux:

rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

Но хождение другим путем' от Mac – который является тем, что я хочу сделать – не работает.

Странно достаточно тестирование для инициирования синхронизации от машины Linux представляет это странное сообщение:

rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]

включая, отметьте, очень странное требование [server=2.6.9], хотя я обновил к 3.1.1 на Mac. По некоторым причинам это смотрит, поскольку моя машина Linux 'видит' только исходную rsync версию на Mac.

Какое-либо предложение о том, как решить это?

ОБНОВЛЕНИЕ 23 октября: На превосходное предложение @Lee Johnson (см. ниже), инициирование теперь работает синхронизация с сервера Linux. Для полноты я теперь попробовал все комбинации, и появляется интересный шаблон:

НА MAC:

РАБОТЫ: файлы от Mac до Linux

СБОИ: файлы с Linux на Mac

НА LINUX

РАБОТЫ: файлы с Linux на Mac

СБОИ: файлы от Mac до Linux

Другими словами, --iconv опция, кажется, работает только один путь, с файлами от локальной машины до удаленного, не наоборот. Это похоже на ошибку мне, но возможно который является способом, которым это, КАК ПРЕДПОЛАГАЕТСЯ, работает?

Кто-либо, который в состоянии совместно использовать свет на этом?

9
задан 13 April 2017 в 15:13
3 ответа

После долгих экспериментов и, во многом благодаря полезным предложениям @Lee Johnson, я наконец нашел решение, которое теперь кажется мне досадно очевидным. Во многом из-за комментария, который я прочитал при исследовании проблемы, я подумал, что вы должны указать набор символов в порядке преобразования; но похоже, что это неправильный синтаксис. Напротив, следует

ВСЕГДА использовать - iconv = utf-8-mac, utf-8 при инициализации rsync с Mac и ВСЕГДА использовать - iconv = utf-8, utf-8-mac при инициализации rsync с компьютера Linux, независимо от того, хочу ли я синхронизировать файлы с компьютера Mac или Linux.

Тогда это работает как по волшебству!

12
ответ дан 2 December 2019 в 22:25

Вы недавно обновились до OS X Yosemite? У меня была такая же проблема, пока я не вспомнил, что обновил / usr / bin / rsync до версии 3.1. Когда я обновился до Yosemite, она была заменена старой версией 2.6.9.

В моем случае я решил проблему на Mac, повторно связав свой 3.1 rsync обратно в / usr / bin:

sudo -s
cd /usr/bin
mv rsync rsync-2.6.9
ln -s /usr/local/bin/rsync .
exit
5
ответ дан 2 December 2019 в 22:25

Способ, которым я решил эту проблему в Mac OS Big Sur:

Установите новую версию rsync с помощью brew:

$:brew install rsync

отобразить список путей rsync:

$:список rsync rsync

/usr/local/Cellar/rsync/3.2.3/bin/rsync
/usr/local/Cellar/rsync/3.2.3/bin/rsync-ssl
/usr/local/Cellar/rsync/3.2.3/share/man/ (3 files)

создать резервную копию бинарной команды старой версии ссылка:

$:mv /usr/local/bin/rsync /usr/local/bin/rsync2

создайте ссылку на бинарную команду новой версии:

$:ln -s /usr/local/Cellar/rsync/3.2.3/bin/rsync / usr/local/bin/rsync

0
ответ дан 21 July 2021 в 10:45

Теги

Похожие вопросы