Я пытаюсь настроить rsnapshot (который использует rsync) для резервного копирования сервера Windows, но у меня возникли проблемы с тем, что rsync не может перейти по символической ссылке на сервере для резервного копирования.
Настроить:
- Windows Server 2008 R2 с установленным Cygwin, который содержит файлы для резервного копирования
- Сервер ArchLinux в той же сети, который должен создавать резервные копии файлов с сервера Windows
- На сервере Windows установлен и работает sshd
- На сервере Windows нет работающего демона rsync (насколько я могу судить), но я могу использовать rsync через ssh для подключения к серверу Windows с сервера Linux и копирования файлов.
- Поскольку приложение сохраняет постоянно открытыми некоторые файлы для резервного копирования, сервер Windows настроен на создание теневых копий тома на диске, содержащем данные для резервного копирования.
Я использую следующий скрипт для создания ссылки на последний том теневой копии, чтобы он был доступен для 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?
Спасибо за ваши ответы заранее!