🇩🇬 Как использовать команду rsync в Linux / Unix с примерами

by itisgood

Вступление

Со страницы руководства rsync Rsync – это быстрый и необычайно универсальный инструмент для копирования файлов. Он может копировать локально, на / с другого хоста через любую удаленную оболочку или на / с удаленного демона rsync. Он предлагает большое количество опций, которые контролируют каждый аспект его поведения и позволяют очень гибко задавать набор файлов для копирования. Он известен своим алгоритмом дельта-передачи, который уменьшает объем данных, передаваемых по сети, отправляя только различия между исходными файлами и существующими файлами в месте назначения.

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

Он находит файлы, которые необходимо передать с помощью алгоритма «быстрой проверки» (по умолчанию), который ищет файлы, которые изменились в размере или во время последнего изменения.

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

Дополнительные функции Rsync включают в себя:

  • Поддержка копирования ссылок, устройств, владельцев, групп и разрешений.
  • Исключение параметров, аналогично GNU tar
  • Режим исключения CVS для игнорирования тех же файлов, которые CVS игнорировал бы
  • Может использовать любую прозрачную удаленную оболочку, включая ssh или rsh
  • Не требует привилегий суперпользователя
  • Конвейерная передача файлов для минимизации задержек
  • Поддержка анонимных или аутентифицированных демонов rsync (идеально подходит для зеркалирования)

Синтаксис при использовании rsync

Используя на Локальной машине / компьютере:

rsync [OPTION…] …

Используя его через удаленную оболочку:

Вытащить файлы с удаленного хоста:

rsync [OPTION…] [USER@]REMOTE-HOST:…

Перенос файлов с локального на удаленный хост:

rsync [OPTION…] … [USER@]REMOTE-HOST:

Наиболее распространенные опции rsync:

  • -v, –verbose увеличить вывод
  • -q, –quiet подавить сообщения, не связанные с ошибками
  • -r, –recursive  рекурсивно в каталогах
  • -o, –owner сохранить владельца (только суперпользователь)
  • –progress показать прогресс во время передачи
  • -z, –compress сжать данные файла во время передачи
  • -H, –hard-links сохранить жесткие ссылки
  • -h, –human-readable вывод чисел в удобочитаемом формате
  • -W, –whole-file копировать файлы целиком. rsync копирует пошагово по умолчанию. Эта опция заставляет его копировать весь файл.
  • –delete Удалить файлы в месте назначения, но отсутствует в источнике
  • -e, указать удаленную оболочку для использования, например, ssh
  • –max-size=SIZE не передавать файлы размером больше SIZE
  • –min-size=SIZEне передавать файлы размером менее SIZE

Существует множество других опций, которые можно использовать с rsync.

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

Установка rsync

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

sudo apt -y install rsync

Установка Rsync на RHEL / CentOS / Fedora

sudo yum -y install rsync
sudo dnf -y install rsync

Установка rsync в Arch Linux / Manjaro

sudo pacman -S rsync

Установка rsync на FreeBSD

sudo pkg install rsync

Примеры использования rsync

Скопировать файл на локальном компьютере в каталог

rsync -azvh --progress forgeeks.tar /tmp/

Синхронизация файлов из одного каталога в другой на локальном компьютере с прогрессом

rsync -arvzh --progress /home/tech/django/ /home/pench/backup/

Копировать / синхронизировать файлы из локального каталога на удаленный хост

rsync -arvh --progress /home/tech/django/ user@192.168.1.4:/tmp/django-backup/

Копировать / синхронизировать файлы с удаленного хоста на локальный компьютер

rsync -arvh --progress user@192.168.1.3:/home/pench/flask/ /home/tech/flask/

Копировать / синхронизировать файлы, используя ssh.

Ssh предлагает передачу файлов по безопасному туннелю, и rsync может извлечь из этого пользу, особенно если вы передаете / синхронизируете свои файлы по небезопасной сети.

Здесь мы будем использовать опцию -e.

С удаленного на локальный

rsync -arvhe ssh --progress user@192.168.1.3:/home/pench/flask/ /home/tech/flask/

С локального на удаленный

rsync -arvhe ssh --progress /home/tech/django/ user@192.168.1.:4/tmp/django-backup/

Копировать / синхронизировать файлы с опцией исключения

Вы можете включать и исключать файлы из синхронизации с помощью регулярного выражения (регулярное выражение)

rsync -avzh --progress --include '.txt' --exclude '.pdf' user@192.168.1.3:/tmp/django-backup/ /home/tech/django/

Команда, показанная выше будут включены все файлы, заканчивающиеся расширением txt, и исключать все файлы, заканчивающиеся расширением pdf во время синхронизации.

Копировать / синхронизировать файлы, размер которых не превышает заданный размер

С локального на удаленный

rsync -avzhe ssh --max-size='50k' /home/tech/django/ user@192.168.1.4:/tmp/django-backup/

Команда, показанная выше сделает так, что любой файл размером более 50 КБ в каталоге  home/tech/django/ не будет скопирован на удаленный сайт.

Копировать / синхронизировать файлы, которые не меньше заданного размера

rsync -avzhe ssh --min-size='50k' /home/tech/django/ user@192.168.1.4:/tmp/django-backup/

Здесь любой файл размером менее 50 КБ в каталоге /home/tech/django/ не будет скопирован на удаленный сайт.

Заключение

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

Есть и другие варианты, доступные для rsync.

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

Ознакомьтесь также со следующими интересными руководствами:

 

You may also like

Leave a Comment