Если у вас возникло желание поддерживать рабочие станиции в максимально «защищённом» состоянии, а так же насколько возможно «автоматизировать» этот процесс, то этот пост для вас.
Будет использоваться:
Немного 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 папку для юзера. Но это уже другая история.
Постановка задачи. Один из компьютеров в реальном масштабе времени синхронизирует важные данные на облако Диск.Яндекс. Для гарантии сохранения этого набора данных они должны быть переданы на облако MEGA. При этом резервная копия должна быть идентична источнику. Аппаратные мощности компьютера с источником данных не позволяют одновременно запустить 2 сеанса синхронизации данных в реальном масштабе времени (Диск.Яндекс и MEGA), так как на компьютере с источником данных производится одновременная работа с 10-15 файлами офисного ПО Microsoft Office.
Реализация решения возложена на компьютер c большими аппаратными возможностями, функционирующий под управлением Linux Mint.
Для получения идентичной копии данных источника владелец аккаунта Диск.Яндекс предоставил синхронизируемые данные в доступ другому аккаунта Диска.Яндекс. При этом для исключения непреднамеренного удаления данных доступ предоставлен уровнем "только чтение".
В комплект поставки дистрибутива Linux Mint включено ПО резервного копирования rsync. В целях более удобной настройки синхронизации каталогов через rsync дополнительно была установлена графическая оболочка управления – пакет grsync, представляющий из себя GTK+ frontend для rsync.
После установки grsync запускается уже с русскоязычным интерфейсом.
По умолчанию предлагается настроить задание под именем "default". Но кнопкой + (Добавить) можно создать задание с желаемым именем.
Настройки сессии условно разделены на 3 категории: основные, расширенные и дополнительные.
В основных опциях указываются каталог источника и каталог назначения в порядке сверху вниз.
Далее следуют настройки, относящиеся к назначаемому заданию синхронизации.
При необходимости иметь идентичную копию данных источника необходимо установить галочку в поле "Удалить на приёмнике". В противном случае при удалении файла или каталога в источнике данных на приёмнике подлежащий удалению контент останется без изменений, то есть не будет удалён.
Так как каталог-источник является копией данных с уровнем доступа "только чтение", а клиент синхронизации с облаком MEGA создаёт в синхронизируемом каталоге компьютера скрытый каталог.debris, то при выполнении задания синхронизации каталогов его необходимо исключить (в каталоге-источнике каталог.debris будет отсутствовать). Если этого не сделать, то в процессе синхронизации в каталоге-получателе каталог.debris будет удалён.
Что из себя представляет каталог.debris и для чего он нужен .
В опциях grsync настройки исключения каталогов не предусмотрено. Для указания исключения каталога из синхронизации в поле "Дополнительные опции" раздела "Расширенные опции" необходимо вписать строку --exclude ".debris"
Для описываемой задачи в разделе "Дополнительные опции" никаких изменений вносить не требуется.
После внесения настроек в задание можно запустить его текст или выполнение, для чего нажать кнопку главного меню: "Симуляция" или "Выполнить".
Интересная заметка, которая по каким-то причинам до сих пор не попала в блог. В примере настройки rsync-сервера приводится реальный файл конфигурации зеркала репозиториев Debian, который я в прошлом на общественных началах держал для пользователей Уфанета. Потом Уфанет поднял собственное зеркало репозиториев, да и появились дешёвые безлимитные тарифы, поэтому моё зеркало потеряло смысл.
1. Настройка rsync-сервера
Для настройки rsync-сервера нужно установить пакет rsync:
# apt-get install rsync
Затем, прописать опции командной строки, с которыми будет запускаться rsync-сервер в файл /etc/default/rsync. В данном файле можно задать следующие опции:
- RSYNC_ENABLE
- настройка автозапуска сервера при загрузке операционной системы. Переменная принимает следующие значения:
- false - запретить запуск сервера rsync,
- true - запускать самостоятельный сервер rsync,
- inetd - запускать сервер rsync при необходимости из супер-сервера inetd.
- RSYNC_CONFIG_FILE - задаёт место расположения файла конфигурации. По умолчанию этим файлом является /etc/rsyncd.conf
- RSYNC_OPTS
- задаёт дополнительные опции командной строки для запуска rsync-сервера.
Например, можно задать опцию "--address=123.45.67.89" (по умолчанию - все локальные адреса), чтобы указать на каком адресе следует принимать соединения и/или опцию "--port=8730" (по умолчанию - 873), чтобы указать на каком порту следует принимать соединения. - RSYNC_NICE - задаёт приоритет процесса в планировщике задач.
uid = rsyncd gid = mirror max connections = 50 read only = yes list = yes syslog facility = local5 dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.mp3 use chroot = yes outgoing chmod = Fu=rw,g=rw,o=,Du=rwx,g=rx,o= path = /home/mirror/debian/ comment = Debian Lenny i386 and amd64 repository path = /home/mirror/debian-cd/ comment = Debian Lenny i386 and amd64 DVD images Описание указанных опций:
- uid - идентификатор пользователя, от имени которого будет работать rsync-сервер,
- gid - идентификатор группы, от имени которой будет работать rsync-сервер,
- max connections - максимальное количество одновременных подключений к rsync-серверу. Все подключения сверх указанного лимита будут отброшены.
- read only - разрешать клиентам только чтение,
- list - разрешать клиентам получать список файлов. Если запретить просмотр списка файлов, то клиенты смогут получить файл только зная его точное имя,
- syslog facility - уровень отладочных сообщений для демона syslog,
- dont compress - указывает шаблоны имён файлов, содержимое которых не нужно сжимать при передаче. Здесь полезно указать уже сжатые файлы, повторное сжатие которых не даст никакой выгоды, а только потратит ресурсы системы - это большинство аудио-, видео-файлов, большинство графических файлов, архивы.
- use chroot - указывает, должен ли rsync сервер в целях обеспечения большей безопасности, менять корневой каталог на указанный в path.
- outgoing chmod - задаёт права доступа к отдаваемым файлам. Поскольку протокол 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 будет иметь следующие преимущества:
- не будет копировать те файлы, временная отметка об изменении которых совпадает с временной меткой об изменении локальной копии файла,
- умеет докачивать недокачанные фрагменты файла,
- при всём при этом умеет проверять идентичность файлов с помощью хэш-функции, при необходимости докачивая отдельные блоки файла, результат вычисления хэш-функции для которых отличается.
$ rsync -avv /home/mirror/debian/ debian/ По сравнению с командой cp будет иметь следующие преимущества:
- не будет копировать те файлы, временная отметка об изменении которых совпадает с временной меткой об изменении копии файла,
- умеет копировать ссылки, устройства,
- копирует права доступа к файлам,
- при запуске от имени пользователя root будет копировать принадлежность файлов пользователям и группам.
При синхронизации на 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) или к их переводам на русский язык
FreeFileSync - это программное обеспечение для сопоставления и синхронизации папок, которое создает и управляет резервными копиями всех важных файлов. Вместо того, чтобы копировать каждый файл каждый раз, FreeFileSync определяет различия между исходной и целевой папками и передает только минимальный объем данных. FreeFileSync - это программное обеспечение с открытым исходным кодом, доступное для Windows, Linux и macOS
Бесплатная (с ограничениями) Открытый код Mac Windows Linux openSUSE CentOS Ubuntu Debian
Syncthing
Synching заменяет собственные службы синхронизации и облачных сервисов чем-то открытым, заслуживающим доверия и децентрализованным. Ваши данные являются вашими данными в одиночку, и вы должны выбрать, где он хранится, если он предоставляется третьим лицам и как он передается через Интернет.
Бесплатная Mac Windows Linux Android Android Tablet BSD Self-Hosted Cloudron
SyncToy
SyncToy - это бесплатный PowerToy, разработанный Microsoft, который обеспечивает простой в использовании графический пользовательский интерфейс, который может автоматически синхронизировать локальные или сетевые файлы и папки, но не файлы WebDAV, «Windows Mobile» или папки и не синхронизировать треугольник, как только Allway Sync , Synkron, SyncLess или GoodSync
Бесплатная Windows
SyncBack
SyncBack - это программное обеспечение для резервного копирования и синхронизации файлов, которое позволяет выполнять резервное копирование и синхронизацию файлов на одни и те же или разные диски, на разные носители (CD, DVD, Flash, zip) или на удаленный сервер.
Доступны три версии SyncBack: SyncBackFree, SyncBackSE (shareware) или SyncBackPro (shareware)
Бесплатная (с ограничениями) Mac Windows Linux Android Android Tablet
GoodSync
GoodSync - это профессиональное легкое и надежное программное обеспечение для резервного копирования файлов и синхронизации файлов.
Бесплатная (с ограничениями) Mac Windows Android iPhone Android Tablet iPad
Synkron
Synkron - это приложение для синхронизации папок и резервных копий папок, которое позволяет вам детально настроить синхронизацию. Несмотря на множество функций, пользовательский интерфейс Synkron очень удобен в использовании и удобен в использовании.
Бесплатная Открытый код Mac Windows Linux PortableApps.com
Unison
Unison - это инструмент синхронизации файлов для Unix и Windows. Он позволяет хранить две копии коллекций файлов и каталогов на разных хостах (или разных дисках на одном и том же хосте), изменяться отдельно, а затем обновляться, распространяя изменения каждой реплики на другую.
Бесплатная Открытый код Mac Windows Linux
Bvckup 2
Простое быстрое резервное копирование для Windows. С первого взгляда - небольшой и очень тощий, очень быстрый дельта-копировальный аппарат, отличный пользовательский интерфейс, отслеживание устройств, теневое копирование, обнаружение движения / переименования, режим «как работает», надежная поддержка многомиллионных резервных копий элементов с терабайтами данных, интеллектуальный и дискретный механизм обновления
Платная Windows
Déjà Dup
Déjà Dup - простой инструмент резервного копирования. Он скрывает сложность создания резервных копий «правильный путь» (зашифрованный, вне сайта и регулярно) и использует Duplicity в качестве бэкэнд. Он поддерживает локальные или удаленные места резервного копирования, включая Amazon S3.
Бесплатная Открытый код Linux
Rclone
Rclone - это программа командной строки для синхронизации файлов и каталогов с и из:
- Гугл Диск
- Amazon S3
- Openstack Swift / Rackspace облачные файлы / Memset Memstore
- Dropbox
- Google Cloud Storage
- Amazon Cloud Drive
- Microsoft One Drive
- Хубический
- Backblaze B2
- Yandex Disk
- Локальная файловая система
Бесплатная Открытый код Mac Windows Linux BSD Solaris FreeBSD NetBSD OpenBSD
По умолчанию, утилита может быть не установлена в системе. Установка и последующий запуск выполняются следующими командами.
CentOS 7
yum install rsync
systemctl enable rsyncd
systemctl start rsyncd
Ubuntu
apt-get install rsync
Открываем следующий файл:
vi /etc/default/rsync
Находим запись:
RSYNC_ENABLE=false
И меняем на:
RSYNC_ENABLE=true
Запускаем:
/etc/init.d/rsync start
Настройка
Открываем конфигурационный файл rsync:
vi /etc/rsyncd.conf
И настраиваем его, примерно, следующим образом:
max connections = 10
exclude = lost+found/
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.rar *.7z *.mp3 *.jpg
path = /data1/
comment = Public folders
read only = yes
list = yes
auth users = rsync_d1
hosts allow = localhost 192.168.0.15 192.168.0.20
hosts deny = *
uid = root
gid = root
path = /data2/
comment = Private folders
read only = yes
list = yes
auth users = rsync_d2, backup
secrets file = /etc/rsyncd.scrt
hosts allow = localhost 192.168.0.16 192.168.0.21
hosts deny = *
где первая группа параметров являются общими настройками:
- max connections — максимальное число одновременных подключений. Стоит задать, чтобы не перегружать сервер.
- exclude — папки, которые стоит исключить из синхронизации. В конкретном примере каталог для размещения восстановленных после проверки диска файлов.
- dont compress — указываем, какие файлы не нужно сжимать при отправке. Имеет смысл указать те, сжатие которых не даст результата, например, архивы, сжатые аудио и изображения.
а также каждый ресурс настраивается отдельно (в нашем примере data1 и data2 ):
- uid — пользователь, от которого будет выполнена синхронизация для конкретного ресурса.
- gid — группа, от которой будет выполнена синхронизация для конкретного ресурса.
- path — путь до ресурса, для которого выполняется синхронизация.
- comment — описание для удобства.
- read only — режим для чтения; позволяет защитить данные от удаления или изменения.
- list — разрешает или запрещает чтения содержимого каталога. Если запрещено (no ), синхронизация может выполняться для конкретно перечисленных файлов.
- auth users — проверка подлинности, вводом логина с паролем.
- secrets file — файл, в котором размещены логин и пароль.
- hosts allow — перечисление хостов, с которых разрешено обращаться к rsync серверу.
- hosts deny — перечисление хостов, с которых запрещено обращаться к rsync серверу (в данном примере, со всех, кроме разрешенных).
Создаем файл для аутентификации:
vi /etc/rsyncd.scrt
rsync_d1:password1
rsync_d2:password2
backup:password3
* где rsync_d1:password1 — соответственно, пользователь rsync_d1 с паролем password1 .
В целях безопасности, устанавливаем доступ только для владельца:
chmod 600 /etc/rsyncd.scrt
Перезапускаем сервис одной из команд:
systemctl restart rsyncd
/etc/init.d/rsync restart
service rsyncd restart
Добавляем порты в брандмауэр.
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --reload
iptables -I INPUT 1 -p tcp --dport 873 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
Запуск клиента
Проверка на локальном компьютере
Сначала выполним следующую команду на нашем сервере:
rsync -avv --progress rsync_d1@localhost::data1 /tmp/
* данная команда выполнит синхронизацию нашего ресурса data1 с каталогом /tmp .
Проверка на удаленном компьютере
Устанавливаем rsync, если еще не установлен:
yum install rsync
apt-get install rsync
* первая команда для CentOS, вторая — Ubuntu.
Запускаем синхронизацию:
rsync -avv [email protected]::data1 /tmp/
* где 192.168.0.5 — IP-адрес rsync сервера.
Пример готового скрипта для синхронизации папок
Скрипт довольно прост:
#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
Password_file="/etc/rsyncd.scrt"
user="opros"
ip="192.168.0.15"
source="data1"
destination="/tmp/"
Rsync -a --delete-after --password-file=$password_file $user@$ip::$source $destination
* где:
- password_file — пароль, в котором будет храниться пароль.
- user — учетная запись для авторизации.
- ip — IP-адрес сервера rsync.
- source — имя ресурса на сервере.
- destination — каталог, в который синхронизируем файлы.
После создаем файл с паролем:
vi /etc/rsyncd.scrt
* в данном файле указываем только пароль без имени учетной записи.
После задаем права:
chmod 600 /etc/rsyncd.scrt
Автоматизировать синхронизацию можно с помощью CRON:
0 */1 * * * /scripts/syncing.sh
* где /scripts/syncing.sh — наш скрипт. В данном примере задание будет выполняться каждый час.
Ключи запуска rsync
Общий синтаксис:
rsync <опции> <источник> <назначение>
Список и описание опций:
Ключ | Описание |
---|---|
-v, --verbose | Вывод подробной информации о процессе синхронизации. Стоит использовать для отладки. |
-q, --quiet | Не выводит сообщения об ошибках. |
--no-motd | Не выводит приветствие в MOTD |
-c, --checksum | Сравнивать файлы по контрольной сумме, а не времени или размеру. |
-a, --archive | Режим архивирования или то же самое, что с ключами -rlptgoD (без -H,-A,-X). Используется для удобства, чтобы не перечислять много опций. |
--no-<опция> | Отключает конкретную опцию, например, вышеописанная no-motd. |
-r, --recursive | Рекурсивный режим для каталогов. |
-R, --relative | Использовать относительные пути. |
--no-implied-dirs | Выключить параметр --relative. |
-b, --backup | Режим резервного копирования. С его помощью при обновлении файлов в папке назначения для них создается копия. |
--backup-dir=<каталог> | В режиме резервного копирования указывает каталог, в котором будут храниться копии. |
--suffix=SUFFIX | В режиме резервного копирования задает суффикс для сохраненных файлов. |
-u, --update | Пропускать файлы, которые новее в папке назначения (копировать только измененные файлы). |
-d, --dirs | Не использовать рекурсию для каталогов. |
-l, --links | Копировать симлинки как симлинки. |
-L, --copy-links | Копировать не симлинк а ее содержимое (трансформировать симлинк в каталог). |
-k, --copy-dirlinks | Преобразовать симлинк на каталог в обычный каталог. |
-K, --keep-dirlinks | В папке назначения обрабатывать симлинк как каталог. |
-H, --hard-links | Сохранять жесткие ссылки. |
-p, --perms | Сохранять разрешения (права доступа). |
-E, --executability | Сохранить права на исполнение. |
--chmod=<права> | Изменить права доступа на конкретные. |
-A, --acls | Сохранить права ACL. |
-X, --xattrs | Сохранить атрибуты файлов. |
-o, --owner | Сохранить владельца (только от суперпользователя). |
-g, --group | Сохранить группу владельца. |
--devices | Копировать файлы-устройства (разрешено только при выполнении команды с правами суперпользователя). |
--copy-devices | Копировать файлы устройства как обычные файлы. |
--specials | Сохранять специальные файлы. |
-D | Заменяет --devices и --specials одновременно. |
-t, --times | Сохранять временные отметки. |
-S, --sparse | Выполнение дефрагментации в момент копирования данных. |
-n, --dry-run | Режим тестирования. Выполняется пробный запуск, при котором будет показаны изменения, но сами изменения выполнены не будут. |
-W, --whole-file | Копировать файлы целиком. По умолчанию, для копирования файлов используется алгоритм дельта-хэфера, который позволяет переносить только часть с изменениями. На практике, это сильно ускоряет процесс копирования. Ключ применяется в тех случаях, когда нужно перенести файл целиком. |
-x, --one-file-system | Не разрешает переходить границы файловой системы. Например, если в один из синхронизируемых каталогов может быть примонтирована сетевая файловая система, ее копирование может вызвать неудобства. |
-B, --block-size=<размер> | Принудительно фиксировать размер блока контрольной суммы |
-e, --rsh=<команда> | Указать оболочку для использования, например SSH. |
--existing | Не создавать новые файлы в каталоге назначения. |
--ignore-existing | Не обновлять существующие файлы в каталоге назначения. |
--remove-source-files | Источник удаляет свои файлы после выполнения синхронизации. |
--delete | Удалить файлы в папке назначения, если их больше нет в папке источнике (удаление старых файлов). |
--delete-before | Удалить файлы в папке назначения до начала синхронизации. |
--delete-during | Удалить файлы в папке назначения в момент синхронизации. |
--delete-delay | Поиск файлов на удаление в момент синхронизации, а удаление после. |
--delete-after | Удалить файлы в папке назначения после синхронизации. |
--delete-excluded | Удалить исключенные из синхронизации файлы в каталоге назначения. |
--ignore-errors | Удалять файлы даже при ошибках ввода/вывода. |
--force | Принудительное удаление не пустых каталогов. |
--max-delete=<число> | Не удалять больше заданного числа файлов. |
--max-size=<размер> | Не передавать файлы с размером более заданного. |
--min-size=<размер> | Не передавать файлы с размером менее заданного. |
--partial | Оставлять файлы, которые переданы не до конца (процесс копирования завершился в процессе). |
--partial-dir=<каталог> | Хранить частично переданные файлы в специальном каталоге. |
--timeout=<секунды> | Установить время ожидания от системы ввода/вывода. |
--contimeout=<секунды> | Установить время ожидания для подключения к демону rsync. |
-I, --ignore-times | Все равно копировать файлы, если они имеют одинаковые разметы или время изменения. |
--size-only | Не копировать только те файлы, которые имеют одинаковые размеры. |
-T, --temp-dir=<каталог> | Все временные файлы размещать в определенном каталоге. |
-z, --compress | Сжимать данные файла во время передачи |
--compress-level=<число> | Устанавливает уровень сжатия от 0 до 9. |
--skip-compress=<список> | Не выполнять компрессию для перечисленных файлов. |
-C, --cvs-exclude | Исключить от копирования файлы, которые исключаются CVS (RCS/ SCCS/ CVS/ .svn/ CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* *.old *.bak *.BAK *.orig *.rej .del-* *.a *.o *.obj *.so *.Z *.elc *.ln core) |
-f, --filter=<правило> | Добавить правило для фильтра. |
--exclude=<выражение> | Исключить из синхронизации файлы, соответствующие выражению. |
--exclude-from=<файл> | Исключить из синхронизации файлы, перечисленные в файле. |
--include=<выражение> | Включить в синхронизацию файлы, соответствующие выражению. |
--include-from=<файл> | Включить в синхронизацию файлы, перечисленные в файле. |
--files-from=<файл> | Читать список имен исходных файлов из файла. |
--address= |
Привязать IP-адрес для исходящего сокета. |
--port=<порт> | Использовать определенный сетевой порт. |
--sockopts=OPTIONS | Использовать специальные опции для TCP. |
--blocking-io | Использовать блокирующий ввод-вывод для удаленной оболочки |
--stats | Вывод статистики по передаче данных. |
-h, --human-readable | Вывод чисел в удобном для чтения формате. |
--progress | Показывать строку прогресса для синхронизации. |
-P | То же самое, что --partial и --progress. |
-i, --itemize-changes | Выводить сводку изменений для всех обновлений |
--log-file=<файл> | Вывод лога в специальный файл. |
--password-file=<файл> | При аутентификации пароль можно хранить в специальном файле. Это необходимо для автоматизации выполнения команды без пароля. |
--list-only | Показать список файлов, но не копировать их. |
--bwlimit=<число> | Ограничить пропускную способность (КБит в секунду). |
--protocol=<число> | Принудительно использовать более старую версию протокола. |
--iconv=<кодировка> | Запрос кодировки преобразования имен файлов. |
-4, --ipv4 | Предпочтительно, использовать IPv4. |
-6, --ipv6 | Предпочтительно, использовать IPv6. |
--version | Вывод версии rsync. |
(-h) --help | Вывод справочной информации по использованию rsync. |
* самый свежий список ключей rsync можно посмотреть командой man rsync .
Rsync на Windows
Реализация rsync для Windows носит название cwRsync (не является аналогом программы — по сути, это утилита Rsync + библиотека Cygwin). Скачать ее можно на официальном сайте . Для загрузки доступны платная и бесплатная версии. Последняя не позволит поднять Rsync-сервер, получать поддержку, обновления безопасности и возможность работать в графическом интерфейсе.
Процедура использования клиента cwRsync аналогична описанному выше. Скачиваем архив программы и распаковываем его. Запускаем командную строку и переходим в каталог bin (находится в папке, куда была распакована программа).
Запускаем синхронизацию:
rsync.exe -avv --progress [email protected]::data1 /cygdrive/c/temp
* обратите внимание на путь назначения — чтобы обратиться к диску C мы написали /cygdrive/c . Итоговое назначение — C:\temp .
Копирование с помощью SSH:
rsync.exe -avv -e "./ssh -p 22" --progress [email protected]:/data/ /cygdrive/c/temp
* обратите внимание, что мы пишем не ssh, а ./ssh , иначе, если мы используем 64-х битную систему и бесплатный пакет cwRsync, система не найдет путь до ssh и выдаст ошибку Failed to exec ssh: No such file or directory .
Примеры использования rsync
Простая команда для синхронизации двух каталогов:
Команда для резервного копирования:
rsync -ab --delete-after [email protected]::data_source /data_destination
Выполнение синхронизации по SSH:
rsync -a --delete-after -e "ssh -p 22" [email protected]:/data_source /data_destination
* по SSH запросы идут не через rsync server. В данном примере подключение будет выполнено по 22 порту, под учетной записью user .
Копирование файлов на удаленную машину:
Синхронизация в обе стороны (запускаем две команды по очереди):
rsync -a --delete-after [email protected]::data_source /data_destination
rsync -a --delete-after /data_destination [email protected]::data_source
Синхронизация файлов по маске:
rsync -a --include="*.txt" --exclude="*" [email protected]::data_source /data_destination
* в этом примере будут синхронизированы только файлы с расширением txt .
Исключить каталог:
rsync -a --exclude="folder/*" [email protected]::data_source /data_destination
Возможные проблемы
rsync: change_dir "/" failed: Permission denied
Причина: нет прав на синхронизируемые файлы.
Решение: задать правильного пользователя (uid) в настройках ресурса на стороне сервера.
rsync: failed to connect to x.x.x.x (x.x.x.x): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(122)
Причина: не доступен удаленный хост.
Решение: проверить, что хости доступен по сети. Проверить настройку брандмауэра.
Диагностика автомобильного аккумулятора и его обслуживание
Советы как пользоваться ареометром для аккумулятора
Открытки для любимой девушки с признаниями в любви Открытки для влюбленных с надписями
Что можно отправить в подарок почтой?
Как отправить открытку по электронной почте