Вопрос или проблема
Я использую опцию --log-file
в rsync, чтобы видеть логи. Но когда я попытался запустить, было сообщение:
--log-file нераспознанная опция
Вот моя команда:
/usr/bin/rsync -av -u --log-file="/sreeni/log.txt" --rsync-path=/usr/local/bin/rsync /sreeni nnmhpt20.ind.hp.com:/sreeni
Может кто-нибудь помочь мне с правильным синтаксисом?
Я также пробовал эти варианты.
/usr/bin/rsync -av -u --log-file /sreeni/log.txt --rsync-path=/usr/local/bin/rsync /sreeni nnmhpt20.ind.hp.com:/sreeni
и
/usr/bin/rsync -av -u --log-file="/sreeni/log.txt" --rsync-path=/usr/local/bin/rsync /sreeni nnmhpt20.ind.hp.com:/sreeni
Какой у вас дистрибутив? Для дистрибутива, не зависящего от типа, вы можете использовать простую перенаправление вывода.
rsync ваши_выбранные_опции >> выбранный_лог-файл 2>&1
что превращается в:
/usr/bin/rsync -av -u /sreeni nnmhpt20.ind.hp.com:/sreeni >> /sreeni/log.txt 2>&1
Тем не менее, для систем на базе Debian это, похоже, работает:
rsync -av -u --log-file=/var/log/atest.log SRC DEST 2>&1 1>/dev/null
в то время как для RHEL мне нужно было:
rsync -av -u SRC DEST 1>>/var/log/atest.log 2>/dev/null
это выражение работает для меня (ubuntu 12.10):
sudo rsync -axzuvh --force --delete --no-whole-file --log-file=/var/log/atest.log SRC DEST
не забывайте использовать sudo.
Я нашел, что этот способ работает для меня:
rsync -av /source/directory/ /destination/directory/ &> ~/todaysDate-sync.log &
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что опция --log-file
не является стандартной опцией для всех версий rsync. Поэтому использование этой опции может вызвать ошибку "unrecognized option".
Чтобы решить эту проблему и правильно записывать логи, есть несколько подходов:
-
Перенаправление вывода: В большинстве случаев можно использовать простое перенаправление вывода. Это позволит вам сохранить как стандартный вывод, так и вывод ошибок в указанный вами файл. Вот пример команды с редиректом:
/usr/bin/rsync -av -u /sreeni nnmhpt20.ind.hp.com:/sreeni >> /sreeni/log.txt 2>&1
Здесь
>>
добавляет вывод к файлу/sreeni/log.txt
, а2>&1
объединяет стандартный вывод и вывод ошибок. -
Использование
--log-file
: Если вы уверены, что ваша версия rsync поддерживает--log-file
, попробуйте использовать его без кавычек:/usr/bin/rsync -av -u --log-file=/sreeni/log.txt --rsync-path=/usr/local/bin/rsync /sreeni nnmhpt20.ind.hp.com:/sreeni
-
Проблемы с правами: Убедитесь, что у вас есть права на запись в указанный файл лога. Если вы используете команду с привилегиями администратора, попробуйте:
sudo /usr/bin/rsync -av -u --log-file=/var/log/atest.log /sreeni nnmhpt20.ind.hp.com:/sreeni
-
Проверка дистрибутива: Некоторые дистрибутивы Linux могут иметь разные реализации rsync. Убедитесь, что используемая вами версия rsync поддерживает нужные вам опции. Вы можете проверить версию rsync, выполнив команду:
rsync --version
-
Кросс-дистрибутивные рекомендации: Если вы сталкиваетесь с проблемами на одной системе, возможно, имеет смысл использовать кросс-дистрибутивный подход. Приведенным ниже решением вы можете записывать логи вне зависимости от системы:
rsync -av /source/directory/ /destination/directory/ &>> ~/todaysDate-sync.log &
-
Проверка переменных среды: Иногда окружение или конфигурация системы могут влиять на выполнение команд. Проверьте, не установлены ли какие-либо мутации (alias) для
rsync
, которые могут мешать работе команд.
Если проблема все еще не решена, предоставьте дополнительные сведения, такие как версия rsync и используемая ОС, чтобы мы могли оказать более детальную помощь.