ошибка по rsync: ссылка не референт

Я пытаюсь настроить rsnapshot (который использует rsync) для резервного копирования сервера Windows, но у меня возникли проблемы с rsync будучи не в состоянии следовать символическую ссылку на сервере для резервного копирования.

настройка:

  • Windows Server 2008 R2 с установленным Cygwin, который содержит файлы для резервного копирования
  • сервер ArchLinux в той же сети, которая должна резервного копирования файлов с сервера Windows
  • на сервере Windows установлен sshd и функционирует
  • сервер Windows не имеет запущенного демона rsync (насколько я могу судить), но я могу использовать rsync через ssh для подключения к серверу Windows с сервера Linux и копирования файлов.
  • поскольку приложение постоянно сохраняет некоторые файлы для резервного копирования, Windows server настроен на создание теневых копий Тома диска, содержащего данные для резервного копирования
  • я использую следующий скрипт для создания ссылки на последний том теневого копирования, так что он может быть доступен rsync:

    #!/bin/sh
    # Mount the latest shadow copy for the specified volume
    
    VOLUME="D:"
    LINK_NAME="E:latest-data-shadow-copy"
    
    
    SHADOW_VOLUME=`vssadmin list shadows /for=$VOLUME | grep "Shadow Copy Volume:" | tail -1 | tr -s ' ' | cut -d ' ' -f5`
    SHADOW_VOLUME+=""
    
    rm $LINK_NAME
    cmd.exe /c mklink /d "$LINK_NAME" "$SHADOW_VOLUME"
    

Проблема

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

    symlink has no referent: "/cygdrive/e/latest-data-shadow-copy"

это команда rsync, которую вызывает rsnapshot:

    /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --rsh=/usr/bin/ssh 'user@windowsip:/cygdrive/e/latest-data-shadow-copy/data-folder/' /media/backup-drive-1/.sync/

однако, если я пытаюсь использовать scp для копирования файлов из Тома теневого копирования с символическими ссылками он работает нормально:

    scp user@windowsip:/cygdrive/e/latest-data-shadow-copy/data-folder/test-file.txt test-file.txt

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

я пытался создать /etc/rsync.conf и добавил:

    use chroot = no

но это не влияет на ошибку. Я предполагаю, что это связано с тем, что это файл конфигурации для демона rsync, который я не запускаю.

вопросы

  • что предотвращение rsync из доступа к символической теневой копии в то время как scp доступ к файлам без проблем?
  • если проблема use chroot настройка rsync, как ее изменить, если демон rsync не запущен?

Спасибо за ваши ответы заранее!

17
задан Marek
26.12.2022 20:05 Количество просмотров материала 2411
Распечатать страницу

1 ответ

у меня была аналогичная проблема с symlink has no referent:

основная причина была: ссылка указывала на несуществующее место. Просто кто-то в организации изменил структуру файловой системы после создания ссылок и не обновил ссылки.

решение было одним из следующих:

  1. исправьте ссылки, указывающие на существующее местоположение.
  2. удалить ссылки как не нужно (никто, кроме rsync использовать их).
  3. исключить попытку rsync получить доступ к вашей ссылке с опцией --exclude '/cygdrive/e/latest-data-shadow-copy'. Об этом просят "профилактический" метод, однако, возможно, не самый лучший, поэтому предлагается последний вариант.
0
отвечен Ivy Growing 2022-12-28 03:53

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх