- Grsync и GAdmin-Rsync: графические интерфейсы для Rsync
- 1. Grsync
- Установка Grsync
- Использование программы
- Проверка
- Синхронизация файлов
- Резервное копирование по расписанию
- 2. Gadmin-Rsync
- Установка
- Использование
- Резервное копирование по расписанию
- Rsync: мощная утилита для быстрого, гибкого удаленного и локального копирования файлов
- Примеры синхронизации Rsync
- Особенности Rsync
- Синтаксис Rsync
- Опции Rsync
- Настройка сервера Rsync
- Примеры синхронизации Rsync
- 1. Копирование и синхронизация файлов на локальном компьютере
- 2. Синхронизация папок на локальной машине
- 3. Синхронизация с удаленным сервером
- 4. Синхронизация файлов по SSH
- 5. Просмотр прогресса при синхронизации
- 6. Синхронизация не всех файлов в rsync
- 7. Удаление при синхронизации
- 8. Максимальный размер файлов
- 9. Удаление исходных файлов
- 10. Режим симуляции rsync
- 11. Ограничить скорость передачи
- 12. Автоматическая синхронизация папок rsync
- Выводы
Grsync и GAdmin-Rsync: графические интерфейсы для Rsync
1. Grsync
Grsync — это графический интерфейс для rsync — кроссплатформенной утилиты, работающей в Linux, Windows OS и Mac OS. Grsync можно использовать для синхронизации вашей коллекции музыки на съемных устройствах, создания резервной копии данных на сетевом носителе, репликации раздела на другой диск, зеркалирования файлов и так далее. В этой части я расскажу о синхронизации файлов и директорий с помощью Grsync.
Установка Grsync
В Ubuntu/Debian/Linux Mint:
Grsync имеется в системных репозиториях, поэтому вы можете установить ее с помощью команды:
В системах на базе RHEL:
Теперь запустите Grsync из меню или Dash. Интерфейс программы после запуска имеет вид:
Интерфейс имеет три вкладки: Basic, Advanced и Extra, названия которых говорят сами за себя. При выборе любой опции появляется всплывающее окно с подсказкой.
Использование программы
В этом руководстве я буду использовать две системы Ubuntu 14.04. IP-адрес моей локальной системы 192.168.1.200/24, а удаленной системы — 192.168.1.250/24.
Теперь я собираюсь сделать резервную копию директории /home/sk/Downloads/ моей локальной системы и сохранить ее в директории /home/sk/sync/ удаленной системы с помощью Grsync.
Теперь кликните пункт Simulation в меню File.
Вам предложат ввести пароль удаленного пользователя.
Если все прошло удачно, вы увидите сообщение «Completed successfully».
Теперь кликните Execute, чтобы сохранить изменения и начать передачу файлов.
После завершения передачи должно вновь появиться сообщение «Completed successfully».
Проверка
Перейдите в директорию на удаленной системе (т.е. /home/sk/sync) и проверьте наличие в ней файлов резервной копии.
Синхронизация файлов
Выше мы передавали файлы и/или директории вручную. Если вы хотите синхронизировать файлы удаленно через определенные промежутки времени, необходимо выполнить описанные ниже действия.
Для синхронизации файлов нам необходимо создать новую сессию. Назовем ее Synchronize. Кликните (+) в интерфейсе Grsync.
Будет создана новая сессия под названием Synchronize. Здесь вам необходимо ввести удаленную директорию (192.168.1.250:/home/s/sync) в качестве исходной, и локальную (/home/sk/Downloads) в качестве директории назначения. Обратите внимание, что не нужно вводить полный путь к директории назначения. Например, если я хочу синхронизировать содержимое директории /home/sk/sync с удаленного сервера с локальной системой, то просто ввожу местоположение директории назначения. В моем случае это директория sync в домашней директории удаленного сервера (т.е. /home/sk/). Поэтому я ввожу путь назначения /home/sk.
Проверьте наличие ошибок, кликнув кнопку Simulation в меню File. Если все в порядке, запустите процесс, кликнув Execute.
Резервное копирование по расписанию
Для создания резервных копий по расписанию добавьте обе сессии в файл crontab вашей локальной системы:
Добавьте обе сессии (то есть сессию по умолчанию и Synchronize) по очереди.
Приведенное выше задание для cron выполняет резервное копирование с локальной в удаленную директории в 11.00, а процесс синхронизации файлов в 12.00 соответственно. Сохраните файл crontab.
2. Gadmin-Rsync
GAdmin-Rsync — это графический интерфейс для команды Rsync на базе C/GTK+. Эта утилита позволяет выполнять резервные копии файлов и директорий с локальной системы на локальную, с локальной на удаленную, и наоборот.
Установка
Вы также можете скомпилировать программу из исходного кода, как показано ниже.
Скачайте gadmin-rsync-x.x.x.tar.gz, распакуйте архив и установите программу.
Теперь вы можете запустить ее, вводя в терминале «gadmin-rsync», или из системного меню GNOME или KDE.
Использование
При первом запуске вас попросят задать имя для новой резервной копии. Введите его и кликните «Apply».
Затем выберите тип резервной копии: Local backup, Local to remote backup или Remote to local backup. В моем случае я выбрал тип local to remote backup. Кликните кнопку Forward.
Выберите директорию, резервную копию которой вы хотите сделать.
Введите IP-адрес удаленного сервера, путь на удаленной машине для размещения резервной копии, имя пользователя и пароль удаленного пользователя.
Теперь кликните кнопку Run selected backup в правом верхнем углу для запуска резервного копирования.
Теперь запустится процесс резервного копирования.
Резервное копирование по расписанию
В версии 0.1.7 я не смог запустить резервное копирование через заданный интервал времени. Когда я пытался сохранить расписание, получал ошибку:
Но кто-то с форума Askubuntu нашел решение этой проблемы. Надеюсь, оно вам поможет.
Rsync: мощная утилита для быстрого, гибкого удаленного и локального копирования файлов
Rsync разработан для замены rcp – древней программы для удаленного копирования под Unix. Благодаря широким возможностям синхронизации и передачи файлов, rsync часто применяется для создания зеркал.
Использование хитроумного алгоритма, позволяет rsync передавать только изменения в файлах, причем для выявления изменений ему не надо сравнивать два файла. Кроме того, rsync производит сжатие на лету, позволяя тем самым передавать файлы с максимальной эффективностью.
Кроме вышеописанных вкусностей, rsync обладает также и несколькими полезными возможностями обеспечения безопасности. Он поддерживает ssh – рекомендованный протокол для безопасной передачи данных; перед обработкой информации производит ее запись во временный файл, чтобы ничего не случилось с оригиналом, наконец, он поддерживает специальный режим безопасной отладки команд.
Rsync прост в использовании, но не является программой «click-and-play». Это —мощный инструмент, который может быть очень полезным, но не стоит забывать об осторожности, так как его с помощью легко что-нибудь испортить.
Синтаксис утилиты
Синтаксис утилиты простой и довольно обыденный.
rsync [опции] источник [приемник]
Указав только источник, мы увидим список файлов без операции копирования.
Опции и примеры
Для простоты понимания, операции синхронизации привожу сперва локально.
Быстрый способ синхронизировать два каталога, это использовать опцию -a:
rsync -a foobar_src/ foobar_dst/
В данном случае файлы и директории из источника скопируются в приемник, при этом, если там были файлы, то совпавшие по имени будут перезаписаны, а остальные не тронуты.
Опция -a задает архивный режим работы утилиты, и является эквивалентом набора опций:
-r, —recursive — рекурсивный режим;
-l, —links — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься;
-p, —perms — перенос прав;
-t, —times — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации;
-g, —group — установить группу конечного файла таким же, как и у исходного;
-o, —owner — установить владельца конечного файла таким же, как и у исходного;
-D, — same as —devices —specials — установить тип файла устройства и файла специального типа таким же, как у исходного.
В итоге получаем копию директории источника. Кстати, это можно использовать при переносе ОС на другой винчестер, подправив /etc/fstab, установив/переустановив grub на новом винте — получаем рабочую систему, но это уже другая тема.
Для вывода информации о работе утилиты, существует опция —v, —verbose. Чем больше опций -v, тем боле информативным будет вывод утилиты. Максимальная информативность достигается при четырех опциях -v, —verbose.
Если у нас содержится в директории источника актуальная информация, то чтобы не засорять приемник информацией, которая в процессе работы была удалена или перемещена в источнике, нужно старые файлы и директории удалить. Для этого есть несколько опций удаления, каждая из которых предоставляет свой алгоритм удаления. Их аж шесть!
—del — сокращенная форма —delete-during ;
—delete — просто удалить посторонние файлы из приемника;
—delete-before — приемник удаляет перед передачей;
—delete-during — приемник удаляет в процессе передачи, но не перед;
—delete-delay — отложенное удаление/найти файлы для удаления в процессе передачи, но удалить после передачи;
—delete-after — приемник удаляет после передачи, но не перед ней;
—delete-excluded — так же удалить исключенные файлы в приемнике, для этого задается шаблон ( —exclude=PATTERN ).
Допустим у нас на приемнике есть более свежие файлы, и мы не хотим что бы они были перезаписаны старыми из источника, то для этого применяется ключ -u, —update.
-u, —update — пропустить файлы, если на приемнике файл новее.
Не стоит пугаться если изменились даты директорий, т.к. сами файлы небыли перезаписаны.
Порой файлы могут повредится или быть модифицырованы, но совпадать и датой и размером. То можно использовать проверку контрольной суммы, опция -c, —checksum.
Моей задачей было разобраться, как сделать резервную копию коллекций фотографий, музыки, наработок по университету и работе. При этом в источнике информация всегда актуальная, а то что удалено — мусор. Пример для решения моей задачи:
rsync -auvv —delete-during foobar_src/ foobar_dst/
Это обновит мой приемник, если он был уже чем то заполнен — вычистит то, чего нет в источнике, но не затронет файлы которые поновее, выведет статистику и состояние по каждому файлу.
Удаленная работа
Кроме того, очень полезным будет его способность работать через ssh. Что обеспечивает шифрование канала, что очень важно, если вы синхронизируете два сервера в сети интернет. Для уменьшение трафика, rsync так-же умеет сжимать данные, при передаче по сети.
Необходимы следующие опции:
-e — задать удаленный шелл для использования;
-z — сжимать передаваемые данные, либо задать:
-compress-level=9 — сжатие с установкой уровня компрессии.
Пример копирования с удаленного хоста по протоколу ssh:
rsync -avv —delete-during -compress-level=9 -e «ssh -p remote_ssh_port» user@host:/dir/to/foobar_src foobar_dst/
При этом, на стороне источника нужно иметь установленную утилиту rsync.
Надеюсь эта информация будет полезна многим. Больше информации про утилиту rsync вы сможете найти в ее же документации, благо она хорошо описана.
Там же вы можете найти информацию о том, как поднять дэмон rSync для непосредственного подключения без использования удаленного ssh шелла, а так же описание множества других опций на любой вкус и цвет.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Примеры синхронизации Rsync
Потребность передачи файлов между серверами и компьютерами возникает довольно часто, особенно при администрировании нескольких устройств. Обычно для этих целей удобно использовать ssh и scp, но если файл очень большой, а изменена была только небольшая его часть, или вы хотите настроить постоянную автоматическую синхронизацию, то scp уже явно неидеальный вариант. Для этого существуют специальные утилиты. В этой статье мы рассмотрим одну из них. А именно будет рассмотрена rsync синхронизация в linux.
Rsync — это программное обеспечение с открытым исходным кодом, которое можно использовать для синхронизации файлов и папок с локального компьютера на удаленный и наоборот. Примечательная особенность Rsync — возможность передавать зашифрованные файлы с помощью SSH и SSL. Кроме того, здесь передача файлов выполняется в один поток, в отличие от других подобных программ, создающий отдельный поток для передачи каждого файла. Это увеличивает скорость и убирает дополнительные задержки, которые становятся проблемой при передаче большого количества маленьких файлов.
Возможно использование rsync для синхронизации файлов, каталогов, при этом может применяться сжатие и шифрование. Программа впервые была применена в июне 1996 года, она разработана Эндрю Тридгелом и Полом Маккерасом. Rsync синхронизация выполняется по протоколу RSYNC, который специально разработан не просто для передачи файлов между двумя компьютерами, а для их синхронизации. Если точнее, то передается не файл полностью, а только то, что было изменено.
Как вы уже поняли, в этой статье мы рассмотрим rsync примеры синхронизации, настройку rsync, а также ее основные возможности и опции.
Особенности Rsync
Давайте сначала рассмотрим примечательные особенности Rsync:
- Возможность поддерживать синхронизацию целых деревьев каталогов;
- Можно сохранять символические ссылки, жесткие ссылки, владельцев и права файла, метаданные и время создания;
- Не требует особых привилегий;
- Передача файлов одним потоком;
- Поддержка RSH, SSH в качестве транспорта;
- Поддержка анонимного Rsync.
Синтаксис Rsync
Мы не будем подробно останавливаться на установке этой утилиты в системе. Она очень популярна, поэтому вы можете установить ее с помощью своего пакетного менеджера из официальных репозиториев. В Ubuntu команда установки будет выглядеть вот так:
sudo apt-get install rsync
А теперь, уже по традиции подобных статей, рассмотрим синтаксис команды rsync:
$ rsync опции источник приемник
В качестве источника и приемника может выступать удаленная или локальная директория. Например, ssh, rsync, samba сервер или локальная директория. Опции задают дополнительные параметры rsync.
Опции Rsync
Теперь давайте кратко рассмотрим параметры rsync. Здесь перечислены не все опции. Для более подробной информации смотрите man rsync:
- -v — Выводить подробную информацию о процессе копирования;
- -q — Минимум информации;
- -c — Проверка контрольных сумм для файлов;
- -a — Режим архивирования, когда сохраняются все атрибуты оригинальных файлов;
- -R — Относительные пути;
- -b — Создание резервной копии;
- -u — Не перезаписывать более новые файлы;
- -l — Копировать символьные ссылки;
- -L — Копировать содержимое ссылок;
- -H — Копировать жесткие ссылки;
- -p — Сохранять права для файлов;
- -g — Сохранять группу;
- -t — Сохранять время модификации;
- -x — Работать только в этой файловой системе;
- -e — Использовать другой транспорт, например, ssh;
- -z — Сжимать файлы перед передачей;
- —delete — Удалять файлы которых нет в источнике;
- —exclude — Исключить файлы по шаблону;
- —recursive — Перебирать директории рекурсивно;
- —no-recursive — Отключить рекурсию;
- —progress — Выводить прогресс передачи файла;
- —stat — Показать статистику передачи;
- —version — Версия утилиты.
Настройка сервера Rsync
Как вы понимаете, нельзя просто так взять и закинуть на первую попавшуюся машину файлы без установки на нее специального программного обеспечения. На удаленной машине должен быть установлен и настроен RSYNC, SSH, Samba или FTP сервер, с помощью которого Rsync сможет авторизоваться на машине и передавать туда файлы.
Рассмотрим минимальную настройку сервера rsync, для того чтобы могло быть выполнено копирование файлов rsync. Он позволит нам не только синхронизировать файлы на машину, но и получать их от туда.
Сначала создайте конфигурационный файл со следующим содержимым:
sudo vi /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
[share]
path = /tmp/share/
hosts allow = 192.168.56.1
hosts deny = *
list = true
uid = root
gid = root
read only = false
Здесь мы задаем путь к нашей папке для синхронизации, разрешаем доступ к серверу только с ip адреса (192.168.56.1) и запрещаем все остальные подключения. Параметры uid и gid указывают пользователя и группу, от которых будет запущен демон. Лучше не использовать root, а указать пользователя nobody и выдать ему права на ту папку, в которую будет выполняться синхронизация каталогов rsync.
Настройка rsync завершена, остается сохранить файл, запустить сервер rsync и добавить его в автозагрузку:
sudo systemctl start rsync
sudo systemctl enable rsync
Сервер будет предоставлять доступ к файлам без запроса пароля.
Примеры синхронизации Rsync
Дальше давайте рассмотрим использование rsync, примеры синхронизации.
1. Копирование и синхронизация файлов на локальном компьютере
Rsync позволяет синхронизировать файлы и папки в пределах одной машины. Давайте сначала рассмотрим использование rsync для синхронизации файла на локальном компьютере:
rsync -zvh file /tmp/backups/
Указав опцию —progress вы можете видеть сколько процентов уже скопировано, а сколько еще осталось:
rsync -zvh —progress file /tmp/backups/
2. Синхронизация папок на локальной машине
Синхронизация папок rsync выполняется так же просто, как и файлов:
rsync -zvh /home/user/documents /tmp/backups/
Если вы хотите, чтобы все атрибуты файлов, такие, как дата изменения и создания сохранялись, необходимо использовать опцию -a:
rsync -azvh /home/user/documents /tmp/backups/
3. Синхронизация с удаленным сервером
Ненамного сложнее синхронизировать файлы с удаленным сервером. Скопируем локальную папку documents, на удаленный сервер:
rsync -avz /home/sergiy/tmp/ root@192.168.56.102:/home/
По умолчанию rsync попытается использовать транспорт ssh. Если вы хотите использовать ранее созданный сервер rsync, нужно указать это явно:
rsync -avz /home/sergiy/tmp/ rsync://192.168.56.102:/share
Точно также можно синхронизировать файлы с rsync из удаленного сервера:
rsync -avz root@192.168.56.102:/home/ /home/sergiy/tmp/
Адрес удаленного сервера записывается в таком формате:
имя_пользователя@ адрес_машины /папка/на/удаленной_машине
Синхронизация папок rsync будет выполняться на стандартном порту.
4. Синхронизация файлов по SSH
Чтобы задать протокол подключения используется опция -e. При использовании SSH все передаваемые данные шифруются и передаются по защищенному каналу, таким образом, чтобы никто не мог их перехватить. Для использования SSH вам нужно знать пароль пользователя в системе.
Синхронизация файлов rsync с удаленного сервера по ssh будет выглядеть вот так:
rsync -avzhe ssh root@192.168.56.102:/root/install.log /tmp/
Если вы используете другой порт для ssh, то здесь его можно указать:
rsync -avzhe «ssh -p 22» root@192.168.56.102:/root/install.log /tmp/
А теперь передадим данные на тот же сервер:
rsync -avzhe ssh backup.tar root@192.168.0.101:/backups/
5. Просмотр прогресса при синхронизации
Для просмотра прогресса копирования файла с одной машины на другую используется опция progress:
rsync -avzhe ssh —progress /home/user/documents root@192.168.56.102:/root/documents
6. Синхронизация не всех файлов в rsync
Опции include и exclude позволяют указать какие файлы нужно синхронизировать, а какие исключить. Опции работают не только с файлами но и с директориями.
Например, скопируем все файлы, начинающиеся на букву R:
rsync -avze ssh —include ‘R*’ —exclude ‘*’ root@192.168.56.102:/root/documents/ /root/documents
7. Удаление при синхронизации
Во время синхронизации можно удалять файлы, которых нет на машине откуда идет rsync синхронизация, для этого используется опция —delete.
rsync -avz —delete root@192.168.56.102:/documents/ /tmp/documents/
Если перед выполнением этой команды создать в папке файл которого нет на удаленном сервере, то он будет удален.
8. Максимальный размер файлов
Вы можете указать максимальный размер файлов, которые нужно синхронизировать. Для этого используется опция —max-size. Например, будем синхронизировать только файлы меньше 200 килобайт:
rsync -avzhe ssh —max-size=’200k’ /user/documents/ root@192.168.56.102:/root/documents
9. Удаление исходных файлов
Есть возможность удалять исходные файлы после завершения синхронизации с удаленным сервером:
rsync —remove-source-files -zvh backup.tar /tmp/backups/
Таким образом, файл backup.tar будет удален после завершения копирования в папку /tmp/backups.
10. Режим симуляции rsync
Если вы новичок, и еще не использовали rsync, то возможно захотите посмотреть как отработает команда без применения реальных действий в файловой системе. Для этого есть опция dry-run. Команда только выведет все выполняемые действия в терминал, без выполнения реальных изменений:
rsync —dry-run —remove-source-files -zvh backup.tar /tmp/backups/
11. Ограничить скорость передачи
Вы можете ограничить использование пропускной способности сети с помощью опции —bwlimit:
rsync —bwlimit=100 -avzhe ssh /user/home/documents/ root@192.168.56.102:/root/documents/
Как я уже писал выше, rsync синхронизирует только части файла, если вы хотите синхронизировать файл целиком используйте опцию -W:
rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
12. Автоматическая синхронизация папок rsync
Можно расписать автоматическую синхронизацию с помощью cron. Но в случае доступа к серверу по SSH необходимо будет создать ключ и загрузить его на сервер, чтобы аутентификация проходила без запроса пароля.
ssh-keygen -t rsa
Загружаем ключ на сервер к с которым собираемся синхронизироваться:
ssh-copy-id -i /home/sk/.ssh/id_rsa.pub sk@192.168.1.250
Теперь можем переходить к настройке расписания cron. Будем запускать синхронизацию каждый день:
00 05 * * * rsync -azvre ssh /home/user/Downloads/ 192.168.56.102:/share
rsync синхронизация каталогов будет выполняться каждый день в пять утра. Подробнее о настройке расписаний Cron можно почитать в отдельной статье.
Выводы
Теперь вы знаете все что нужно, чтобы настройка rsync была выполнена правильно. Мы рассмотрели некоторые примеры rsync синхронизации. И теперь вы можете использовать все это для решения своих задач. Я упустил какую-то полезную информацию или у вас остались вопросы? Напишите в комментариях!