Решил я всё же добить возможность копирования rsync-ом из-под винды на линукс. Не, ну в самом деле, что за издевательство - такой удобный способ и недоступен!
За основу взял DeltaCopy - cygwin-порт самого rsync и нескольких дополнительных утилит плюс графическая обвязка как для клиента, так и для сервера. GUI-вая часть меня пока не интересует, а вот rsync/win решил испытать. Сразу уточню: есть и другие порты, но их я не проверял и не пробовал.
Windows имеет дурную привычку хранить имена файлов в разных кодировках - и юникод и 1251 и 866, в общем, полный бардак. Юниксы давно перебрались на utf-8 и не заставляют своих пользователей париться по этому поводу.
Rsync из DeltaCopy не поддерживает копирование виндовых ACL и есть какие-то странности с копированием других расширенных атрибутов. Но в моем конкретном случае это не критично, потому не заморачивался уточнениями.
Вторая грабля - неожиданное прекращение копирования при указании параметра iconv. Сообщение на отправляющей стороне было совсем невразумительным. А вот в протоколе на самом сервере ситуация немного прояснилась: "rsync: The server is configured to refuse --iconv
". Вот те на! Что за нафиг такой?
Вылечилось, опять же, по советам из этих ваших интернетов, добавлением строки charset=utf-8
в /etc/rsyncd.conf
.
path = /media
use chroot = yes
lock file = /var/lock/media-restore.lock
read only = no
timeout = 600
auth users = восстановитель
uid=root
Это имя модуля. Оно указывается в команде отправки:
... пользователь@сервер_rsync::media/путь
Пользователи вместе с их паролями задаются в файле, описанном в конфиге параметром
secrets file = /etc/rsyncd.secrets
Формат файла: каждый пользователь на отдельной строке в виде логин:пароль
, например "восстановитель:пароль_восстановления
". В конце файла желательна пустая строка.
path
- путь в файловой системе сервера
use chroot
- крайне желательно
во избежание злоупотреблений с путями типа модуль/путь/../../запретная_зона
lock file
- служебный файл, создаваемый при обработке операций в этом модуле.
auth users
- можно задать не только глобальный список разрешенных пользователей, но и для каждого модуля указывать отдельные разрешения. В примере я не хочу, чтобы к модулю
получил доступ какой-нибудь другой пользователь
uid
- идентификатор пользователя, от имени которого выполняются операции. Сам демон rsync обычно запускается от рута, поэтому проблем с мимикрированием быть не должно. Дополнительно см. описание параметра --super
.
Интересная заметка, которая по каким-то причинам до сих пор не попала в блог. В примере настройки rsync-сервера приводится реальный файл конфигурации зеркала репозиториев Debian, который я в прошлом на общественных началах держал для пользователей Уфанета. Потом Уфанет поднял собственное зеркало репозиториев, да и появились дешёвые безлимитные тарифы, поэтому моё зеркало потеряло смысл.
1. Настройка rsync-сервера
Для настройки rsync-сервера нужно установить пакет rsync:
# apt-get install rsync
Затем, прописать опции командной строки, с которыми будет запускаться rsync-сервер в файл /etc/default/rsync. В данном файле можно задать следующие опции:
После изменения опций, если ваш rsync-сервер будет работать в самостоятельном режиме, нужно перезапустить его:
# /etc/init.d/rsync restart
2. Использование rsync-клиента
Для установки rsync-клиента нужно установить пакет rsync:
# apt-get install rsync
Чтобы начать копирование с rsync-сервера, можно воспользоваться подобной командой:
$ rsync -avv rsync://[email protected]:873/debian/ debian/
Или проще:
$ rsync -avv rsync://mirror.yandex.ru/debian/ debian/
rsync-клиент может работать не только с rsync-сервером, он может работать и через ssh-подключение с теми машинами, где установлен rsync:
$ rsync -avv user@computer:/home/mirror/debian/ debian/
При этом он по сравнению с командой scp будет иметь следующие преимущества:
При синхронизации на Samba-ресурс или файловую систему FAT может случиться, что копируются не только изменённые файлы, а половина всех файлов плюс изменившиеся. Это связано с тем, что в файловой системе FAT исторически под хранение секунд отводилось лишь 5 бит. В 5 битах можно хранить не более 32 разных значений, поэтому секунды хранятся с округлением до чётного значения. Из-за этого rsync может решить, что файл изменился, хотя разница между отметками времени двух файлов составляет 1 секунду. Чтобы rsync не обращал внимание на разницу в одну секунду, следует указать ему дополнительную опцию --modify-window=1:
$ rsync -avv --modify-window=1 /home/fileserv1/ /home/fileserv2/
За более подробной информацией по программе rsync можно обратиться к системным страницам руководства rsync(1) и rsync.dconf(5) или к их переводам на русский язык
Решение для резервного копирования, основанное на реализации rsync для Windows , используют популярную технологию синхронизации файлов и папок , находящихся в разных местах сети, с минимальным объёмом передаваемых данных.
Название технологии копирования rsync (remote synchronization) – дословно: «удалённая синхронизация». Она изначально разрабатывалась, как приложение для Unix. Существует аналог rsync для Windows, cwrsync . Итак, каковы же преимущества резервного копирования rsync для бэкапа и синхронизации в Windows?
Версия помогает производить бэкап рабочих станций удалённо по сети так, что необходим всего один человек – администратор сети, который управляет всем процессом резервного копирования удалённо, не прерывая работы пользователей.
Скачать
Купить!
Версия 8.0.4
от 10 июля 2019. 104 MB
Программа резервного копирования
Handy Backup.
27800
RUB
за лицензию
С помощью этой версии программы, Вы сможете управлять бэкапом удаленных рабочих станций по сети. Бесплатный полнофункциональный пробный период - 30 дней!
Скажем, у Вас есть две рабочие станции в сети, которые вы хотите синхронизировать. Бэкап с помощью rsync для Windows позволяет пересылать лишь данные, различающиеся в конкретных папках на двух машинах, значительно экономя таким образом время работы.
На первый взгляд может показаться, что это обычный инкрементальный или дифференциальный бэкап , однако, это, на самом деле, существенно разные вещи, поскольку стандартный бэкап не умеет вычислять, передавать и "приклеивать" лишь разницу в синхронизируемых данных, а всегда переписывает файлы при совпадении имён.
Таким образом, минимизируется поток данных при синхронизации двух папок . Поэтому мы получаем также и меньшее время обработки операции при прочих равных условиях. Пользуясь стандартным оборотом "Время-деньги", получаем, что в каком-то смысле мы уменьшаем и финансовые затраты на бэкап с помощью копирования файлов Rsync.
Давайте посмотрим внимательнее на программный бэкап при помощи rsync. Обратим внимание на наиболее интересные ситуации. Предположим, что у нас теперь смешанная сеть ОС Windows-Unix.
Основываясь на том, что мы уже неплохо усвоили про rsync сервер, саму эту технологию и резервное копирование с её помощью, мы можем вывести несколько замечательных преимуществ: быстрый инкрементальный бэкап и восстановление, сокращение использования оперативной памяти и ресурсов сети. И вишенка на тортик: это именно тот функционал, который позволяет производить бэкап Linux серверов и рабочих станций так же просто, как и с Windows.
Существует и ряд возможных проблем использования rsync в Windows :
Последний пункт можно было бы автоматизировать, однако, проблема состоит в том, что нет универсальных рецептов настройки для всех серверов и всех типов данных.
Таким образом, мы понимаем, что, возможно, использование оригинальной утилиты rsync для Windows не спасёт положение, однако, можно просто попытаться адаптировать алгоритм rsync для конкретного приложения Windows.
В настоящее время разработчики программного обеспечения Handy Backup уделяют большое внимание технологии копирования Rsync, активно внедряя её в такие прикладные операции, как:
В настоящее время команда разработчиков Handy Backup работает над применением rsync для бэкапа по сети с нескольких контрольных точек. Умный функционал нашей программы позволит вам управлять удалёнными рабочими станциями с практически любой машины в сети, если только вы имеете права доступа (не забываем про безопасность!).
Разработчики Handy Backup внедрили функционал для бэкапа Rsync Windows и Linux компьютеров, и список возможностей постоянно расширяется! А что, если бы вы могли управлять всей сетью с мобильного устройства Android? Или делать бэкап карты памяти телефона как рабочей станции вашей локальной сети? Нравится идея? Тогда вам понравятся и релизы Handy Backup, работающие на алгоритме rsync backup для Windows от Новософт.
Supported platforms: Vista/2008(R2)/7/8/2012(R2)/10/2016
cwRsync comes as a zip archive containing a package. Unzip downloaded file and run cwRsync_x.x.x_Installer.exe or cwRsync_Server_x.x.x_Installer.exe (server version) :
You"re DONE! cwRsync is installed on your machine.
cwRsync server only
You should update the configuration file according to your needs. If you have defined uploadable modules (read only = false), you have to make sure that Rsync Server has correct permissions on directories behind those modules. You can use Prep a Dir for Upload wizard from the start menu for that purpose.
cwRsync installs rsync server as a service (RsyncServer ) with following parameters:
--config rsyncd.conf --daemon --no-detach
Default start mode is manual.
With the following features is available from the start menu:
Client installation includes also a batch file starting rsync in a right environment. You can customize it according to your needs. Man pages in html format are also available from start menu. cwRsync FAQs from this site can also be helpful.
Если у вас возникло желание поддерживать рабочие станиции в максимально «защищённом» состоянии, а так же насколько возможно «автоматизировать» этот процесс, то этот пост для вас.
Будет использоваться:
Немного batch файла
Немного Linux сервера
Немного Windows Server 2008 R2 и Групповых политик
Идея в следующем - незаметно от самого юзера, чтобы не нарушать его работу, делать еженедельное копирование его профиля, дабы исключить потерю данных, и сохранять его на сервере в максимально защищённом виде.
Для этого начнём с клиентской части. Мы используем shadow volume create - expand, дабы исключить проблему нечитания открытых пользователем файлов, таких как Outlook pst, или документов. Нам понадобится набор от Microsoft, который содержит vshadow - это Volume Shadow Copy Service SDK 7.2, который можно бесплатно скачать с серверов Microsoft, http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23490 .Нам понадобятся vshadow.exe и vshadow.pdb файлы из этого SDK. Внимание - они разные для 64-битных, и 32-битных систем.
64-bit - %PROGRAMFILES%\Microsoft\VSSSDK72\TestApps\vshadow\bin\obj-chk\amd64
32-bit - %PROGRAMFILES%\Microsoft\VSSSDK72\TestApps\vshadow\bin\release-xp
Так же нам понадобится набор файлов из cwrsync под Windows -
После инсталляции их можно будет найти тут:
%PROGRAMFILES%\cwRsync\bin
Складываем все файлы в одну папку, назовём её для удобства «Backup», и начинаем создавать файл, который будет запускать эту «машину смерти» - по факту, это простой batch файл, который будет отрабатывать все действия. Назовём его для удобства «backup.cmd»
Пишем в файл:
(неведома магия)
Setlocal
if NOT "%CALLBACK_SCRIPT%"=="" goto:IS_CALLBACK
set SOURCE_VOLUME=C:
set DESTINATION_VOLUME=O:
set CALLBACK_SCRIPT=%~dpnx0
set TEMP_GENERATED_SCRIPT=GeneratedVarsTempScript.cmd
%~dp0\vshadow.exe -nw -p -script=%TEMP_GENERATED_SCRIPT% -exec=%CALLBACK_SCRIPT% %SOURCE_VOLUME%
del /f %TEMP_GENERATED_SCRIPT%
goto:EOF
:IS_CALLBACK
setlocal
call %TEMP_GENERATED_SCRIPT%
%~dp0\vshadow.exe -el=%SHADOW_ID_1%,%DESTINATION_VOLUME%
Эта часть «макаронного кода» делает shadow volume copy с C: и подключает её на O:, который мы и будем использовать для копирования, а потом тем же скриптом уберём. Теперь часть, которая отвечает за действия rsync:
(неведома магия)
Setlocal
SET CWRSYNCHOME=C:\Backup\ (где папка с файлами rsync и vshadow)
SET CWOLDPATH=%PATH%
SET CYGWIN=nontsec
SET PATH=%CWRSYNCHOME%;%PATH%
SET HOME=С:\Backup\LOG\ (сюда будем сохранять логи)
SET RSYNC_PASSWORD=(тут пароль, который установлен на принимающем сервере rsync)
SET MY_NAME=%computername%
(теперь указываем, что копировать)
SET FS_SRC_HOME="/cygdrive/O/Users/" (используем именно в таком формате, указываем папку до "Users")
SET FS_SRC_BCK="/cygdrive/C/Backup/" (где файлы rsync, чтобы положить их вместе с логами на бекап сервер)
Del /q С:\backup\log\*.log (стираем старые логи перед запуском)
(запускаем)
Rsync -av --chmod=ug=rwx %FS_SRC_B2% backupusr@hostname::sbackupusr/%MY_NAME%
rsync -avhP --inplace --stats --del --modify-window=1 --log-file=%FS_SRC_BCK%DATA/backupwork.log --exclude-from=%FS_SRC_BCK%DATA/exclude %FS_SRC_HOME% backupusr@hostname::sbackupusr/%MY_NAME%/snapshot/
rsync -av %FS_SRC_BCK% backupusr@hostname::sbackupusr/%MY_NAME%/snapshot/Backup/
Первой командой мы создаём директорию по имени компьютера %computername%
Второй командой мы копируем данные с временно подключенного диска O:\Users, с сохранением лог-файла.
Третьей командой мы копируем всю папку C:\Backup, для сохранности лога и самой программы.
Вот эта строка «backupusr@hostname::sbackupusr» - указывает на пользователя на принимающей стороне а так же хост принимающей стороны. (Будет рассмотрено во втором псто).
После этого нам необходимо отключить O: диск, так как если мы этого не сделаем, в следующий раз vshadow не сможет подключить туда копию, и копия будет делаться со старого O:\ диска всё время, не смотря на то, что файлы в папке пользователя уже давно изменились.
(неведома магия)
SET HOME=%HOMEDRIVE%%HOMEPATH%
VSHADOW.EXE -ds=%SHADOW_ID_1%
Это всё нужно сложить в обычный.cmd файл, как я уже указывал выше, сохранить его в папку Backup, где хранятся файлы rsync и vshadow, и запускать по мере надобности. Работает на Windows Vista, Windows 7, Windows XP, 32 и 64-bit
P.S: Конечно, будет необходимо поднять принимающую машину, в нашем случае на базе *nix, и создать разделы, которые будут защищены true-crypt в случае кражи сервера. Так же в дальнейшем эту папку можно запаковать в msi инсталлер для установки на все рабочие станции через Групповые Политики и использовать их же для создания Scheduled Tasks и закрытия доступа в Backup папку для юзера. Но это уже другая история.
pushup-store.ru - Интернет. Программы. Инструкции. Поломки. Папки и файлы