Rsync настройка бэкапа на centos / debian / ubuntu

dd — копирование всего жесткого диска

В данном случае мы снова воспользуемся , только на сей раз сохраним все содержимое жесткого диска — с таблицей разделов, самими разделами и всеми данными. Преимущество данного метода в том, что можно за один шаг сохранить все установленные на этом жестком диске системы без необходимости бэкапить каждый раздел отдельно. Кроме того, при таком бэкапе сохранятся все данные, относящиеся к загрузчику — таким образом, после восстановления из бэкапа вам не нужны будут дополнительные манипуляции, вы сможете сразу же загрузиться с этого жесткого диска.

Создание образа

В целом процедура аналогична описанной выше для бэкапа отдельных разделов. В данном случае также применим совет о прочистке свободного места «нулями» — при наличии свободного времени проделайте это со всеми разделами.

Перед началом операции убедитесь, что ни один из разделов данного жесткого диска не смонтирован. Сделать это можно запустив команду без параметров.

Выберите раздел, на котором вы собираетесь разместить файл-обарз. Разумеется, это должен быть раздел другого жесткого диска. Также убедитесь в наличии достаточного количества свободного места на этом разделе (например, с помощью утилиты ) — объем свободного места должен соответствовать объему копируемого жесткого диска (при сжатии образ получится меньше, но это зависит от типа хранимых данных).

Смонтируйте бэкап-раздел

sudo mount /dev/sdXY /mnt

Теперь можно приступать

sudo dd if=/dev/sdX bs=1M conv=noerror,sync | lzma -cv > /mnt/hdd.dd.lzma

(здесь «sdX» — диск, а не раздел! для копирования без сжатия команда аналогична приведенной выше для бэкапа раздела)

В зависимости от размера жесткого диска и производительности компьютера процедура может занять продолжительное время (до нескольких часов). По завершении отмонтируйте бэкап-раздел

sudo umount /mnt

Восстановление из образа

Внимание! Данный способ предполагает полный откат к состоянию на момент создания архива с заменой всех данных!

Перед началом работы убедитесь в надежности электропитания. Подключите сетевой адаптер, если у вас ноутбук, а также по возможности используйте ИБП или стабилизатор. При высокой интенсивности записи возрастает риск повреждения диска в случае сбоя питания

Убедитесь, что ни один раздел восстанавливаемого диска не используется. Смонтируйте бэкап-раздел

sudo mount /dev/sdXY /mnt

Можно приступать к процедуре

bzip2 -dc /mnt/hdd.dd.bz | sudo dd of=/dev/sdX bs=1M conv=sync,noerror

Или же для несжатого образа

sudo dd if=/mnt/hdd.dd.bz of=/dev/sdX bs=1M conv=sync,noerror

По завершении отмонтируйте бэкап-раздел

sudo umount /mnt

Если вы хотите распаковать образ на другой жесткий диск, он должен иметь размер не меньше оригинального. В случае, если новый диск большего объема, вы сможете расширить разделы либо создать новый раздел на свободном месте с помощью parted/fdisk/gparted/etc

Не используйте оба жестких диска («дубликат» и «оригинал») одновременно! При подключении обоих дисков в системе будет по два раздела на каждый UUID, что приведет к проблемам в работе или невозможности загрузки

Монтирование образа

По аналогии с образом раздела вы можете работать с образом жесткого диска как с обычным жестким диском. В данном случае процедура несколько усложняется, поскольку образ содержит несколько разделов.

Если образ сжатый — распакуйте его. Теперь «подцепите» образ на loop-устройство

sudo losetup -fv /media/backup/sda.dd

(С ключом программа автоматически найдет свободное loop-устройство, иначе необходимо явно указывать его)

выведет на экран имя использованного устройства — если вы не работаете с другим файлами-образами (iso, шифрованными контейнерами и пр.), это скорее всего будет

Теперь мы имеем устройство, являющееся для системы жестким диском, но не имеем доступа к его разделам. Добраться до разделов поможет программа (может потребоваться установка одноименного пакета)

sudo kpartx -av /dev/loop0

(Ключ — добавить разделы для заданного устройства; — информативный вывод)

Программа выведет имена созданных устройств для разделов диска: для первого раздела, — для второго, по аналогии с разделами обычного диска. Файлы устройств будут находиться в папке

Теперь можно работать с разделами и ФС на них. Например, смонтировать бывший и записать на него файлы

sudo mount /dev/mapper/loop0p5 /mnt

По заверешнии отмонтируйте раздел

sudo umount /mnt

Удалите устройства-разделы с помощью

sudo kpartx -dv /dev/loop0

и освободите loop-устройство

sudo losetup -v -d /dev/loop0

Все! Изменения записались, а ваш образ снова стал обычным файлом

Настройка исключений

Вы можете настроить исключение файлов или каталогов при копировании с помощью rsync. Делается это с помощью ключа —exclude или —exclude-from. Первый позволяет указать исключение непосредственно в команде на исполнение. Второй позволяет загружать список исключений из файла. Пример первого варианта:

# /usr/bin/rsync -avz --progress --delete --exclude='*.jpeg' [email protected]:/var/www/html /backup

Вы скопируете директорию с сайтом, исключив из нее все картинки с расширением .jpeg. Таких исключений можно добавить сколько угодно в одной команде. Но удобнее их выносить в отдельный файл. Примерно так.

# /usr/bin/rsync -avz --progress --delete --exclude-from=exclude.lst [email protected]:/var/www/html /backup

Содержимое файла exclude.lst.

*/bitrix/managed_cache/MYSQL/*
*/bitrix/backup/*
*/bitrix/html_pages/site.ru/*
*/upload/resize_cache/*
*/bitrix/cache/*
*/log.txt
*/rating/logs/my_file.log

Это пример исключений для bitrix сайта. Все эти команды и исключения можно комбинировать и использовать в скриптах на примере того, что я привел в самом начале.

Бэкап всей Linux системы areca

Areca Backup вдобавок может запускать дополнительные действия, такие как сохранение отчета резервного копирования на вашем твердом диске, отправка его по электронной почте, запуск сценариев оболочки до или после резервного копирования. Это лекарство резервного копирования с открытым исходным кодом, предназначенное для личного использования, и позволяет юзеру выбирать набор файлов или каталогов для резервного копирования и выбирать способ резервного копирования и пространство хранения. Areca Backup — программа для резервного копирования файлов под Windows и Linux, диссеминируемая по свободной лицензии (GPL v2).

Работает в среде виртуальной машины Java. Управление процессом дополнительного копирования в программе возможно как из командной строки, так и в графическом интерфейсе. Обеспечивает полное сохранение, инкрементальное резервирование, дифференциальное резервирование, реализован механизм транзакций для критичных операций сохранения. Это программа для резервного копирования с открытым исходным кодом, ориентированная на использование обычными юзерами. Она позволяет выбрать нужные файлы для копирования, выбрать метод и место хранения.

Резервное копирование всей вашей системы Linux с помощью Rsync

Во- первых, вставьте резервный носитель (внешний жесткий диск или другой носитель). Затем найдите индентификатор диска с помощью команды «fdisk -l». В нашем случае, идентификатор диска /dev/sdb1. Смонтируйте диск в любое место по вашему выбору.

sudo mount /dev/sdb1 /mnt

Для резервного копирования всей системы, все, что вам нужно открыть терминал и выполнить следующую команду в качестве пользователя root:

sudo rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt

Эта команда создаст резервную копию всего каталога , за исключением каталогов /dev, /proc, /sys, /tmp, /run, /mnt, /media, /lost+found.

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

  • rsync – Быстрая, универсальная, локальная и удаленная утилита копирования файлов
  • -aAXv – Файлы передаются в режиме «архив», который гарантирует, что символические ссылки, устройство, разрешение, владение, время изменения, списки контроля доступа, а также расширенные атрибуты сохраняются.
  • – Исходный каталог
  • -exclude – Исключает данные каталоги из резервной копии.
  • /mnt – Это папка назначения резервной копии.

Пожалуйста, помните, что вы должны исключить каталог назначения, если он существует в локальной системе. Это позволит избежать бесконечного цикла.

Чтобы восстановить резервную копию, просто поменяйте местами путь источника и назначения в команде выше.

Пожалуйста, помните, что это подходит только для локальных и автономных систем. Если ваша система активно имеет доступ к некоторым другим системам в сети, это не лучшее решение. Так, содержание этих систем может быть постоянно обновляется каждую минуту, и некоторые файлы могут изменяться в процессе Rsync. Скажем, например, когда Rsync достигнет файла 2, содержимое предыдущего файла (File 1) может быть изменено. Это оставит вас с ошибкой зависимостей, когда вам нужно будет использовать эту резервную копию. В таких случаях, резервное копирование на основе снимка является лучшим подходом. Поскольку система получит «заморозку» перед началом процесса резервного копирования и позволит его «разморозить», когда заканчивает процесс резервного копирования, так что все файлы будут совместимы.

И это все. Надеюсь это поможет. Если вы найдете нашу статью полезной, пожалуйста, поделитесь ими в социальных, профессиональных сетей, так что другие пользователи также могут извлечь из них выгоду.

Резервное копирование Linux с помощью clonezilla

Основной механизм данного программного обеспечения включает в себя разделы изображений, частичное клонирование, UDPcast и остальное для создания резервной копии и восстановления Udpcast. Clonezilla является клоном Symantec Ghost Corporate Edition с приоткрытым исходным кодом. Пакет базируется на использовании DRBL, образов разделов, ntfsclone, partclone и udpcast, что дозволит вам получать слепок данных для резервного копирования и восстановления. В наличии есть два варианта пакета Clonezilla: Clonezilla live и Clonezilla SE (Server Edition — серверная редакция). Clonezilla live то что надо для резервной копирования и восстановления одной машины. Clonezilla — универсальное средство для бэкапа разделов или цельных дисков с гибкой настройкой процесса.

Данный дистрибутив поддерживает множество файловых систем, трудится с LVM2 и RAID-массивами (только аппаратные) и имеет локализацию для многих языков, включая русский. Clonezilla обладает понятный «пошаговый» псевдографический интерфейс, а решить возникающие вопросы поможет в изобилии вразумительная документация. Существует два типа Клонезиллы. Это Clonezilla Live и Clonezilla SE. Для резервного копирования и возобновления на одной машине используется Clonezilla Live, а для сервера — Clonezilla SE. Clonezilla — специализированный дистрибутив linux (занимится с iso, usb, hdd, pxe) для копирования разделов и архивирования в виде образа, поддерживающего сжатие (gzip, bzip2, lzo…), с записью на hdd, usb, samba, ssh помещения.

Коды завершения

0     Успешно 
1     Синтаксическая ошибка или ошибка использования 
2     Несовместимость протоколов 
3     Ошибки выбора входных/выходных файлов и каталогов 
4     Запрошенное действие не поддерживается: была сделана попытка работы с 64-битными файлами на платформе,
      которая их не поддерживает; или указан параметр, который поддерживается только клиентом и не поддерживается сервером. 
5     Ошибка при попытке начать работать по протоколу клиент-сервер 
10    Ошибка сокета ввода/вывода 
11    Ошибка ввода/вывода файла 
12    Ошибка в потоке данных rsync-протокола 
13    Ошибки при диагностике 
14    Ошибка в IPC-коде 
20    Получены сигналы или SIGUSR1, или SIGINT 
21    Вызов waitpid() возвращает ошибку 
22    Error allocating core memory buffers 
23    Незавершенная передача из-за ошибки 
24    Незавершенная передача из-за пропадания исходного файла 
30    Время ожидания при передаче/приеме данных 

Примеры синхронизации Rsync

Дальше давайте рассмотрим использование rsync, примеры синхронизации.

1. Копирование и синхронизация файлов на локальном компьютере

Rsync позволяет синхронизировать файлы и папки в пределах одной машины. Давайте сначала рассмотрим использование rsync для синхронизации файла на локальном компьютере:

Указав опцию —progress вы можете видеть сколько процентов уже скопировано, а сколько еще осталось:

2. Синхронизация папок на локальной машине

Синхронизация папок rsync выполняется так же просто, как и файлов:

Если вы хотите, чтобы все атрибуты файлов, такие, как дата изменения и создания сохранялись, необходимо использовать опцию -a:

3. Синхронизация с удаленным сервером

Ненамного сложнее синхронизировать файлы с удаленным сервером. Скопируем локальную папку documents, на удаленный сервер:

По умолчанию rsync попытается использовать транспорт ssh. Если вы хотите использовать ранее созданный сервер rsync, нужно указать это явно:

Точно также можно синхронизировать файлы с rsync из удаленного сервера:

Адрес удаленного сервера записывается в таком формате:

имя_пользователя@адрес_машины/папка/на/удаленной_машине

Синхронизация папок rsync будет выполняться на стандартном порту.

4. Синхронизация файлов по SSH

Чтобы задать протокол подключения используется опция -e. При использовании SSH все передаваемые данные шифруются и передаются по защищенному каналу, таким образом, чтобы никто не мог их перехватить. Для использования SSH вам нужно знать пароль пользователя в системе.

Синхронизация файлов rsync с удаленного сервера по ssh будет выглядеть вот так:

Если вы используете другой порт для ssh, то здесь его можно указать:

А теперь передадим данные на тот же сервер:

6. Синхронизация не всех файлов в rsync

Опции include и exclude позволяют указать какие файлы нужно синхронизировать, а какие исключить. Опции работают не только с файлами но и с директориями.

Например, скопируем все файлы, начинающиеся на букву R:

7. Удаление при синхронизации

Во время синхронизации можно удалять файлы, которых нет на машине откуда идет rsync синхронизация, для этого используется опция —delete.

Например:

Если перед выполнением этой команды создать в папке файл которого нет на удаленном сервере, то он будет удален.

8. Максимальный размер файлов

Вы можете указать максимальный размер файлов, которые нужно синхронизировать. Для этого используется опция —max-size. Например, будем синхронизировать только файлы меньше 200 килобайт:

9. Удаление исходных файлов

Есть возможность удалять исходные файлы после завершения синхронизации с удаленным сервером:

Таким образом, файл backup.tar будет удален после завершения копирования в папку /tmp/backups.

10. Режим симуляции rsync

Если вы новичок, и еще не использовали rsync, то возможно захотите посмотреть как отработает команда без применения реальных действий в файловой системе. Для этого есть опция dry-run. Команда только выведет все выполняемые действия в терминал, без выполнения реальных изменений:

11. Ограничить скорость передачи

Вы можете ограничить использование пропускной способности сети с помощью опции —bwlimit:

Как я уже писал выше, rsync синхронизирует только части файла, если вы хотите синхронизировать файл целиком используйте опцию -W:

12. Автоматическая синхронизация папок rsync

Можно расписать автоматическую синхронизацию с помощью cron. Но в случае доступа к серверу по SSH необходимо будет создать ключ и загрузить его на сервер, чтобы аутентификация проходила без запроса пароля.

Создаем ключ:

Загружаем ключ на сервер к с которым собираемся синхронизироваться:

Теперь можем переходить к настройке расписания cron. Будем запускать синхронизацию каждый день:

rsync синхронизация каталогов будет выполняться каждый день в пять утра. Подробнее о настройке расписаний Cron можно почитать в отдельной статье.

Установка rsync на Debian/Ubuntu

Устанавливаем rsync:

# apt install rsync

Правим конфиг:

# mcedit /etc/default/rsync

Находим строку RSYNC_ENABLE=false и меняем на true:

RSYNC_ENABLE=true

Создаем пустой файл конфигурации /etc/rsyncd.conf, он нужен для запуска службы. Позже мы его заполним настройками.

# touch /etc/rsyncd.conf

Запускаем rsync:

# systemctl enable --now rsync
Synchronizing state of rsync.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rsync

Проверяем, что работает:

# netstat -tulnp | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2232/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      2232/rsync          

Все в порядке, можно приступать к настройке rsync.

How to Transfer Files with Rsync over SSH

4 Апреля 2020
|

Терминал

В этом руководстве мы объясним, как копировать файлы rsync через SSH.

Когда дело доходит до передачи файлов между системами в сети, пользователи Linux и Unix имеют в своем распоряжении множество инструментов.

Наиболее популярными протоколами для передачи данных являются SSH и FTP . Хотя FTP очень популярен, всегда предпочитайте использовать SSH, так как это самый безопасный способ передачи ваших файлов.

Есть специализированные инструменты для передачи файлов через SSH , такие как и , но ни один из них не обладают всеми возможностями , которые предоставляют. может использоваться для зеркалирования данных, инкрементного резервного копирования, копирования файлов между системами и так далее.

Требования

  • Утилита должна быть установлена на обоих назначения и исходных систем. Если он не установлен, вы можете установить его, используя менеджер пакетов вашего дистрибутива:

    Ubuntu и Debian:

    CentOS и Fedora:

  • SSH доступ к удаленному компьютеру.

  • Пользователь, выполняющий команду, и удаленный пользователь SSH должны иметь соответствующие разрешения для чтения и записи файлов.

Использование для передачи файлов по SSH

С помощью вы можете передавать файлы и каталоги по SSH с и на удаленные серверы.

Общий синтаксис для передачи файлов с помощью следующего:

Где находится исходный каталог, целевой каталог — это удаленное имя пользователя SSH, а также удаленный хост SSH или IP-адрес.

Более новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию, поэтому вы можете опустить эту опцию.

Например, для передачи одного файла из локальной системы в каталог на удаленной системе с IP-адресом вы должны выполнить:

Опция означает архивный режим , который синхронизирует каталоги рекурсивно, передача специального и блочные устройства, сохранить символические ссылки, время модификации, группы, права собственности и права доступа.

Если вы не установили пароль без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.

Если файл существует на удаленном сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:

   Для передачи данных с удаленного на локальный компьютер используйте удаленное местоположение в качестве источника и локальное местоположение в качестве места назначения:

   Передача каталогов по протоколу SSH аналогична передаче файлов.

Важно знать, что в исходных каталогах по-разному трактуется косая черта. Если исходный каталог имеет косую черту, будет копироваться только содержимое исходного каталога в целевой каталог

Если косая черта не указана, исходный каталог будет скопирован в целевой каталог.

Например, чтобы перенести локальный каталог в каталог на удаленной машине, вы должны набрать:

  Используйте эту опцию, если вы хотите синхронизировать локальный и удаленный каталог. Будьте осторожны при использовании этой опции, поскольку она удалит файлы в целевом каталоге, если они не существуют в исходном каталоге.

   Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию , укажите порт с помощью параметра. Например, если SSH прослушивает порт, вы должны использовать:

   При передаче больших объемов данных рекомендуется запускать команду в сеансе экрана или использовать параметр, который указывает показывать индикатор выполнения во время передачи и сохранять частично переданные файлы:

Вы также можете прочитать , как исключить файлы или каталоги с .

Установка rsync на CentOS 8

Чаще всего rsync уже присутствует в базовой версии centos 8, но скорее всего без версии, работающей в качестве службы. Так что устанавливаем обоих:

# dnf install rsync rsync-daemon

Если у вас еще нет настроенной системы, то используйте мои статьи по установке и настройке centos 8. Запускаем rsyncd и добавляем в автозагрузку.

# systemctl enable --now rsyncd
Created symlink /etc/systemd/system/multi-user.target.wants/rsyncd.service → /usr/lib/systemd/system/rsyncd.service.

Проверяем автозагрузку:

# systemctl list-unit-files --type service | grep rsyncd
rsyncd.service enabled

Проверяем, слушает ли служба сетевой порт.

# netstat -tulpn | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      40814/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      40814/rsync         

Все в порядке, можно приступать к настройке rsync. Если вам не нужен ipv6, то можете его отключить.

Схема резервного копирования

От того, насколько тщательно вы продумаете схему резервного копирования ваших данных, зависит многое: от эффективности использования каналов передачи данных до корректности выполнения самого копирования. Конечно, если вы просто копируете каталог из точки А в точку Б — мало что может произойти непредвиденного. Однако если вы собираетесь организовывать хранение копий на нескольких серверах, то обязательно всё продумайте как можно тщательней.

В моём же примере всё достаточно просто. Рабочая станция P1 копирует данные на сервер S1, а рабочая станция P2 — на сервер S2. После чего между серверами происходит обмен содержимым каталогов с резервными копиями. Таки образом резервные копии данных каждой рабочей станции оказываются и на одном, и на другом серверах.

Очень важный момент в такой схеме — это исключить одновременный запуск синхронизации с S1 на S2 и S2 на S1, поскольку это увеличит загрузку и без того загруженного канала передачи, а также потребление ресурсов самих серверов, на которых помимо rsync ещё есть чему работать. И второй момент: думаю, логично постараться избежать запуска межсерверной синхронизации одновременно с работающим процессом резервного копирования данных с рабочей станции. Не забудьте об этом позаботиться во время настройки выполнения скриптов в cronе.

Бэкап grsync системы Linux

Grsync — это графичный интерфейс для rsync — кроссплатформенной утилиты, работающей в Linux, Windows OS и Mac OS. Grsync можно утилизировать для синхронизации вашей коллекции музыки на съемных устройствах, создания резервной копии этих на сетевом носителе, репликации раздела на другой диск, зеркалирования файлов и так далее… В данной части я расскажу о синхронизации файлов и директорий с помощью Grsync. Это инструмент резервного копирования инструктивной строки Linux, но теперь он также имеет графический интерфейс пользователя. Пользователям Linux, необыкновенно системным администраторам, это очень нравится. Его графический интерфейс называется Grsync.

Через инструктивную строку автоматическое резервное копирование может быть сделано через опытных целых администраторов. По умолчанию Grsync создает рекурсивные резервные копии данных, т.е. автоматически случит резервные копии всех подпапок, обнаруженных в исходной папке; но вы можете изменить это из вкладки Advanced Options (Наращенные опции). Как и в IuckyBackup, можно просмотреть соответствующую команду Rsync, нажав File > Rsync command line. Интерфейсы Rsync. Back In Time, IuckyBackup и Grsync дают возможность определить дополнительные команды, которые вы хотите исполнить перед резервным копированием или по его окончании.

Настройка исключений

Вы можете настроить исключение файлов или каталогов при копировании с помощью rsync. Делается это с помощью ключа –exclude или –exclude-from. Первый позволяет указать исключение непосредственно в команде на исполнение. Второй позволяет загружать список исключений из файла. Пример первого варианта:

# /usr/bin/rsync -avz --progress --delete --exclude='*.jpeg' :/var/www/html /backup

Вы скопируете директорию с сайтом, исключив из нее все картинки с расширением .jpeg. Таких исключений можно добавить сколько угодно в одной команде. Но удобнее их выносить в отдельный файл. Примерно так.

# /usr/bin/rsync -avz --progress --delete --exclude-from=exclude.lst :/var/www/html /backup

Содержимое файла exclude.lst.

*/bitrix/managed_cache/MYSQL/*
*/bitrix/backup/*
*/bitrix/html_pages/site.ru/*
*/upload/resize_cache/*
*/bitrix/cache/*
*/log.txt
*/rating/logs/my_file.log

Это пример исключений для bitrix сайта. Все эти команды и исключения можно комбинировать и использовать в скриптах на примере того, что я привел в самом начале.

Опции rsync

  • -v — Выводить подробную информацию о процессе копирования
  • -q — Минимум информации
  • -c — Проверка контрольных сумм для файлов
  • -a — Режим архивирования
  • -R — относительные пути
  • -b — создание резервной копии
  • -u — не перезаписывать более новые файлы
  • -l — копировать символьные ссылки
  • -L — копировать содержимое ссылок
  • -H — копировать жесткие ссылки
  • -p — сохранять права для файлов
  • -g — сохранять группу
  • -t — сохранять время модификации
  • -x — работать только в этой файловой системе
  • -e — использовать другой порт для ssh пример rsync -e «ssh -p 1234»
  • -z — сжимать файлы перед передачей
  • —delete — удалять файлы которых нет в источнике
  • —exclude — исключить файлы по шаблону
  • -r —recursive — перебирать директории рекурсивно
  • —no-recursive — отключить рекурсию
  • —progress — выводить прогресс передачи файла
  • —stat — показать статистику передачи
  • —version — версия утилиты

Rsync на Windows

Реализация rsync для Windows носит название cwRsync (не является аналогом программы — по сути, это утилита Rsync + библиотека Cygwin). Скачать ее можно на официальном сайте. Для загрузки доступны платная и бесплатная версии. Последняя не позволит поднять Rsync-сервер, получать поддержку, обновления безопасности и возможность работать в графическом интерфейсе.

Запуск в качестве сервера

Мы будем использовать бесплатную поставку для поднятия сервера. Переходим на страницу загрузки backuppc и дожидаемся скачивание архива. Создаем в корне системного диска папку, например, C:\Rsyncd, распаковываем содержимое загруженного архива в созданную папку.

Находим в корне содержимого файл rsyncd.conf и открываем его в блокноте. Добавляем следующие строки:

    path = /cygdrive/d/backup
    read only = false
    transfer logging = yes

    path = /cygdrive/d/Папки пользователей
    read only = false
    transfer logging = yes
    strict modes = false
    auth users = home
    secrets file = /cygdrive/c/Rsyncd/rsyncd.secrets

* в данном примере мы создали группы настроек data1 для папки D:\backup и data2 для D:\Папки пользователей. Регистр важен! Для второй папке для синхронизации требуется аутентификация.
* синтаксис для настройки аналогичен описанному выше для Linux. Только пути пишутся, начиная с /cygdrive/<буква диска>.

Регистрируем rsync в качестве службы — для этого открываем командную строку от администратора и выполняем команду:

c:\rsyncd\bin\cygrunsrv -I «RsyncServer» -p /cygdrive/c/rsyncd/bin/rsync.exe -a «—config=/cygdrive/c/rsyncd/rsyncd.conf —daemon —no-detach» -o -t auto -e «CYGWIN=nontsec binmode» -1 /cygdrive/c/rsyncd/rsyncd-stdin.log -2 /cygdrive/c/rsyncd/rsyncd-stderr.log -y tcpip -f «Rsync service»

* где c:\rsyncd или /cygdrive/c/rsyncd — каталог, куда мы распаковали скачанный архив.

Теперь открываем службы Windows, и находим зарегистрированную службу RsyncServer. Кликаем по ней правой кнопкой и выбираем Запустить:

Пробуем выполнить локальную синхронизацию. В командной строке переходим в каталог установки rsync:

C:\

cd c:\Rsyncd\bin

Выполняем команду:

rsync.exe -avv —progress 127.0.0.1::data1 /cygdrive/c/Temp

* данная команда синхронизирует содержимое модуля data1 (в нашей настройке это папка D:\backup) в папку C:\Temp (если ее нет, нужно создать перед выполнением команды).

Или в обратном направлении:

rsync.exe -avv —progress /cygdrive/c/Temp 127.0.0.1::data1

Запуск клиента

Процедура использования клиента cwRsync аналогична описанному выше для Linux. Скачиваем архив программы и распаковываем его. Запускаем командную строку и переходим в каталог 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 в Windows не умеет копировать права для файлов и папок. В результате, мы получим либо копию с неправильными ACL-правами, либо они будут назначены неправильно (права будут выданы по хаотичному алгоритму). Чтобы решить данную проблему после клонирования, можно воспользоваться утилитой robocopy — она входит в состав Windows, начиная с 7-ки.

Команда, которая позволит выполнить исправление прав:

robocopy c:\test d:\backup /MIR /SEC /SECFIX

* в данном примере мы возьмем папку c:\test в качестве источника и отзеркалируем его d:\backup. Ранее скопированные данные не будут копироваться вновь, но будут исправлены права.

Ротация логов rsync

Мы ранее указали в настройках службы rsyncd ведение лога в файл /var/log/rsyncd.log. Необходимо настроить ротацию этого лога, чтобы он не рос до бесконечности. На больших файловых серверах он очень быстро вырастет до сотен мегабайт и более.

Для этого создаем в папке /etc/logrotate.d файл с конфигурацией ротации:

# mcedit /etc/logrotate.d/rsyncd

/var/log/rsyncd.log {
size=500k
compress
rotate 4
missingok
notifempty
}

С такими настройками ротация будет происходить каждый раз, когда файл лога превысит размер в 500 кб. Храниться будут 4 версии лог файла. Эти настройки вы можете сами поменять по своему усмотрению.

Когда используете ротацию по размеру файла, не забывайте проверять, что она у вас корректно работает. В разных дистрибутивах есть нюансы на этот счет. Я их отдельно рассматриваю в статье – ротация файлов по размеру в logrotate.

Perform a Simple Backup

The simplest method for backing up over a network is to use rsync via SSH (using the -e ssh option). Alternatively, you can use the rsync daemon (see which requires much more configuration. Local backup only requires rsync and read/write access to the folders being synchronized. Below you will find examples of commands that can be used to backup in either case. It should be noted, that a network sync can be performed locally so long as the folder is shared (say by Samba) and then mounted to the machine with folder1. This process gets around having to use ssh but is less secure and should only be used in secure private networks, like at your home.

Local Backup

sudo rsync -azvv /home/path/folder1/ /home/path/folder2

Backup Over Network

sudo rsync --dry-run --delete -azvv -e ssh /home/path/folder1/ [email protected]:/home/path/folder2

An explanation of above options to commands:

  • --dry-run This tells rsync to not actually do anything. It will just write a log of what it would do to the screen. Once you’ve made sure everything will work as you expect, you have to remove this option, and run the command again to perform the actual backup.

  • --delete deletes files that don’t exist on the system being backed up.(Optional)

  • -a preserves the date and times, and permissions of the files (same as -rlptgoD).

  • With this option rsync will:
    • Descend recursively into all directories (-r),

    • copy symlinks as symlinks (-l),

    • preserve file permissions (-p),

    • preserve modification times (-t),

    • preserve groups (-g),

    • preserve file ownership (-o), and

    • preserve devices as devices (-D).

  • -z compresses the data

  • -vv increases the verbosity of the reporting process

  • -e specifies remote shell to use

  • /folder1 and folder2 In the examples above, folder1 and 2 are placeholders for the directories to be synchronized. Folder1 is the original folder, and 2 is the new folder, or existing one to be brought in sync with the first. Replace them with the folders you’d like. A / was added after folder1 so that only the contents, rather than whole folder, would be moved into the second.

A complete synopsis of all the options with the rsync command can be found in the man pages under «Options Summary». The man page for rsync can also be found on linux.die.net

Grsync

Grsync is a GUI frontend for the rsync utility. The simple interface of the GUI exposes many of the basic options available with rsync. It is useful for those who prefer not to use the command line.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: