Вступление
Со страницы руководства 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.
Если вышеприведенного недостаточно, пожалуйста, обратитесь к его справочным страницам за дополнительной информацией.
Ознакомьтесь также со следующими интересными руководствами:
- Как настроить команду rsync без пароля в Linux
- Как скопировать файл / папку из локальной системы в удаленную систему в Linux?
- Как удалить файлы git, каталоги в .gitignore из удаленного репозитория
- Как перенести базу данных MySQL на новый сервер в Ubuntu
- Как запустить команду на определенное время в Linux
- Ошибка rsync: error in socket IO – Connection timed out