голосование
PHP
Javascript
BASH
HTML
Firebird
Программы
Хостинг
Майнинг
Ресурсы
GIT
SEO
Oracle
Python
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Как синхронизировать папки rsync BASH

Добрались руки до rsync. Довольно большими возможностями обладает утилита rsync. Я просмотрел интересную статью: Rsync Примеры синхронизации и решил попробовать написать свой скрипт sh для синхронизации данных в двух разных папках. Кто-то скажет что скрипт в одну строку не скрипт, но часто короткие и простые решения на sh заменяют массу скриптов на PHP и ему подобных языков программирования. Допустим у вас есть некий шаблон для приложений и вы хотите его размножить. Можно копировать файлы при помощи команды cp. О команде cp читайте на странице как скопировать папку cp BASH. Если у вас мало файлов, то можно воспользоваться командой cp, но что делать если файлов много и они весят сотни мегабайт. Тут поможет утилита rsync. Рсинг заменяет только изменённую часть файла. Он может рекурсивно проникать в папки и синхронизировать содержимое. При копировании файлов можно включить сжатие файлов. Это хорошо помогает при синхронизации с удалённым сервером.

Посмотрите на пример. Создайте 2 папки: dir1, dir2. В папке dir1 создайте несколько файлов touch file{1..5}.txt. После синхронизации папка dir2 получит содержимое папки dir1. Одним словом, появится вторая зеркальная копия дерева файлов.


./dir1:
|_test
   |_config  f1.txt  file2.txt  file3.txt  file4.txt  file5.txt

./dir2:
|_test

Покажу вам простейшую схему того, как работает как работает rsync: rsync опции источник приемник. В опциях указывают ключи. В источниках и приёмниках помещают папки или файлы.

Опции rsync

  1. -v — Выводить подробную информацию о процессе копирования
  2. -q — Минимум информации
  3. -c — Проверка контрольных сумм для файлов
  4. -a — Режим архивирования
  5. -r — относительные пути
  6. -b — создание резервной копии
  7. -u — не перезаписывать более новые файлы
  8. -l — копировать символьные ссылки
  9. -L — копировать содержимое ссылок
  10. -H — копировать жесткие ссылки
  11. -p — сохранять права для файлов
  12. -g — сохранять группу
  13. -t — сохранять время модификации
  14. -x — работать только в этой файловой системе
  15. -e — использовать другой транспорт
  16. -z — сжимать файлы перед передачей
  17. --delete — удалять файлы которых нет в источнике
  18. --exclude — исключить файлы по шаблону
  19. --recursive — перебирать директории рекурсивно
  20. --no-recursive — отключить рекурсию
  21. --progress — выводить прогресс передачи файла
  22. --stat — показать статистику передачи
  23. --version — версия утилиты

Если вы никогда не работали с rsync, то поработайте в тесовом режиме. Ключ --remove-source-files позволит утилите rsync удалить все файлы сразу после выполнения синхронизации. Используйте этот ключ осторожно. Ключ --delete удаляет файлы которых нет в папке-источнике. Это очень удобно! Вы можете сделать зеркальные копии содержимого папок.

Примеры rsync


#тестовая работа, показано удаление файлов после работы rsync
rsync --dry-run --remove-source-files -zvr /.../rsync/dir1/* /.../rsync/dir2/

#удаление файлов во время синхронизации
rsync -zvr --delete /.../rsync/dir1/* /.../rsync/dir2/

Очень часто в различных языках программирования применяют файл config с настройками. Заменять конфиг новым файлом нельзя. На каждой папке свой уникальный конфиг. Ключ --exclude 'config' позволяет исключать файл из синхронизации.


#при синхронизации не учитывается файл config
rsync -zvr --delete --exclude 'config' /.../rsync/dir1/* /.../rsync/dir2/

Возможно кто-то попробует синхронизировать данные при помощи git. Скажу что такой вариант возможен, но есть одна проблема - размер папки .git увеличится в разы. Рсинг справится с этой задачей быстрее. Во время работы он меньше потребляет ресурсов. Вы можете ограничить скорость передачи данных при помощи ключа --bwlimit


#--bwlimit=100 ограничивает пропускную способность 
#при копировании бэкапа в 100 Кбайт в сек.
rsync -zvr --delete --exclude 'config' --bwlimit=100 /.../rsync/dir1/* /.../rsync/dir2/
просмотры: 577, уровень: лёгкий уровень, рейтинг: 0, дата: 2017-11-29 13:57:02
проголосовать:

Комментарии:






поиск
сайты друзей
банеры
Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://www.2domains.ru домен RU домен RU всего за 99 рублей
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP