Параметры rsync: Использование rsync в примерах [АйТи бубен]

Содержание

Использование rsync в примерах [АйТи бубен]

rsync (англ. Remote Synchronization) — программа для UNIX- подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодировку данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.

Демон rsyncd, реализующий протокол rsync, по умолчанию использует Порты TCP порт 873.

Утилита rsync использует алгоритм, разработанный австралийским программистом Эндрю Триджеллом, для эффективной передачи структур (например, файлов) по коммуникационным соединениям в том случае, когда принимающий компьютер уже имеет отличающуюся версию этой структуры. Принимающий компьютер разделяет свою копию файла на неперекрывающиеся куски фиксированного размера S, и вычисляет контрольную сумму для каждого куска: MD4-хеш и более слабый rolling checksum, и отправляет их серверу, с которым синхронизируется. Сервер, с которым синхронизируются, вычисляет контрольные суммы для каждого кусочка размера S в своей версии файла, в том числе перекрывающиеся куски. Это может быть эффективно подсчитано ввиду особого свойства rolling checksum: если rolling checksum байт от n до n+S-1 равняется R, то rolling checksum байт от n+1 до n+S может быть посчитана исходя из R, байта n и байта n+S без необходимости учитывать байты, лежащие внутри этого интервала. Таким образом, если уже подсчитана rolling checksum байт 1-25, то для подсчета rolling checksum байт 2-26 используется предыдущая контрольная сумма и байты 1 и 26.

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

-delete отличается от –delete-after тем, что удаление производится вначале, а не на завершающей стадии процесса бэкапа. –delete-after работает быстрее, так как не требует лишней стадии обхода списка файлов, но требует использования опции –force для обработки таких ситуаций как удаление файла и появление директории с тем же именем;

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

rsync строит упорядоченный список на основе параметров –include/–exclude, указанных в командной строке. Rsync проверяет каждое имя файла или каталога относительно соответствия каждому шаблону включения/исключения. В действие вступает первое же совпадение. Если совпавший шаблон исключающий, то соответствующий файл пропускается. Если шаблон включающий, то не пропускается. При отсутствии подходящих шаблонов к имени файла он также не пропускается.

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

Заметьте, что при использовании параметра -r (он подразумевается при -a) каждая отдельная часть каждого пути просматривается сверху вглубь, так что шаблоны включения/исключения применяются рекурсивно к каждой такой части.

Также обратите внимание, что параметры –include и –exclude допускают только по одному шаблону каждый. Для добавления множества шаблонов используйте параметры –include-from и –exclude-from или множество параметров –include и –exclude соответственно.

Шаблоны могут быть заданы в нескольких формах. Правила для них таковы:

Правила +/- наиболее полезны в списках, читаемых из файла, позволяя Вам иметь один общий список, который содержит как исключающие, так и включающие шаблоны.

Если Вы завершите исключающий список указанием –exclude ‘*’, то обратите внимание, что из-за рекурсивного характера алгоритм остановится на родительских каталогах и не будет пробовать файлы внутри них за исключением тех случаев, когда Вы явно укажете включать родительские каталоги файлов, которые Вы хотите включить. Для включения всех каталогов используйте –include ‘*/’ до –exclude ‘*’.

Несколько примеров включения/исключения:

    --exclude "*.o" исключить все имена файлов, соответствующие *.o 
    --exclude "/foo" исключить файл с именем foo в верхнем каталоге 
    --exclude "foo/" исключить любой каталог с именем foo 
    --exclude "/foo/*/bar" исключить любой файл с именем bar в двух уровнях вглубь по иерархии от
каталога "foo" в вершине дерева 
    --exclude "/foo/**/bar" исключить любой файл с именем bar в двух и более уровнях вглубь
по иерархии от верхнего каталога "foo" 
    --include "*/" --include "*.c" --exclude "*" включить только каталоги и файлы с Си-исходниками 
    --include "foo/" --include "foo/bar.c" --exclude "*" включит только foo/bar.c (каталог foo/ нужно включать явно, иначе он будет пропущен из-за "*")
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    Время ожидания при передаче/приеме данных 
CVSIGNORE    Переменная окружения CVSIGNORE дополняет исключающие шаблоны из файла .cvsignore. За деталями см. параметр --cvs-exclude. 
RSYNC_RSH    Переменная окружения RSYNC_RSH позволяет переопределить программу удаленной оболочки, используемую rsync'ом как транспорт.
             Параметры  командной строки для оболочки указываются после имени программы, также как и для параметра -e. 
RSYNC_PROXY  Переменная окружения RSYNC_PROXY позволяет указать rsync-клиенту использовать web-прокси для подключения к rsync-серверу.
             Вы должны указать прокси в виде пары hostname:port . 
RSYNC_PASSWORD    Установка значения RSYNC_PASSWORD позволяет осуществить rsync-соединение к rsync-серверу без вмешательства
                  пользователя для ввода    пароля. Заметьте, что это не тоже самое,
                  что и пароль для транспортной оболочки, например, ssh. 
USER или LOGNAME    Переменные окружения USER или LOGNAME используются для определения пользователя по умолчанию,
                    имя которого предоставляется rsync-серверу для аутентификации. 
HOME    Переменная HOME используется для поиска пользовательского файла .cvsignore.
#!/bin/bash
 
# полный путь к вашему списку каталогов
BACKUP_LST=/etc/backup/backup.lst
 
cat ${BACKUP_LST} | while read Res; do
    rsync -e ssh -acq --delete --force $Res backup@B:/var/backup$Res
done

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

Потребность передачи файлов между серверами и компьютерами возникает довольно часто, особенно при администрировании нескольких устройств. Обычно для этих целей удобно использовать 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/ [email protected]:/home/

 

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

rsync -avz /home/sergiy/tmp/ rsync://192.168.56.102:/share

 

 

 

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

rsync -avz [email protected]:/home/ /home/sergiy/tmp/

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

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

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

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

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

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

rsync -avzhe ssh [email protected]:/root/install.log /tmp/

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

rsync -avzhe "ssh -p 22" [email protected]:/root/install.log /tmp/

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

rsync -avzhe ssh backup.tar [email protected]:/backups/

5. Просмотр прогресса при синхронизации

Для просмотра прогресса копирования файла с одной машины на другую используется опция progress:

rsync -avzhe ssh --progress /home/user/documents [email protected]:/root/documents

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

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

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

rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/root/documents/ /root/documents

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

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

Например:

rsync -avz --delete [email protected]:/documents/ /tmp/documents/

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

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

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

rsync -avzhe ssh --max-size='200k' /user/documents/ [email protected]:/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/ [email protected]:/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 [email protected]

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

crontab -e

00 05 * * * rsync -azvre ssh /home/user/Downloads/ 192.168.56.102:/share

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

Выводы

Теперь вы знаете все что нужно, чтобы настройка rsync была выполнена правильно. Мы рассмотрели некоторые примеры rsync синхронизации. И теперь вы можете использовать все это для решения своих задач. Я упустил какую-то полезную информацию или у вас остались вопросы? Напишите в комментариях!

Rsync — Пингвиньи радости

Материал из Пингвиньи радостей

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

Rsync это программа для синхронизации файлов и каталогов с минимизацией трафика.

Rsync может быть запущен в режиме сервера для организации передачи файлов клиентам через порт и в режиме консольной файловой команды.
Порт используемый RSYNC-сервером по умолчанию TCP/873.

Сайт проекта rsync.samba.org

Установка

Пакет присутствует в хранилище пакетов debian.
Для установки пакета

После установки пакет готов к использованию.

Некоторые часто используемые команды

  # rsync --daemon                         - запуск rsync-сервера вручную с файлом конфигурации по умолчанию /etc/rsyncd.conf
  # /etc/init.d/rsync restart              - перезапуск rsync-сервера (при настройке запуска в режим демона)
  # rsync [options] /source/ /target/      - выполнение синхронизации содержимого каталога target из каталога source

Настройка RSYNC-сервера

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

Для запуска RSYNC-сервера вручную с произвольным файлом конфигурации может быть использована команда

  # rsync --daemon --config=FILE

Для включения автозапуска сервера Rsync следует

  • в файл /etc/default/rsync добавить параметры
  RSYNC_ENABLE=true
     где переменная RSYNC_ENABLE может принимать значения:
        false - запретить запуск сервера rsync,
        true  - запускать самостоятельный сервер rsync
        inetd - запускать сервер rsync при необходимости из супер-сервера inetd.
  RSYNC_CONFIG_FILE=/etc/rsyncd.conf
     если параметр не указан файл конфигурации будет считываться из /etc/rsyncd.conf,
     кроме тех случаев, когда rsync запускается поверх удаленной оболочки и не от
     суперпользователя. В этом случае выбирается rsyncd.conf из текущего каталога
     на удаленной машине (обычно $HOME).
  RSYNC_OPTS=opts
     добавление особенных (отличных от устанавливаемых по умолчанию) параметров запуска
     например, может быть указан адрес и/или порт, на котором следует принимать соединения
     "--address=192.168.0.10" (по умолчанию - все локальные адреса)
     "--port=8730" (по умолчанию - 873), чтобы указать на каком порту следует принимать соединения
  RSYNC_NICE=level
     изменение приоритета процесса в планировщике задач
  • и перезапустить rsync-сервер.

В файле конфигурации rsyncd.conf могут быть использованы параметры

  uid = rsyncd
        Идентификатор пользователя, от имени которого запускается rsync-сервер.
  gid = mirror
        Идентификатор группы, от имени которой запускается rsync-сервер.
  max connections = 50
        Максимальное количество одновременных подключений.
  read only = yes
        Установка доступа к ресурсам "только чтение".
  list = yes
        Установка разрешения клиентам получать список файлов.
        Если запретить просмотр списка файлов, то клиенты смогут получить файл только зная его точное имя,
  syslog facility = local5
        Установка уровня отладочных сообщений для syslog.
  dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.mp3
        Установка шаблонов имён файлов, содержимое которых не нужно сжимать при передаче. 
  use chroot = yes
        Установка изменения корневого каталог rsync-сервера на указанный в path.
        Изменение каталога может использоваться для повышения безопасности.
  outgoing chmod = Fu=rw,g=rw,o=,Du=rwx,g=rx,o=
        Установка права доступа к отдаваемым файлам.
        Поскольку протокол rsync позволяет вместе с содержимым файлов передавать права доступа к ним и идентификаторы
        владельца и группы, можно задать особые права доступа, которые будут заменять реальные права доступа к данному
        файлу или каталогу при его передаче по сети.
  [media]
        В квадратных скобках задаётся имя секции.
        Каждая секция обязана иметь собственный параметр path.
        Дополнительно в ней могут быть переопределены и значения глобальных параметров.
     path = /media/
     comment = media files
  Пример файла конфигурации /etc/rsyncd.conf
  syslog facility=daemon                  - стартовать в режиме демона 
  pid file=/var/run/rsyncd.pid            - с сохранением идентификатора процесса в файле /var/run/rsyncd.pid
  motd file = /etc/rsync/hello            - отвечать клиенту в начале сессии приветствием из файла /etc/rsync/hello.
  transfer logging = yes
  log file = /var/log/rsyncd.log          - вести протокол переданных клиенту файлов в /var/log/rsyncd.log
  log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes - по заданному формату
  [root]
     comment = rsync open for root        - предоставлен доступ
     uid = root                           - от имени пользователя root
     gid = root                           - и группы root
     path = /                             - с доступом к корневому каталогу в терминах rsync-сервера
     list = yes                           - с возможностью его просмотра списка файлов
     read only = yes                      - но только для чтения
     hosts allow = hosts-name             - и только с рабочей станции hosts-name (из /etc/hosts)
     hosts deny = 0.0.0.0/0.0.0.0
     dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz   - не сжимая при передаче файлы указанных расширений
     exclude from = /etc/rsync/rsyncd-exclude     - и исключая файлы описанные в файле /etc/rsync/exclude 

Ссылки

Синтаксис команды RSYNC

Синтаксис команды rsync

  # rsync [параметры] <откуда> <куда>
  где
  <откуда> и <куда>   - источник и целевой объект
     Объектами копирования могут быть как файлы, так и папки, находящиеся как в пределах файловой
     системы, так и удалённо, например на SSH или RSYNC-сервере.
  [параметры]         - необязательные параметры копирования/синхронизации, например
     -v, --verbose
        повышение детализации при копировании, например показывать название файлов
     -a, --archive
        режим архивации, объединяет несколько ключей -rlptgoD
     -r, --recursive
        копирование рекурсивно. просматривая все вложенные файлы и каталоги
     -l, --links
        сохранять символические ссылки
     -p, --perms
        сохранять права на файлы
     -t, --times
        сохранять время изменения файлов
     -g, --group
        сохранять группу файлов
     -o, --owner
        сохранять владельца файлов (работает только для суперпользователя)
     --devices
        сохранять файлы устройств (работает только для суперпользователя)
     --specials
        сохранять специальные файлы
     -D
        сохранять файлы устройств и специальны файлы, идентично --devices --specials
     -H, --hard-links
        сохранять жесткие ссылки
     -x, --one-file-system
        не выходить за пределы файловой системы
     -z, --compress
        сжимать файлы данных во время передачи
     --compress-level=NUM
        явное задание степени сжатия
     --skip-compress=LIST
        пропуск сжатия файлов с суффиксом LIST
     --progress
        показывать сколько процентов осталось до завершения и скорость передачи
     --numeric-ids
        не транслировать имена владельца и группы в цифровые UID и GID, оставить номера как есть
     --delete
        удалять файлы в приёмнике, которых уже нет в источнике
     --delete-before
        удалять файлы перед началом копирования
    --delete-during
        удалять файлы во время копирования
     --delete-delay
        удалять файлы после окончания копирования, но искать их во время
     --delete-after
        удалять файлы после окончания копирования
     --delete-excluded
        удалять файлы включая исключённые
     --exclude=PATTERN
        исключать копирование файлов соответствующие маске PATTERN
     --exclude-from=FILE
        получить маски исключаемых при копирование файлов из файла FILE
     --include=PATTERN
        не исключать копирование файлов соответствующие маске PATTERN
     --include-from=FILE
        получить маски неисключаемых при копирование файлов из файла FILE
     --files-from=FILE
        получить список копируемых файлов из файла FILE
     -e ssh
        использовать при копировании ssh
     -n, --dry-run
        пробный режим копирования без изменений
     --bwlimit=KBPS
        установка ограничения скорости передачи файлов

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

Приняты сокращения в настоящем разделе:

  <SRC_PATH>              - путь до каталога, подлежащего резервному копированию
  <DEST_PATH>             - путь до папки куда копируются данные

Синхронизация данных с RSYNC-сервера в целевую папку

  # rsync -rlpgoDvsH --delete root@IP-RSYNC-SERVER::<SOURCE_PATH>/ <DEST_PATH>/
    где
    -rlpgoDvsH                              - параметры копирования
    rroot@IP-RSYNC-SERVER::<SOURCE_PATH>/   - путь до источника данных в терминах rsync-сервера
    --delete                                - команда "удалять файлы" в резервном архиве, если они удалены на rsync-сервере

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

  # rsync -avsq --delete -b --backup-dir=<LOCAL_PATH>/modify --suffix=.`date +%Y-%m-%d` <SRC_PATH>/ <DEST_PATH>/
  где
  -avsq                   - параметры копирования
  -b --backup-dir=<LOCAL_PATH>/modify --suffix=.`date +%Y-%m-%d`
                          - команда сохранять файлы которые изменялись в каталоге
                            с присвоением расширения файлам даты резервного копирования

Показать список файлов без их копирования

  # rsync -avn <SRC_PATH>/ <DEST_PATH>/     - список файлов, которые должны быть скопированы

Создание (только) структуры каталогов (без копирования файлов)

  # rsync -avH -f"+ */" -f"- *" <SRC_PATH>/ <DEST_PATH>/

Скачивание больших файлов (с докачкой) на неустойчивых линиях

  # rsync -avsH --partial --partial-dir="<PART_PATH/>" <SRC_PATH>/ <DEST_PATH>/
   где
   -avsH                        - параметры копирования
   ---partial                   - установка сохранения даже не полностью скопированных файлов
   --partial-dir="<PART_PATH/>" - путь до папки куда сохраняются не полностью скопированные файлы
   --append-verify              - установка проверки существующего файла для синхронизации лишь остатка не скопированного куска

Загрузка файлов с локальной системы на RSYNC-сервер с докачкой

  # rsync -rvz --partial --append-verify <SRC_PATH>/ rsync://root@IP-RSYNC-SERVER:/PATH/
   где
   -rvz                         - параметры копирования
   ---partial                   - установка сохранения даже не полностью скопированных файлов
   --append-verify              - установка проверки полноты уже сохранённого файла и копирования только остатка
  Пример настройки rsyncd.conf на RAYNC сервере
    [PATH]
       comment = tmp GW-HOME
       path = /DEST_PATH/
       read only = no
       uid = nobody
       gid = nogroup
       hosts allow = 0.0.0.0/0.0.0.0
  а для пути /DEST_PATH/ предоставлены, например права
    # mkdir /DEST_PATH/
    # chmod 777 /DEST_PATH/

Копирование на FTP-сервер

  # curlftpfs FTPSERVER:FTPPORT /tmp/ftp/ -o user=FTPUSER:FTPPASSW,allow_other
                               - монтирование FTP-сервера с помощью программы curlftpfs
  # rsync -rzv --inplace --append --stats --timeout=7200 <SRC_PATH>/ <DEST_PATH>/
   где
   -rzv                        - параметры копирования
   --inplace                   - обновление существующего файла
   --append                    - добавление данных к меньшему файлу
   --timeout=7200              - задержка для операций ввода-вывода

Ссылки

Литература

Справочная информация

  • 28.04.2010: Rsync: создание статьи википедии, описание установки пакета
  • 17.05.2010: Rsync: добавлено описание примера копирования данных с сервера rsync на локальную машину
  • 13.11.2011: Rsync: актуализация описания, правка внешнего вида
  • 23.03.2013: Rsync: добавлено описание Синтаксиса команды
  • 26.03.2016: Rsync: добавлено описание Настройки сервера Rsync
  • 21.02.2020: Rsync: добавлен пример копирования по FTP-протоколу

10 примеров использования Rsync в Linux

Rsync (Remote Sync) — это наиболее часто используемая команда для удаленного и локального копирования и синхронизации файлов и каталогов в системах Linux/Unix. С помощью команды rsync вы можете удаленно и локально копировать и синхронизировать данные между каталогами, дисками и сетевыми хранилищами, выполнять резервное копирование данных и зеркалирование между двумя компьютерами Linux.

В этой статье описывается 10 основных и дополнительных возможностей использования команды rsync для удаленной и локальной передачи файлов на компьютерах под управлением Linux. Вам не нужно быть root-пользователем для запуска команды rsync.

 

Некоторые преимущества и особенности команды Rsync:
  • Она эффективно копирует и синхронизирует файлы в/или из удаленной системы.
  • Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений.
  • Это быстрее, чем использование команды scp (Secure Copy), потому что rsync использует протокол удаленного обновления, который позволяет передавать только различия между двумя наборами файлов. В первый раз он копирует все содержимое файла или каталога из источника в место назначения, но со следующего раза он копирует только измененные блоки и байты в место назначения.
  • Remote Sync потребляет меньшую пропускную способность, поскольку использует метод сжатия и распаковки.

 

Базовый синтаксис команды rsync
# rsync options source destination

 

Некоторые общие параметры, используемые с командами rsync:
  • -v: подробный вывод.
  • -r: рекурсивно копирует данные (но не сохраняет временные метки и разрешения при передаче данных).
  • -a: режим архива, позволяет рекурсивно копировать файлы, а также сохраняет символические ссылки, права доступа к файлам, права владения пользователей и групп и временные метки.
  • -z: сжатие данных файла.
  • -h: human-readable, информация на выводе в формате, удобном для чтения.

 

Установка rsync на вашем устройстве с Linux

Мы можем установить пакет Remote Sync с помощью следующей команды:

# yum install rsync (On Red Hat)
#sudo apt-get install rsync (On Debian/Ubuntu)

 

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

Следующая команда синхронизирует файл на локальном компьютере из одного места в другое. В этом примере, имя файла backup.tar необходимо скопировать или синхронизировать в папку /tmp/backups/:

# rsync -zvh backup.tar /tmp/backups/

 

Если место назначения еще не существует, rsync автоматически его создаст.

 

Копирование/синхронизация каталога на локальном компьютере

Следующая команда перенесет или синхронизирует все файлы из одного каталога в другой на одном компьютере. В этом примере, в папке /etc/firefox находятся некоторые файлы, и мы хотим, чтобы этот каталог был скопирован в папку /tmp/backups/:

[root@sedicomm]sudo rsync -avzh /etc/firefox /tmp/backups/

 

 

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

Эта команда синхронизирует каталог с локального компьютера на удаленный компьютер. Например: на вашем локальном компьютере есть папка «firefox», которая содержит файлы, и вы хотите, чтобы содержимое этого локального каталога отправлялось на удаленный сервер, вы можете использовать следующую команду:

[root@sedicomm]$ rsync -avz rpmpkgs/ [email protected]:/home/

[email protected]'s password:

sending incremental file list

./

httpd-2.2.3-82.el5.centos.i386.rpm

mod_ssl-2.2.3-82.el5.centos.i386.rpm

nagios-3.5.0.tar.gz

nagios-plugins-1.4.16.tar.gz

sent 4993369 bytes received 91 bytes 399476.80 bytes/sec

total size is 4991313 speedup is 1.00

 

 

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

Эта команда поможет вам синхронизировать удаленный каталог с локальным каталогом. В этом примере каталог /home/tarunika/rpmpkgs, который находится на удаленном сервере, копируется на ваш локальный компьютер по пути /tmp/myrpms:

[root@user]# rsync -avzh [email protected]:/home/tarunika/rpmpkgs /tmp/myrpms

[email protected]'s password:

receiving incremental file list

created directory /tmp/myrpms

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 91 bytes received 4.99M bytes 322.16K bytes/sec

total size is 4.99M speedup is 1.00

 

 

3. Rsync с SSH

Вместе с Remote Sync мы можем использовать SSH (Secure Shell) для передачи данных. Используя протокол SSH при передаче наших данных, вы можете быть уверены, что ваши данные передаются в защищенном соединении с шифрованием, чтобы никто не мог прочитать их во время передачи в интернете.

Также, когда мы используем rsync, нам нужно предоставить пароль user/root для выполнения этой конкретной задачи. При использовании опции SSH ваши логины будут отправляться в зашифрованном виде, чтобы ваш пароль был в безопасности.

 

Копирование файла с удаленного сервера на локальный сервер с SSH

Чтобы указать протокол с помощью rsync, вам нужно указать параметр «-e» с названием протокола, который вы хотите использовать. В этом примере, мы будем использовать «ssh» с опцией «-e» и выполнять передачу данных:

[root@sedicomm]# rsync -avzhe ssh [email protected]:/root/install.log /tmp/

[email protected]'s password:

receiving incremental file list

install.log

sent 30 bytes received 8.12K bytes 1.48K bytes/sec

total size is 30.74K speedup is 3.77

 

 

Копирование файла с локального сервера на удаленный сервер с SSH:
[root@sedicomm]# rsync -avzhe ssh backup.tar [email protected]:/backups/

[email protected]'s password:

sending incremental file list

backup.tar

sent 14.71M bytes received 31 bytes 1.28M bytes/sec

total size is 16.18M speedup is 1.10

 

 

4. Отображение прогресса при передаче данных с rsync

Чтобы показать прогресс при переносе данных с одного компьютера на другой, мы можем использовать для него параметр «-progress». Он отображает файлы и время, оставшееся до завершения передачи:

[root@sedicomm]# rsync -avzhe ssh --progress /home/rpmpkgs [email protected]:/root/rpmpkgs

[email protected]'s password:

sending incremental file list

created directory /root/rpmpkgs

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

1.02M 100% 2.72MB/s 0:00:00 (xfer#1, to-check=3/5)

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

99.04K 100% 241.19kB/s 0:00:00 (xfer#2, to-check=2/5)

rpmpkgs/nagios-3.5.0.tar.gz

1.79M 100% 1.56MB/s 0:00:01 (xfer#3, to-check=1/5)

rpmpkgs/nagios-plugins-1.4.16.tar.gz

2.09M 100% 1.47MB/s 0:00:01 (xfer#4, to-check=0/5)

sent 4.99M bytes received 92 bytes 475.56K bytes/sec

total size is 4.99M speedup is 1.00

 

 

5. Использование опций –include и –exclude

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

В этом примере, команда Remote Sync будет включать только те файлы и каталог, которые начинаются с «R» и исключают все другие файлы и каталог:

[root@sedicomm]# rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/var/lib/rpm/ /root/rpm

[email protected]'s password:

receiving incremental file list

created directory /root/rpm

./

Requirename

Requireversion

sent 67 bytes received 167289 bytes 7438.04 bytes/sec

total size is 434176 speedup is 2.59

 

 

6. Использование опции –delete

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

Мы можем использовать опцию «-delete» для удаления файлов, которых нет в исходной директории.

Источник и место назначения синхронизированы. Теперь создаем новый файл test.txt в место назначения:

[root@sedicomm]# touch test.txt
 [root@sedicomm]# rsync -avz --delete [email protected]:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting test.txt
./
sent 26 bytes received 390 bytes 48.94 bytes/sec
total size is 45305958 speedup is 108908.55

 

 

В месте назначения появился новый файл с именем test.txt, при синхронизации с источником с параметром «-delete» он удалил файл test.txt.

 

 

7. Установка максимального размера файлов для передачи

Вы можете указать максимальный размер файла для передачи или синхронизации. Вы можете сделать это с опцией «–max-size». В этом примере максимальный размер файла составляет 200 КБ, поэтому эта команда будет передавать только те файлы, которые равны или меньше 200 КБ.

[root@sedicomm]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ [email protected]:/root/tmprpm

[email protected]'s password:

sending incremental file list

created directory /root/tmprpm

./

Conflictname

Group

Installtid

Name

Provideversion

Pubkeys

Requireversion

Sha1header

Sigmd5

Triggername

__db.001

sent 189.79K bytes received 224 bytes 13.10K bytes/sec

total size is 38.08M speedup is 200.43

 

 

8. Автоматическое удаление исходных файлов после успешной передачи

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

Итак, вы будете ждать завершения передачи, а затем вручную удалите этот локальный файл резервной копии? Конечно же нет. Это автоматическое удаление может быть выполнено с помощью опции “-remove-source-files“:

[root@sedicomm]# rsync --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 14.71M bytes received 31 bytes 4.20M bytes/sec

total size is 16.18M speedup is 1.10

[root@sedicomm]# ll backup.tar

ls: backup.tar: No such file or directory

 

 

9. Пробный запуск с rsync

Если вы новичок, используете Remote Sync и не знаете, что именно делает ваша команда, rsync действительно может “испортить” файлы в вашей папке назначения. И тогда восстановление может быть очень утомительной работой.

Использование этой опции не вносит никаких изменений, только делает пробный запуск команды и показывает результат команды, если выходные данные показывают точно то же, что вы хотите сделать, то вы можете удалить опцию «–dry-run» из вашей команды и запустить на терминале:

root@sedicomm]# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 35 bytes received 15 bytes 100.00 bytes/sec

total size is 16.18M speedup is 323584.00 (DRY RUN)

 

 

10. Установка ограничения полосы пропускания и файла передачи

Вы можете установить ограничения полосы пропускания при передаче данных с одного компьютера на другой с помощью опции “–bwlimit“. Эта опция позволяет нам ограничить I/O пропускную способность:

[root@sedicomm]# rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ [email protected]:/root/tmprpm/
[email protected]'s password:
sending incremental file list
sent 324 bytes received 12 bytes 61.09 bytes/sec
total size is 38.08M speedup is 113347.05

 

 

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

[root@sedicomm]# rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes received 31 bytes 3.27M bytes/sec
total size is 16.18M speedup is 1.10

 

 

На этом все! Вы можете просмотреть страницы руководства пользователя для получения дополнительной информации о команде rsync.

 

 

Спасибо за уделенное время на прочтение статьи о Remote Sync!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности,  полный курс по кибербезопасности, курсы DevNet (программируемые сети) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.

Что Вы получите?

  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.

Как проходит обучение?

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

А еще поможем Вам:

  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.

Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.

Как использовать команду rsync для копирования данных локально и через SSH

Копирование файлов из одного места в другое является довольно простой задачей и может быть легко достигнуто с помощью команды cp. Однако иногда приходится делать немного больше. Именно здесь команда rsync приходит, особенно когда вы передаете файлы большего размера. Rsync (Remote Sync) — это инструмент командной строки на основе Linux, который можно использовать для синхронизации и копирования файлов между локальным и удаленным серверами. Это позволяет синхронизировать файлы между двумя каталогами на одном компьютере, между каталогами на двух разных компьютерах в одной сети, между двумя каталогами в удаленной системе.

Основным преимуществом rsync является то, что вместо слепого копирования всего содержимого вместо этого он анализирует и передает только различия между источником и назначением, что, возможно, экономит системные ресурсы и пропускную способность. Некоторые другие преимущества rsync заключаются в следующем:

  • Сжимает файлы перед передачей
  • Может просматривать индикатор выполнения при передаче данных
  • Процесс копирования может быть приостановлен и возобновлен позже
  • Допускается передача через соединение SSH

В этой статье мы рассмотрим объясните, как использовать rsync для копирования данных в Linux. Мы будем использовать Debian 10 для описания процедуры, упомянутой в этой статье.

Rsync устанавливается в большинстве операционных систем Linux по умолчанию. Однако, если он не установлен, вы можете установить его, выполнив следующие действия:

Запустите приложение Terminal в вашей системе, перейдя на вкладку Activities в верхнем левом углу рабочего стола Debian. Затем в строке поиска введите терминал . Когда появится значок терминала, щелкните по нему, чтобы запустить его.

Теперь выполните приведенную ниже команду в Терминале для установки утилиты rsync:

$ apt install rsync

Каждая команда rsync начинается с rsync , за которой следует опция, в которой вы можете указать различные параметры. Rsync предоставляет ряд опций, которые дают вам возможность управлять спецификациями передачи. Затем есть источник и пункт назначения, который зависит от того, являются ли они удаленным или локальным компьютером.

Основной синтаксис rsync:

$ rsync [option] [source] [destination]

Некоторые из общих опций, используемых с командами rsync:

  1. -v : verbose
  2. -a : режим архивирования, он позволяет рекурсивно копировать файлы и сохраняет символические ссылки, права доступа к файлам, владение пользователями и группами и временные метки
  3. -z : сжимает данные
  4. -h : удобочитаемо, выводит числа в удобочитаемом формате
  5. –max-size = SIZE, передача файлов с указанным минимальным SIZE
  6. –min-size = SIZE, передача файлов с указанным максимальным SIZE

Теперь мы объясним некоторые примеры использования rsync с этими параметрами.

Копировать файлы и каталоги на локальный сервер

Копировать файлы локально

Вы можете скопировать один или несколько файлов из исходного каталога в каталог назначения на одном компьютере. Примером будет скопировать все .jpg файлы из каталога ~ / Downloads в каталог ~ / Documents с помощью следующей команды:

$ rsync -zvh /home/tin/Downloads/*.jpg /home/tin/Documents

После выполнения вышеуказанной команды все .jpg файлы в исходный каталог / home / tin / Downloads будет скопирован в целевой каталог / home / tin / Documents .

В приведенном выше примере мы использовали такие параметры, как -z для сжатия, -v для подробного вывода и -h для удобочитаемого вывода.

Копировать каталоги локально

Как и файлы, вы также можете скопировать всю папку и файлы, содержащиеся в каталоге, используя команду rsync. Например, можно скопировать все файлы из каталога ~ / Downloads в каталог ~ / Documents с помощью следующей команды:

$ rsync -zavh /home/tin/Downloads/ /home/tin/Documents

Скопировать файлы на удаленный сервер

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

$ rsync [options] [local path] [user]@[remote server]:[remote path]

Копирование файлов на основе максимального размера

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

$ rsync --max-size=”” [source] [destination]

Например, можно скопировать файлы с максимальным размером 4000 КБ из исходного ~ / Downloads в каталог назначения ~ / Documents . В этом случае файлы размером более 4000 КБ не будут скопированы в место назначения.

$ rsync --max-size=4000k /home/tin/Downloads/*.iso /home/tin/Documents/

Копирование файлов на основе минимального размера

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

$ rsync --min-size=”” [source] [destination]

Примером этого может быть копирование файлов с максимальным размером 2M из исходного ~ / Downloads в целевой каталог ~ / Documents , Файлы размером менее 2M не будут скопированы с помощью rsync.

$ rsync --min-size=2M /home/tin/Downloads/*.iso /home/tin/Documents/

Просмотр прогресса

Вы также можете просматривать прогресс при копировании файлов с помощью rsync. Добавьте флаг –progress , следуя команде rsync, как показано ниже:

$ rsync --progress [source] [destination]

Например, можно просмотреть прогресс при копировании файла из источника ~ / Downloads в пункт назначения ~ / Documents directory:

$ rsync --progress /home/tin/Downloads/VTS_03_1.VOB /home/tin/Documents

Исключить файлы

Вы также можете исключить определенные файлы при копировании файлов из источника в место назначения с помощью rsync. Примером может быть исключение всех файлов .pdf при копировании файлов из исходного ~ / Downloads в каталог назначения ~ / Documents .

rsync -zavh --exclude="*.pdf" /home/tin/Downloads/ /home/tin/Documents

При вводе следующей команды все файлы будут скопированы из источника в место назначения, кроме .pdf files.

Вот и все! Мы объяснили основное использование утилиты rsync для локального и удаленного копирования файлов между различными каталогами. Мы также объяснили несколько распространенных и полезных опций rync. Есть так много вариантов, кроме этих, которые вы можете использовать для управления каждым аспектом поведения передачи. Чтобы использовать эти параметры, см. Справочные страницы rsync.

Команда Rsync в Linux с примерами

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

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

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

Установка Rsync

Утилита rsync предустановлена в большинстве дистрибутивов Linux и macOS. Если в вашей системе не установлен rsync , вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установите Rsync в Ubuntu и Debian

sudo apt install rsync

Установите Rsync на CentOS и Fedora

sudo yum install rsync

Синтаксис команды Rsync

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

Выражения утилиты rsync имеют следующую форму:

Local to Local:  rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
  • OPTION — параметры rsync .
  • SRC — Исходный каталог.
  • DEST — целевой каталог.
  • USER — удаленное имя пользователя.
  • HOST — удаленное имя хоста или IP-адрес.

rsync предоставляет ряд параметров, управляющих поведением команды. Наиболее широко используемые варианты:

  • -a , --archive , режим архива, эквивалент -rlptgoD . Этот параметр указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время модификации, группы, владение и разрешения.
  • -z , --compress . Эта опция заставляет rsync сжимать данные при их отправке на конечный компьютер. Используйте эту опцию, только если подключение к удаленному компьютеру медленное.
  • -P , что эквивалентно --partial --progress . Когда используется эта опция, rsync показывает индикатор выполнения во время передачи и сохраняет частично переданные файлы. Это полезно при передаче больших файлов по медленным или нестабильным сетевым соединениям.
  • --delete . Когда используется эта опция, rsync удаляет посторонние файлы из места назначения. Это полезно для зеркалирования.
  • -q , --quiet . Используйте эту опцию, если вы хотите подавить сообщения, не связанные с ошибками.
  • -e . Эта опция позволяет вам выбрать другую удаленную оболочку. По умолчанию rsync настроен на использование ssh.

Базовое использование Rsync

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

rsync -a /opt/filename.zip /tmp/

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

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

rsync -a /opt/filename.zip /tmp/newfilename.zip

Настоящая мощь rsync проявляется в синхронизации каталогов. В приведенном ниже примере показано, как создать локальную резервную копию файлов веб-сайта:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Если целевой каталог не существует, rsync создаст его.

Стоит отметить, что rsync разному обрабатывает исходные каталоги с помощью завершающей косой черты ( / ). Если исходный каталог имеет косую черту в конце, команда скопирует только содержимое каталога в целевой каталог. Если косая черта в конце опущена, rsync копирует исходный каталог в целевой каталог.

Использование

rsync для синхронизации данных с / на удаленную машину

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

В следующем примере мы переносим каталог с локального компьютера на удаленный:

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/

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

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

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

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

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

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

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Исключить файлы и каталоги

Есть два варианта исключения файлов и каталогов. Первый вариант — использовать аргумент --exclude и указать файлы и каталоги, которые вы хотите исключить, в командной строке.

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

В следующем примере показано, как исключить node_modules и tmp :

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

Второй вариант — использовать параметр --exclude-from и указать файлы и каталоги, которые вы хотите исключить из файла.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/

/exclude-file.txt

Выводы

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Похожие статьи

Использование rsync для удаления одного файла

Файл foo.txt существует на удаленной машине по адресу: /home/user/foo.txt

Он не существует на локальной машине.

Я хочу удалить foo.txt, используя rsync.

Я не знаю (и предполагаю для целей этого вопроса, что я не могу узнать), какие еще файлы находятся в /home/user на локальной или удаленной машине, поэтому я не могу просто синхронизировать весь каталог.

Какую команду rsync я могу использовать для удаления foo.txt на удаленной машине?

rsync

Поделиться

Источник


dirtside    

02 февраля 2009 в 22:45

4 ответа




30

Попробуйте это:

rsync -rv --delete --include=foo.txt '--exclude=*' /home/user/ user@remote:/home/user/

(настоятельно рекомендую сначала запустить с --dry-run , чтобы проверить его) Хотя, похоже, было бы проще использовать ssh…

ssh user@remote "rm /home/user/foo.txt"

Поделиться


David Z    

02 февраля 2009 в 22:52



6

Это немного тривиально, но если, как и я, вы пришли на эту страницу в поисках способа удалить содержимое каталога с удаленного сервера с помощью rsync, вот как я это сделал:

  1. Создайте пустую фиктивную папку:

    mkdir mock

  2. Синхронизировать с ним:

    rsync -arv --delete --dry-run ~/mock/ remote_server:~/dir_to_clean/

  3. Удалите --dry-run из строки выше, чтобы на самом деле сделать это.

Поделиться


letitbee    

17 октября 2011 в 12:05



0

Как было предложено выше, используйте --dry-run для предварительного тестирования. --delete удаляет файлы в удаленном расположении на справочной странице rsync.

rsync -rv --delete [email protected]:full/path/to/foo.txt

Комментарий ниже, утверждающий, что это будет только список, неверен. Для перечисления используйте только --list-only и удалите --delete .

Поделиться


Rogue    

22 июля 2019 в 14:34


  • Замените все файлы, кроме одного, на rsync

    В настоящее время я использую rsync следующим образом rsync -az —delete … Какую опцию я могу использовать с rsync для замены всех уже существующих файлов назначения, за исключением одного конкретного файла, который не должен быть заменен, если он уже существует? Конечно, если файл не существует…

  • Применить параметры rsync, специфичные для файла

    rsync предоставляет множество вариантов синхронизации файлов. Я пытаюсь найти вариант, который может сделать следующие вещи. 1. примените параметры rsync, указанные для всех файлов и каталогов в исходном каталоге. 2. Применить определенный параметр для каталога внутри источника реж. Для бывших:…



0

Просто столкнулся с той же проблемой, нужно было использовать rsync для удаления удаленного файла, так как разрешались только rsync и никакие другие команды SSH. Опция —remove-source-files (ранее известная как —remove-source-files ) сделала именно это:

rsync -avPn --remove-source-files remote:/home/user/foo.txt .
rm foo.txt

Как всегда, удалите опцию -n , чтобы действительно выполнить это.

Поделиться


ckujau    

31 мая 2020 в 07:49


Похожие вопросы:

Rsync неправильное использование суффикса даты

Я пытаюсь настроить Rsync для резервного копирования внешнего компьютера на сервер с помощью Rsync. Основы этого у меня есть вниз без проблем, хотя я, наконец, попал в дорожный блок. rsync batch…

Использование параметров Rsync включить и исключить для включения каталога и файла по шаблону

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

Rsync —link-dest опция для одного файла

Я использую rsync с опцией —link-dest для резервного копирования каталогов. Я хочу добиться того же самого с отдельными файлами, то есть я хочу скопировать файл srcfile в dstfile, зная, что у меня…

rsync и (пост) синхронизированный файл процесса

мне нравится rsync мои фотографии из одного (linux) раздела диска в другой (место резервного копирования) с помощью скрипта shell. Проблема в том, что мне нужно повторно масштабировать все…

rsync для резервного копирования одного файла, сгенерированного в динамических папках

Я пытаюсь создать резервную копию только одного файла, который генерируется другим приложением в динамических именованных папках. например: parent_folder/ back_01 -> file_blabla.zip (timestam…

Замените все файлы, кроме одного, на rsync

В настоящее время я использую rsync следующим образом rsync -az —delete … Какую опцию я могу использовать с rsync для замены всех уже существующих файлов назначения, за исключением одного…

Применить параметры rsync, специфичные для файла

rsync предоставляет множество вариантов синхронизации файлов. Я пытаюсь найти вариант, который может сделать следующие вещи. 1. примените параметры rsync, указанные для всех файлов и каталогов в…

rsync привилегии для удаления исходных и целевых файлов

Я использую rsync в своем сценарии bash для резервного копирования папки websites ‘public_html’ в локальную целевую папку на моем компьютере. Вот мой код rsync: if rsync -zavx -e ‘ssh -p22’ \…

Использование Rsync для синхронизации Mac с Synology NAS — изменение владельца файла и группы

У меня есть DS218+ Synology NAS и Mac. Мне удалось синхронизировать их с rsync, но во время этого процесса владелец папки/файла и группа меняются. Первоначально я позволил rsync создать папку, не…

rsync команда для удаления каталога в удаленной системе

Есть удаленная система, где у меня есть права на чтение/запись только в одном directoty. Я использую его для хранения результатов ночных сборок. Для загрузки результатов за определенный день я делаю…

17 полезных примеров команд rsync (удаленная синхронизация) в Linux

Как следует из названия, команда rsync используется для локальной и удаленной синхронизации (или копирования) файлов и каталогов. Одной из важных особенностей rsync является то, что он работает по «алгоритму дельта-передачи », что означает, что он будет только синхронизировать или копировать изменения из источника в место назначения, а не копировать весь файл, что в конечном итоге сокращает объем данных, отправляемых по сети. Вундеркинды Linux обычно используют команду rsync для повседневного управления резервным копированием, зеркалированием и восстановлением.Он использует удаленную оболочку, такую ​​как SSH, при синхронизации файлов с локального компьютера на удаленный, и любой пользователь в системе может использовать команду rsync, поскольку для этого не требуются привилегии root или sudo.

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

Команда Rsync доступна для всех UNIX и Linux подобных операционных систем.Когда мы выполняем минимальную установку CentOS и RHEL OS, тогда пакет rsync не является частью установки по умолчанию, поэтому для установки rsync на CentOS и RHEL выполните следующую команду yum

 ~] # yum install rsync -y 

В операционных системах, подобных Debian (Ubuntu и Linux Mint), используйте следующую команду apt для установки инструмента rysnc,

 ~] # apt install rsync -y 

Синтаксис команды rsync:

Локальная синхронизация: # rsync {options} {Source} {Destination}

Remote Sync pull: # rsync {options} @ :

Remote Sync Push: # rsync @ :

Некоторые из наиболее часто используемых параметров в команде rsync перечислены ниже:

  • -v, –verbose Подробный вывод
  • -q, –quiet подавить вывод сообщения
  • -a, –archive архивные файлы и каталог во время синхронизации (-a равно следующим параметрам -rlptgoD)
  • -r, –рекурсивная синхронизация файлов и каталогов рекурсивно
  • -b, –backup создать резервную копию во время синхронизации
  • -u, –update не копировать файлы из источника в место назначения, если файлы назначения новее
  • -l, –links копировать символические ссылки как символические ссылки во время синхронизации
  • -n, –dry-run выполнить пробный запуск без синхронизации
  • -e, –rsh = КОМАНДА указать удаленную оболочку для использования в rsync
  • -z, –compress сжимать данные файла во время передачи
  • -h, –человечески понятное отображение выходных чисел в удобочитаемом формате
  • –progress показать прогресс синхронизации во время передачи

Давайте перейдем к полезным примерам команды rsync

Пример: 1) Копирование или синхронизация файлов локально (rsync -zvh)

Предположим, мы хотим скопировать файл из домашнего каталога пользователя pkumar в папку / opt / back, выполните следующую команду rsync

 [[электронная почта защищена] ~] # rsync -zvh / home / pkumar / OpenStack-Networking.pdf / opt / backup
OpenStack-Networking.pdf
отправлено 4,09 МБ получено 35 байтов 2,73 МБ / сек
общий размер 6,15 млн ускорение 1,50
[[адрес электронной почты защищен] ~] # 

Выше мы использовали такие параметры, как -z для сжатия, -v для подробного вывода и -h для вывода, удобочитаемого человеком.

Пример: 2) Локальное копирование или синхронизация каталога (rsync -zavh)

Предположим, мы хотим скопировать или синхронизировать домашний каталог пользователя pkumar в папку / opt / backup, выполните следующую команду rsync с параметрами -zavh ,

 [[электронная почта защищена] ~] # rsync -zavh / home / pkumar / opt / backup
отправка добавочного списка файлов
pkumar /
pkumar /.bash_logout
pkumar / .bash_profile
pkumar / .bashrc
pkumar / OpenStack-Networking.pdf

отправлено 4,09 МБ получено 96 байтов 8,19 МБ / сек
общий размер 6,15 млн ускорение 1,50
[[адрес электронной почты защищен] ~] # 

Давайте проверим, скопирован ли каталог или нет, выполните команду ниже,

 [[электронная почта защищена] ~] # ls -ld / opt / backup / *
-rwx ------. 1 корень root 6153239 7 апр, 00:25 /opt/backup/OpenStack-Networking.pdf
drwx ------. 2 pkumar pkumar 90 7 апреля 00:25 / opt / backup / pkumar
[[адрес электронной почты защищен] ~] # 

Как мы видим, каталог «pkumar» создается в папке назначения, и его содержимое также копируется.В приведенном выше примере, если использовать trail / после исходной папки (/ home / pkumar /), тогда команда rsync не создаст каталог pkumar в месте назначения, а скопирует только содержимое.

 [[электронная почта защищена] ~] # rsync -zavh / home / pkumar / / opt / backup 
Пример: 3) Локальное рекурсивное копирование файлов и каталогов (rsync -zrvh или rsync -zavh)

Предположим, что у нас есть несколько файлов и каталогов внутри домашнего каталога пользователя pkumar, используйте следующую команду rsync для рекурсивного копирования файлов и каталогов, либо используйте параметр -a или -r для рекурсивного копирования файлов и каталогов.

Примечание : В команде rsync параметр -a используется для архивирования во время копирования или синхронизации, а кроме архивирования параметр -a также используется для следующих значений:

  • рекурсивно копировать файлы и каталог
  • копировать символические ссылки как символические ссылки
  • сохранить разрешения
  • группа консервов
  • сохранить время модификации
  • сохранить собственность
 [[электронная почта защищена] ~] # rsync -zrvh / home / pkumar / opt / backup
или
[[электронная почта защищена] ~] # rsync -zavh / home / pkumar / opt / backup
 
Пример: 4) Копирование или синхронизация файлов и каталогов из локальной в удаленную систему

Предположим, мы хотим скопировать папку « / home / pkumar / techi » с локального компьютера на удаленный (192.168.1.29) под / opt

 [[защита электронной почты] ~] # rsync -zarvh / home / pkumar / techi [защита электронной почты]: / opt
Пароль [защищенный адрес электронной почты]:
…………………………………………………………
techi / OTRS /
techi / OTRS / Database-Selection-OTRS-Installation-CentOS7.jpg
techi / OTRS / Install-OTRS-Accept-License.png
techi / OTRS / Install-OTRS-CentOS7-RHEL7.jpg
techi / OTRS / mysql-secure-installation-centos7-part2.jpg

отправлено 34,85M байт получено 2,65K байт 6,34M байт / сек
общий размер 37,77M ускорение 1,08
……………………………………………………………
[[адрес электронной почты защищен] ~] # 
Пример: 5) Копирование или синхронизация файлов и каталогов с удаленного компьютера в локальную систему

Предположим, мы хотим скопировать файлы и каталоги с удаленной машины (192.168.1.29) в нашу локальную систему, в приведенном ниже примере я копирую удаленную папку «/ opt / rpms_db » на моем локальном компьютере в папку / tmp

 [[защита электронной почты] ~] # rsync -zarvh [защита электронной почты]: / opt / rpms_db / tmp
Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
……………………………………………………………
rpms_db /
rpms_db / httpd-2.4.6-88.el7.centos.x86_64.rpm
rpms_db / httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
rpms_db / postfix-2.10.1-7.el7.x86_64.rpm
rpms_db / pytalloc-2.1.13-1.el7.x86_64.rpm
rpms_db / samba-4.8.3-4.el7.x86_64.rpm
rpms_db / samba-client-libs-4.8.3-4.el7.x86_64.rpm
rpms_db / samba-common-4.8.3-4.el7.noarch.rpm
rpms_db / samba-common-libs-4.8.3-4.el7.x86_64.rpm
rpms_db / samba-common-tools-4.8.3-4.el7.x86_64.rpm
rpms_db / samba-libs-4.8.3-4.el7.x86_64.rpm

отправлено 484 байта получено 15,45 МБ 1,07 МБ / сек
общий размер 16,37 млн ​​ускорение 1,06
[[адрес электронной почты защищен] ~] # 

Приведенная выше команда автоматически создаст папку «rpms_db» в папке / tmp на нашем локальном компьютере.

 [[адрес электронной почты защищен] ~] # ls -l / tmp /
всего 8
-rwx ------. 1 корень root 827 6 апр, 12:54 ks-script-avmuxw
drwxr-xr-x. 2 root root 4096 7 апр 01:42 rpms_db
-rw -------. 1 root root 0 6 апр 12:35 yum.log
[[электронная почта защищена] ~] # ls -l / tmp / rpms_db /
всего 16028
……………………………………
-rw-r - r--. 1 root root 2844028 12 ноя, 09:28 httpd-2.4.6-88.el7.centos.x86_64.rpm
-rw-r - r--. 1 root root 92504 12 ноября 09:28 httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
-rw-r - r--. 1 root root 2558136 12 ноя, 09:44 postfix-2.10.1-7.el7.x86_64.rpm
-rw-r - r--. 1 root root 17404 12 ноября 09:44 pytalloc-2.1.13-1.el7.x86_64.rpm
-rw-r - r--. 1 root root 696472 12 ноя 09:46 samba-4.8.3-4.el7.x86_64.rpm
-rw-r - r--. 1 root root 5070800 12 ноября 09:46 samba-client-libs-4.8.3-4.el7.x86_64.rpm
-rw-r - r--. 1 корень root 210984 12 ноя, 10:19 samba-common-4.8.3-4.el7.noarch.rpm
-rw-r - r--. 1 root root 167512 12 ноября 09:46 samba-common-libs-4.8.3-4.el7.x86_64.rpm
-rw-r - r--. 1 root root 458380 12 ноя, 09:46 samba-common-tools-4.8.3-4.el7.x86_64.rpm
-rw-r - r--. 1 root root 282332 12 ноября 09:46 samba-libs-4.8.3-4.el7.x86_64.rpm
……………………………………
[[адрес электронной почты защищен] ~] # 
Пример: 6) Укажите удаленную оболочку во время синхронизации (rsync -e ssh)

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

 [[защита электронной почты] ~] # rsync -zarvh -e ssh [защита электронной почты]: / opt / rpms_db / tmp
Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
………………………………………………………………………………
rpms_db /
rpms_db / httpd-2.4.6-88.el7.centos.x86_64.rpm
rpms_db / httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
rpms_db / postfix-2.10.1-7.el7.x86_64.rpm
rpms_db / pytalloc-2.1.13-1.el7.x86_64.rpm
rpms_db / samba-4.8.3-4.el7.x86_64.rpm
rpms_db / samba-client-libs-4.8.3-4.el7.x86_64.rpm
rpms_db / samba-common-4.8.3-4.el7.noarch.rpm
rpms_db / samba-common-libs-4.8.3-4.el7.x86_64.rpm
rpms_db / samba-common-tools-4.8.3-4.el7.x86_64.rpm
rpms_db / samba-libs-4.8.3-4.el7.x86_64.rpm

отправлено 484 байта получено 15,45 МБ 1,82 МБ / сек
общий размер 16.37M ускорение составляет 1,06
[[адрес электронной почты защищен] ~] # 
Пример: 7) Отобразить ход синхронизации в выходных данных команды rsync

Если вы хотите видеть ход синхронизации или копирования в команде rsync, используйте « –progress », пример показан ниже

 [[защита электронной почты] ~] # rsync -avh --progress [защита электронной почты]: / opt / rpms_db / tmp
Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
…………………………………………………………………………………………………… ..
rpms_db /
rpms_db / httpd-2.4.6-88.el7.centos.x86_64.rpm
2,84 млн 100% 35,22 МБ / с 0:00:00 (xfr # 6, to-chk = 18/25)
rpms_db / httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
92,50K 100% 1,13 МБ / с 0:00:00 (xfr # 7, to-chk = 17/25)
rpms_db / postfix-2.10.1-7.el7.x86_64.rpm
2,56M 100% 14,44 МБ / с 0:00:00 (xfr # 17, to-chk = 7/25)
rpms_db / samba-4.8.3-4.el7.x86_64.rpm
696,47K 100% 3,71 МБ / с 0:00:00 (xfr # 19, to-chk = 5/25)
rpms_db / samba-client-libs-4.8.3-4.el7.x86_64.rpm
5,07M 100% 19,90 МБ / с 0:00:00 (xfr # 20, to-chk = 4/25)
rpms_db / самба-общий-4.8.3-4.el7.noarch.rpm
210.98K 100% 844.42kB / s 0:00:00 (xfr # 21, to-chk = 3/25)
rpms_db / samba-common-libs-4.8.3-4.el7.x86_64.rpm
167,51 КБ 100% 667,70 КБ / с 0:00:00 (xfr # 22, to-chk = 2/25)
rpms_db / samba-common-tools-4.8.3-4.el7.x86_64.rpm
458,38 КБ 100% 1,77 МБ / с 0:00:00 (xfr # 23, to-chk = 1/25)
rpms_db / samba-libs-4.8.3-4.el7.x86_64.rpm
282,33K 100% 1,09 МБ / с 0:00:00 (xfr # 24, to-chk = 0/25)

отправлено 484 байта получено 16,38 МБ 3,64 МБ / сек
общий размер 16,37M ускорение 1.00
[[адрес электронной почты защищен] ~] # 

Читайте также: 14 примеров команд SCP для безопасной передачи файлов в Linux

Пример: 8) Скопируйте структуру каталогов без копирования файлов

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

Предположим, мы хотим скопировать структуру каталогов «/ home / pkumar» с локального компьютера на удаленный (192.168.1.29) в папку / opt.

 [защита электронной почты] ~] # rsync -av -f "+ * /" -f "- *" / home / pkumar [защита электронной почты]: / opt /
Пароль [защищенный адрес электронной почты]:
список файлов здания... сделано
………………………………………………
pkumar /

отправлено 43 байта получено 19 байтов 17,71 байт / сек
общий размер 0, ускорение 0,00
[[адрес электронной почты защищен] ~] # 
Пример: 9) Возобновить передачу больших файлов после сбоя в scp

В профиле администратора linux есть несколько сценариев, когда мы начали копирование большего файла с помощью команды scp, но оно было прервано в середине, и мы не можем позволить себе начать копирование его снова с помощью scp из-за его большого размера и затрат времени.

Таким образом, в этой ситуации можно использовать команду rsync, поскольку она может начать копирование файла с того места, где оно было остановлено или завершено, или, другими словами, rsync может передавать файлы, которые частично скопированы с помощью команды scp.C Прервано сигналом 2.
[[электронная почта защищена] ~] #
[[защита электронной почты] ~] # rsync -P —rsh = ssh [защита электронной почты]: / root / ubuntu-18.04-desktop-amd64.iso / opt
Пароль [защищенный адрес электронной почты]:
убунту-18.04-рабочий стол-amd64.iso
1,921,843,200 100% 18,47 МБ / с 0:01:39 (xfr # 1, to-chk = 0/1)
[[адрес электронной почты защищен] ~] #

Пример: 10) Удалить файлы в месте назначения, если его нет в источнике (–delete)

Если вы уже синхронизировали файлы из источника в место назначения и из источника вы удалили файлы, вы можете заставить команду rsync удалить файлы в месте назначения с помощью опции –delete, пример показан ниже

 [[защита электронной почты] ~] # rsync -avz --delete / opt / rpms_db [защита электронной почты]: / tmp / rpms_db
Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
удаление rpms_db / apr-util-1.5.2-6.el7.x86_64.rpm
удаление rpms_db / apr-1.4.8-3.el7_4.1.x86_64.rpm
rpms_db /

отправлено 862 байта получено 105 байтов 276,29 байт / сек
общий размер 15 947 152 ускорение 16 491,37
[[адрес электронной почты защищен] ~] # 
Пример: 11) Установить ограничение на размер передаваемого файла (–max-size)

Если вы не хотите передавать или копировать большие файлы с помощью rsync, используйте опцию ‘- max-size = {define-size-here}’ , предположим, что мы не хотим передавать файлы размером более 500К,

Примечание. Чтобы указать размер в МБ, используйте M, а для ГБ — G.

 [[защита электронной почты] ~] # rsync -avz --max-size = '500K' / opt / rpms_db [защита электронной почты]: / tmp 
Пример: 12) Не синхронизировать / копировать измененный файл в место назначения

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

 [[защита электронной почты] ~] # rsync -avzu [защита электронной почты]: / opt / techi / home / pkumar / techi
Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов

отправлено 37 байт, получено 4 960 байт 1427.71 байт / сек
общий размер 37,771,649 ускорение 7,558,87
[[адрес электронной почты защищен] ~] # 
Пример: 13) Удалить файлы из источника после синхронизации (–remove-source-files)

Предположим, вы хотите удалить файлы из источника после завершения синхронизации с помощью команды rsync. В приведенном ниже примере папка из локальной системы « /home/pkumar/techi.tgz » синхронизируется с удаленной системой (192.168.1.29), после завершения синхронизации файл удаляется из источника.

 [[защита электронной почты] ~] # rsync --remove-source-files -zvh /home/pkumar/techi.tgz [защита электронной почты]: / opt
Пароль [защищенный адрес электронной почты]:
techi.tgz
отправлено 597 байт принято 43 байта 182,86 байт / сек
общий размер 518 ускорение 0,81
[[электронная почта защищена] ~] #
[[адрес электронной почты защищен] ~] # ls -l /home/pkumar/techi.tgz
ls: нет доступа к /home/pkumar/techi.tgz: нет такого файла или каталога
[[адрес электронной почты защищен] ~] # 
Пример: 14) Команда rsync пробного запуска перед фактической синхронизацией

Могут быть ситуации, когда мы не говорим о поведении команды rsync, поэтому в таких случаях лучше выполнить пробный запуск rsync

 [[электронная почта защищена] ~] # rsync --dry-run --remove-source-files -zvh / home / pkumar / projects.tar [адрес электронной почты защищен]: / opt
Пароль [защищенный адрес электронной почты]:
projects.tar

отправлено 51 байт получено 19 байтов 7,37 байт / сек
общий размер - 981,24M, ускорение - 14017682,29 (СУХОЙ ЗАПУСК)
[[адрес электронной почты защищен] ~] # 
Пример: 15) Включить и исключить файлы во время синхронизации с rsync

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

В приведенном ниже примере нужно скопировать файлы типа pdf и rpm и исключить файлы типа png.

 [[защита электронной почты] ~] # rsync -avz -e ssh --include '* .pdf * .rpm' --exclude '* .png' / home / pkumar / techi [защита электронной почты]: / opt
Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
techi /
techi / OpenStack-Networking.pdf
techi / httpd-2.4.6-88.el7.centos.x86_64.rpm
techi / httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
techi / postfix-2.10.1-7.el7.x86_64.rpm

отправлено 9 469 912 байт, получено 96 байт 2 705 716.57 байт / сек
общий размер 11 647 907 ускорение 1,23
[[адрес электронной почты защищен] ~] # 
Пример: 16) Установить ограничение на скорость передачи данных в rsync (–bwlimit =

)

В команде rsync мы можем установить предел пропускной способности для передачи данных с одного компьютера на другой, используйте параметр « –bwlimit = » в команде rsync, чтобы установить ограничение на скорость передачи данных.

Предположим, мы хотим установить максимальную скорость передачи данных (скорость) 600 КБ / с с помощью rsync, пример показан ниже

 [[защита электронной почты] ~] # rsync -avz --progress --bwlimit = 600 / home / pkumar / techi [защита электронной почты]: / opt
Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
techi /
techi / OpenStack-Networking.pdf
6 153 239 100% 910,02 кБ / с 0:00:06 (xfr # 1, to-chk = 6/8)
techi / httpd-2.4.6-88.el7.centos.x86_64.rpm
2,844028 100% 615,28 кБ / с 0:00:04 (xfr # 2, to-chk = 5/8)
techi / httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
92,504 100% 507,51 КБ / с 0:00:00 (xfr # 3, to-chk = 4/8)
techi / pkumar-2.png
0100% 0,00 кБ / с 0:00:00 (xfr # 4, to-chk = 3/8)
techi / pkumar-3.png
0100% 0,00 кБ / с 0:00:00 (xfr # 5, to-chk = 2/8)
techi / pkumar.png
0100% 0,00 кБ / с 0:00:00 (xfr # 6, to-chk = 1/8)
techi / postfix-2.10.1-7.el7.x86_64.об / мин
2,558,136 100% 594,80 КБ / с 0:00:04 (xfr # 7, to-chk = 0/8)

отправлено 9 470 087 байт получено 153 байта 485 653,33 байта / сек
общий размер 11 647 907 ускорение 1,23
[[адрес электронной почты защищен] ~] # 
Пример: 17) Просмотр разницы в файлах и каталогах между источником и местом назначения

Используйте параметр « -i » в команде rsync, чтобы указать разницу в файлах и каталогах между источником и местом назначения. Пример показан ниже

 [[защита электронной почты] ~] # rsync -avzi / home / pkumar / techi [защита электронной почты]: / opt
Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
.d..t ...... techi /

Как видно из выходных данных команды выше, есть разница в файле с именем «projects.txt» в месте назначения. Ниже приведены значения ключевых слов в выводе выше,

.

  • d: указывает на изменение файла назначения
  • f: указывает файл
  • t: указывает изменение меток времени
  • с: указывает на изменение размера

Это все из этого руководства. Если эти примеры помогут вам лучше понять команду rsync, поделитесь своими отзывами и комментариями.

Также прочтите : 17 полезная команда tar с практическими примерами в Linux

Также прочтите : Как вращать и сжимать файлы журналов в Linux с помощью Logrotate

Команда

Rsync в Linux с примерами

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

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

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

Установка Rsync #

Утилита rsync предустановлена ​​в большинстве дистрибутивов Linux и macOS.Если в вашей системе не установлен rsync , вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установить Rsync на Ubuntu и Debian #

  sudo apt install rsync  

Установить Rsync на CentOS и Fedora #

  sudo yum install rsync  

Rsync Command Syntax #

Как использовать синтаксис команды 9025 Перед переходом rsync , давайте начнем с обзора основного синтаксиса.

Выражения утилиты rsync имеют следующий вид:

  Локальный на локальный: rsync [ОПЦИЯ]... [SRC] ... DEST
От локального к удаленному: rsync [ОПЦИЯ] ... [SRC] ... [ПОЛЬЗОВАТЕЛЬ @] ХОЗЯИН: DEST
От удаленного к локальному: rsync [ОПЦИЯ] ... [ПОЛЬЗОВАТЕЛЬ @] ХОСТ: SRC ... [DEST]
  
  • ОПЦИЯ - Опции rsync
    .
  • SRC - Исходный каталог.
  • DEST - Каталог назначения.
  • ПОЛЬЗОВАТЕЛЬ - удаленное имя пользователя.
  • HOST - удаленное имя хоста или IP-адрес.

rsync предоставляет ряд параметров, управляющих поведением команды.Наиболее широко используются следующие варианты:

  • -a , --archive , архивный режим, эквивалент -rlptgoD . Этот параметр указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время модификации, группы, владение и разрешения.
  • -z , - сжать . Эта опция заставляет rsync сжимать данные при их отправке на целевую машину. Используйте эту опцию, только если соединение с удаленным компьютером медленное.
  • -P , эквивалент - частичный --progress . Когда используется эта опция, rsync показывает индикатор выполнения во время передачи и сохраняет частично переданные файлы. Это полезно при передаче больших файлов по медленным или нестабильным сетевым соединениям.
  • - удалить . Когда используется этот параметр, rsync удаляет посторонние файлы из места назначения. Это полезно для зеркалирования.
  • -q , - тихий .Используйте эту опцию, если вы хотите подавить сообщения, не связанные с ошибками.
  • . Эта опция позволяет вам выбрать другую удаленную оболочку. По умолчанию rsync настроен на использование ssh.

Базовое использование Rsync #

Самый простой вариант использования rsync - это копирование одного файла из одного в другое локальное расположение. Вот пример:

  rsync -a /opt/filename.zip / tmp /  

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

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

  rsync -a /opt/filename.zip /tmp/newfilename.zip  

Реальная мощность rsync при синхронизации каталогов. В приведенном ниже примере показано, как создать локальную резервную копию файлов веб-сайта:

  rsync -a /var/www/domain.com/public_html/ / var / www / domain.com / public_html_backup /  

Если целевой каталог не существует, rsync создаст его.

Стоит отметить, что rsync по-разному обрабатывает исходные каталоги с завершающей косой чертой (/). Если исходный каталог имеет косую черту в конце, команда скопирует только содержимое каталога в целевой каталог. Если косая черта в конце опущена, rsync копирует исходный каталог в целевой каталог.

Использование

rsync для синхронизации данных с / на удаленную машину #

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

В следующем примере мы переносим каталог с локального компьютера на удаленный:

  rsync -a / opt / media / remote_user @ remote_host_or_ip: / opt / media /  

Если вы не установили пароль без пароля SSH вход
на удаленную машину вам будет предложено ввести пароль пользователя.

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

  rsync -a remote_user @ remote_host_or_ip: / opt / media / / opt / media /  

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

  rsync -a -e "ssh -p 2322" / opt / media / remote_user @ remote_host_or_ip: / opt / media /  

При передаче больших объемов данных рекомендуется запускать команду rsync внутри экрана.
сеанс или использовать параметр -P :

  rsync -a -P remote_user @ remote_host_or_ip: / opt / media / / opt / media /  

Исключить файлы и каталоги #

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

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

В следующем примере показано, как исключить каталоги node_modules и tmp :

  rsync -a --exclude = node_modules --exclude = tmp / src_directory / / dst_directory /  

Второй вариант - использовать параметр --exclude-from и укажите файлы и каталоги, которые вы хотите исключить из файла.

  rsync -a --exclude-from = '/ exclude-file.txt' / src_directory / / dst_directory /  

/exclude-file.txt

Заключение #

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

10 практических примеров команды Rsync в Linux

Rsync ( Remote Sync ) - это наиболее часто используемая команда для удаленного копирования и синхронизации файлов и каталогов, а также локально в системах Linux / Unix .

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

Rsync Локальная и удаленная синхронизация файлов

В этой статье объясняется базовое и расширенное использование 10 команды rsync для удаленной и локальной передачи файлов на машинах под управлением Linux. Для выполнения команды rsync необязательно быть пользователем root .

Некоторые преимущества и особенности команды Rsync
  • Он эффективно копирует и синхронизирует файлы в удаленной системе и из нее.
  • Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений.
  • Это быстрее, чем scp ( Secure Copy ), потому что rsync использует протокол удаленного обновления, который позволяет передавать только различия между двумя наборами файлов. В первый раз он копирует все содержимое файла или каталога из источника в место назначения, но в следующий раз он копирует в место назначения только измененные блоки и байты.
  • Rsync потребляет меньше ресурсов полосы пропускания, поскольку использует методы сжатия и распаковки при отправке и получении данных на обоих концах.
Базовый синтаксис команды rsync
 # параметры rsync источник назначения 
Некоторые общие параметры, используемые с командами rsync
  • -v : подробный
  • -r : рекурсивно копирует данные (но не сохраняет отметки времени и разрешения при передаче данных.
  • -a : режим архива, который позволяет рекурсивно копировать файлы, а также сохраняет символические ссылки, права доступа к файлам, права собственности пользователей и групп, а также временные метки.
  • -z : сжатие данных файла.
  • -h : удобочитаемые числа вывода в удобочитаемом формате.

[Вам также может понравиться: Как синхронизировать файлы / каталоги с помощью Rsync с нестандартным портом SSH]

Установить Rsync в системе Linux

Мы можем установить пакет rsync с помощью следующей команды в вашем дистрибутиве Linux.

 $ sudo apt-get install rsync [В Debian / Ubuntu и Mint]
$ pacman -S rsync [в Arch Linux]
$ emerge sys-apps / rsync [В Gentoo]
$ sudo dnf install rsync [в Fedora / CentOS / RHEL и Rocky Linux / AlmaLinux]
$ sudo zypper install rsync [В openSUSE]
 

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

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

Следующая команда синхронизирует один файл на локальном компьютере из одного места в другое. В этом примере имя файла backup.tar необходимо скопировать или синхронизировать в папку / tmp / backups / .

 [[электронная почта защищена]] # rsync -zvh backup.tar.gz / tmp / backups /

создан каталог / tmp / backups
backup.tar.gz

отправлено 224,54 Кбайт, получено 70 байт 449.21 Кбайт / сек
общий размер 224,40K, ускорение 1,00
 

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

Локальные файлы Rsync

Копирование / синхронизация каталога на локальном компьютере

Следующая команда перенесет или синхронизирует все файлы из одного каталога в другой каталог на том же компьютере. В этом примере / root / rpmpkgs содержит некоторые файлы пакетов rpm, и вы хотите, чтобы этот каталог был скопирован в папку / tmp / backups / .

 [[электронная почта защищена]] # rsync -avzh / root / rpmpkgs / tmp / backups /

отправка добавочного списка файлов
rpmpkgs /
rpmpkgs / httpd-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / mod_ssl-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs / nagios-plugins-2.3.3-5.el8.x86_64.rpm

отправлено 3,47 МБ получено 96 байтов 2,32 МБ / сек
общий размер 3,74 млн ускорение 1,08
 

Локальный каталог Rsync

2.Копирование / синхронизация файлов и каталогов на или с сервера

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

Эта команда синхронизирует каталог с локального компьютера на удаленный. Например, , на вашем локальном компьютере есть папка « rpmpkgs », которая содержит несколько пакетов RPM , и вы хотите, чтобы содержимое этого локального каталога отправлялось на удаленный сервер, вы можете использовать следующую команду.

 [[защита электронной почты]: ~] # rsync -avzh / root / rpmpkgs [защита электронной почты]: / root /

Подлинность хоста 192.168.0.141 (192.168.0.141) 'не может быть установлен.
Отпечаток ключа ED25519 - это SHA256: bh3tiWQn4S5o6qmZhmtXcBROV5TU5h5t2C42QDEMx1c.
Этот ключ не известен под другими именами
Вы уверены, что хотите продолжить подключение (да / нет / [отпечаток пальца])? да
Предупреждение: Постоянно добавлен 192.168.0.141 (ED25519) в список известных хостов.
Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
rpmpkgs /
rpmpkgs / httpd-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / mod_ssl-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs / nagios-plugins-2.3.3-5.el8.x86_64.rpm

отправлено 3,74 МБ получено 96 байтов 439,88 КБ / сек
общий размер 3,74 млн ускорение 1,00
 

Удаленная система каталогов Rsync

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

Эта команда поможет вам синхронизировать удаленный каталог с локальным каталогом. В этом примере каталог / root / rpmpkgs , который находится на удаленном сервере, копируется на ваш локальный компьютер в / tmp / myrpms .

 [[защита электронной почты]: ~] # rsync -avzh [защита электронной почты]: / root / rpmpkgs / tmp / myrpms

Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
создан каталог / tmp / myrpms
rpmpkgs /
rpmpkgs / httpd-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / mod_ssl-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs / nagios-plugins-2.3.3-5.el8.x86_64.rpm

отправлено 104 байта получено 3,49M байта 997.68 Кбайт / сек
общий размер 3,74 млн ускорение 1,07
 

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

3. Rsync через SSH

С rsync мы можем использовать SSH ( Secure Shell ) для передачи данных, используя протокол SSH при передаче наших данных, вы можете быть уверены, что ваши данные передаются в защищенном соединении с шифрованием, чтобы никто может читать ваши данные, пока они передаются по сети в Интернете.

[Вам также может понравиться: Как защитить и укрепить сервер OpenSSH]

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

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

Чтобы указать протокол с rsync , вам необходимо указать параметр « -e » с именем протокола, который вы хотите использовать. В этом примере мы будем использовать « ssh » с опцией « -e » и выполнять передачу данных.

 [[защита электронной почты]: ~] # rsync -avzhe ssh [защита электронной почты]: / root / anaconda-ks.cfg / tmp

Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
анаконда-кс.cfg

отправлено 43 байта получено 1,10 КБ 325,43 байта / сек
общий размер 1.90K, ускорение 1.67
 

Rsync Копирование удаленного файла на локальный

Копирование файла с локального сервера на удаленный сервер с помощью SSH
 [[защита электронной почты]: ~] # rsync -avzhe ssh backup.tar.gz [защита электронной почты]: / backups /

Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
созданный каталог / резервные копии
backup.tar.gz

отправлено 224,59 Кбайт получено 66 байтов 64,19 Кбайт / сек
общий размер 224.Ускорение 40K составляет 1,00
 

Rsync Копирование локального файла на удаленный

[Вам также может понравиться: Как использовать Rsync для синхронизации новых или измененных / измененных файлов в Linux]

4. Показать прогресс при передаче данных с помощью rsync

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

 [[защита электронной почты]: /] # rsync -avzhe ssh --progress / root / rpmpkgs [защита электронной почты]: / root / rpmpkgs

Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
rpmpkgs /
rpmpkgs / httpd-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
          1,47 млн ​​100% 31,80 МБ / с 0:00:00 (xfr # 1, to-chk = 3/5)
rpmpkgs / mod_ssl-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
        138,01 КБ 100% 2,69 МБ / с 0:00:00 (xfr # 2, to-chk = 2/5)
rpmpkgs / nagios-4.4.6-4.el8.x86_64.rpm
          2,01 млн 100% 18,45 МБ / с 0:00:00 (xfr # 3, to-chk = 1/5)
rpmpkgs / nagios-plugins-2.3.3-5.el8.x86_64.rpm
        120,48 КБ 100% 1,04 МБ / с 0:00:00 (xfr # 4, to-chk = 0/5)

отправлено 3.Получено 74 МБ байтов 96 байтов 1,50 МБ / с
общий размер 3,74 млн ускорение 1,00
 

Ход выполнения Rsync при копировании файлов

5. Использование параметров –include и –exclude

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

Здесь, в этом примере, команда rsync будет включать только те файлы и каталог, которые начинаются с « R », и исключить все другие файлы и каталоги.

 [[защита электронной почты]: /] # rsync -avze ssh --include 'R *' --exclude '*' [защита электронной почты]: / var / lib / rpm / / root / rpm

Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
создан каталог / root / rpm
./
  Требовать имя 

отправлено 61 байт получено 273 074 байта 60 696,67 байт / сек
общий размер 761 856 ускорение 2,79
 

Rsync Включить и исключить файлы

6. Использование опции –delete

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

Мы можем использовать опцию « –delete » для удаления файлов, которых нет в исходном каталоге.

Источник и цель синхронизированы. Теперь создайте новый файл test.txt на цели.

 [[электронная почта защищена]: ~] # cd / root / rpm /
[[электронная почта защищена]: ~ / об / мин] # touch test.txt
[[защита электронной почты]: ~ / rpm] # rsync -avz --delete [защита электронной почты]: / var / lib / rpm / / root / rpm /

Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
удаление теста.текст
./
.dbenv.lock
.rpm.lock
Базовые имена
Имя конфликта
Dirnames
Enhancename
Filetriggername
Группа
Installtid
Имя
Устаревшее имя
Пакеты
Providename
Sha1header
Sigmd5
Предложить имя
Дополнение
Трансфилет
Имя триггера
__db.001
__db.002
__db.003

отправлено 445 байт получено 18 543 954 байта 2472586,53 байта / сек
общий размер 71 151 616 ускорение 3,84
 

Target имеет новый файл под названием test.txt , при синхронизации с источником с опцией « –delete » он удалил файл test.txt .

Параметр удаления Rsync

7. Установите максимальный размер файлов для передачи

Вы можете указать максимальный размер файла для передачи или синхронизации. Вы можете сделать это с помощью опции « –max-size ». В этом примере максимальный размер файла составляет 200k , поэтому эта команда будет передавать только те файлы, которые равны или меньше 200k .

 [[защита электронной почты]: ~] # rsync -avzhe ssh --max-size = '200k' / var / lib / rpm / [защита электронной почты]: / root / tmprpm

Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
создан каталог / root / tmprpm
./
.dbenv.lock
.rpm.lock
Имя конфликта
Enhancename
Filetriggername
Группа
Installtid
Имя
Устаревшее имя
Рекомендовать имя
Требовать имя
Sha1header
Sigmd5
Предложить имя
Дополнение
Трансфилет
Имя триггера
__db.002

отправлено 129,52 Кбайт получено 396 байт 28,87 Кбайт / сек
общий размер 71,15M ускорение 547,66
 

Rsync Установить максимальный размер передаваемых файлов

8. Автоматически удалять исходные файлы после успешной передачи

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

Итак, вы дождетесь завершения передачи, а затем удалите этот локальный файл резервной копии вручную? Конечно нет.Это автоматическое удаление может быть выполнено с помощью опции « –remove-source-files ».

 [[электронная почта защищена]: ~] # rsync --remove-source-files -zvh backup.tar.gz [электронная почта защищена]: / tmp / backups /

Пароль [защищенный адрес электронной почты]:
backup.tar.gz

отправлено 795 байт получено 2,33 КБ 894,29 байт / сек
общий размер 267,30K ускорение 85,40

  [[электронная почта защищена]: ~] # ls -l backup.tar.gz 

ls: нет доступа к 'backup.tar.gz': нет такого файла или каталога
 

Rsync Удалить исходный файл после передачи

9.Выполните пробный запуск с rsync

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

[Вам также может понравиться: Как синхронизировать два веб-сервера / веб-сайта Apache с помощью Rsync]

Использование этой опции не приведет к внесению каких-либо изменений в файлы и покажет вывод команды. Если вывод показывает то же самое, что вы хотите, то вы можете удалить опцию –dry-run из своей команды и запустить на терминале.

 [[защита электронной почты]: ~] # rsync  --dry-run  --remove-source-files -zvh backup.tar.gz [защита электронной почты]: / tmp / backups /

Пароль [защищенный адрес электронной почты]:
backup.tar.gz

отправлено 50 байт получено 19 байт 19,71 байт / сек
общий размер 267,30K, ускорение 3,873,97  (СУХОЙ ЗАПУСК) 
 

Пробный запуск Rsync

10. Rsync устанавливает предел пропускной способности и передает файл

Вы можете установить ограничение полосы пропускания при передаче данных с одного компьютера на другой с помощью опции « –bwlimit ».Эта опция помогает нам ограничить пропускную способность I / O .

 [[email protected]] # rsync --bwlimit = 100 -avzhe ssh / var / lib / rpm / [email protected]: / root / tmprpm /
Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
отправлено 324 байта получено 12 байтов 61,09 байт / сек
общий размер 38.08M ускорение 113347.05 

Кроме того, по умолчанию rsync синхронизирует только измененные блоки и байты, если вы явно хотите синхронизировать весь файл, используйте с ним опцию « -W ».

 [[электронная почта защищена]] # rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
отправлено 14,71 МБ получено 31 байт 3,27 МБ / сек
общий размер 16,18M ускорение 1,10 

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

Как использовать rsync

В этой статье показано, как использовать rsync .

Когда использовать

rsync

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

Вы можете использовать эту функцию для выполнения ряда задач. Например, вы можете использовать rsync для резервного копирования вашего веб-сайта на другой компьютер. В качестве альтернативы предположим, что у вас уже установлена ​​среда разработки веб-сайта на другом сервере.Вы можете использовать rsync для развертывания этой среды в своей учетной записи хостинга A2.

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

Как использовать

rsync

Программа rsync имеет множество функций, но для начала достаточно следующих параметров командной строки:

  • Параметр -a включает режим архивирования. В режиме архива rsync сохраняет все права доступа к файлам, владение и время модификации.
  • Параметр -e указывает используемую удаленную оболочку. Часто это ssh .
  • Параметр -l сохраняет все символические ссылки.

    Если вы используете опцию -a , эта опция включается автоматически.

  • Параметр -r заставляет rsync проходить через любые подкаталоги.

    Если вы используете опцию -a , эта опция включается автоматически.

  • Параметр -v включает подробный режим, что означает, что rsync отображает информацию во время работы.(По умолчанию rsync не отображает никакой информации.) Вы можете опустить этот параметр или для просмотра более подробной информации используйте параметр -vv .
  • Параметр -z включает сжатие при передаче файлов.

Используя эти параметры rsync , мы можем просмотреть несколько примеров. Предположим, вы хотите создать резервную копию файлов своего веб-сайта на другом сервере. Для этого выполните следующие действия:

  1. Войдите в свою учетную запись, используя SSH.
  2. Чтобы убедиться, что вы находитесь в своем домашнем каталоге, введите следующую команду:
     cd ~ 
  3. Чтобы создать резервную копию (или «отправить») вашего каталога public_html в учетную запись пользователя на удаленном сервере по адресу example.com , введите следующую команду:

     rsync -avz - e ssh public_html [адрес электронной почты защищен]: ~ / backup 

    Эта команда предполагает, что удаленный сервер использует SSH на порту 22. Например, если вы выполняете резервное копирование на другой сервер хостинга A2, вы должны использовать следующую команду, потому что SSH работает на порту 7822:

     rsync -avz -e "ssh -p7822" public_html [электронная почта защищена]: ~ / backup 
  4. После завершения rsync , пользователь на удаленном сервере в примере .com имеет в своей учетной записи каталог backup / public_html , который является точной копией каталога public_html в вашей учетной записи.

Другой распространенный сценарий - «извлечение» файлов из удаленного места. Например, у вас может быть настроена среда разработки на удаленном сервере. Вы можете использовать rsync для извлечения файлов из удаленного репозитория в свою учетную запись хостинга A2. При каждом последующем «извлечении» rsync будет обновлять только те файлы, которые изменились с момента последнего обновления, тем самым экономя время и пропускную способность.Для этого из домашнего каталога выполните следующую команду:

 rsync -avz -e ssh [защита электронной почты]: ~ / public_html. 

После завершения rsync ваш каталог public_html будет содержать копию файлов в каталоге public_html удаленного сервера.

Дополнительная информация

Эта статья представляет собой лишь краткое введение в расширенные возможности rsync . Чтобы просмотреть официальную интерактивную документацию по программе rsync , посетите http: // rsync.samba.org/documentation.html.

Примеры

RSync - параметры Rsync и как копировать файлы через SSH

Rsync означает «удаленная синхронизация». Это инструмент удаленной и локальной синхронизации файлов, который помогает вам эффективно передавать файлы.

Что такое RSync

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

Некоторые из дополнительных функций Rsync включают:

  • Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений
  • Не требует прав суперпользователя
  • Конвейеры передачи файлов для минимизации затрат на задержку

Вы можете только передавать файлы с локального на удаленный или с удаленного на локальный. Rsync не поддерживает передачу файлов от удаленного к удаленному.

Как работает RSync

Теперь, когда вы знаете, что такое Rsync, давайте посмотрим, как с ним работать.

Rsync работает аналогично другим инструментам удаленного управления сервером, таким как SSH и SCP.

Вот основной синтаксис Rsync:

  rsync [параметры] источник [назначение]  

Вот синтаксис для передачи файла из вашей локальной системы на удаленный сервер. Это также называется «выталкивающей» операцией.

  rsync local_file_path user @ remote-host: remote_file_path  

Вот как передать файл с удаленного сервера в вашу локальную систему, также называемая операцией «pull».

  rsync user @ remote-host: remote_file_path local_file_path  

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

Как использовать флаги в RSync

Rsync позволяет добавлять дополнительные параметры с помощью флагов командной строки. Давайте посмотрим на несколько полезных флагов.

Рекурсивный

Если вы добавите параметр -r , RSync выполнит рекурсивную передачу файлов.Это полезно при работе с каталогами. Вот пример:

  rsync -r user @ remote-host: remote_directory / local_directory  

Archive

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

Флаг архива также рекурсивно синхронизирует файлы, поэтому он используется чаще, чем флаг рекурсии. Вот как вы его используете:

  rsync -a user @ remote-host: remote_directory / local_directory  

Сжатие

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

  rsync -az user @ remote-host: remote_directory / local_directory  

Progress

Для передачи больших файлов полезно знать о ходе выполнения операции. Вы можете использовать флаг -P , чтобы узнать о ходе передачи файла. С помощью Rsync вы также можете возобновить передачу файлов, если они прерваны.

  rsync -aP user @ remote-host: remote_directory / local_directory  

Verbose

Наконец, команда verbose может помочь вам понять каждый шаг передачи файла.Для этого вы можете использовать флаг -v .

  rsync -av user @ remote-host: remote_directory / local_directory  

Вы также можете использовать команду help с RSnsc, чтобы получить список всех параметров и флагов.

  rsync --help  

rsync help

Заключение

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

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

Ссылки

Я Маниш и пишу о кибербезопасности, искусственном интеллекте и DevOps. Если вам понравилась эта статья, вы можете найти мой блог здесь.

20 полезных примеров в Linux

Введение

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

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

Следуйте этому руководству, чтобы узнать, как использовать rsync с 20 примеров команд для большинства случаев использования в Linux.

Предварительные требования

  • Пользователь с sudo или root привилегиями
  • Доступ к терминалу / командной строке
  • SSH-доступ для удаленных примеров rsync

Синтаксис команды Rsync

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

  Параметры rsync НАЗНАЧЕНИЕ ИСТОЧНИКА  

Для удаленной передачи данных необходимо указать адрес хоста, но об этом позже.

Параметры Rsync

Инструмент rsync имеет множество опций. Вы можете ввести rsync в свой терминал и получить все подробности. Мы перечислим некоторые из наиболее распространенных параметров rsync.

Сюда входят:

-r Позволяет рекурсивно синхронизировать данные, но не сохраняет права собственности на пользователей и группы, разрешения, временные метки или символические ссылки.
-a Режим архива ведет себя как рекурсивный режим, но сохраняет все права доступа к файлам, символические ссылки, права собственности на файлы и т. Д.
-z Используется для сжатия данных во время переездов для экономии места.
-b Выполняет резервное копирование во время синхронизации данных.
-h Показывает числа на выходе в удобочитаемом формате.
-n Запуск всухую. Используется для тестирования перед фактической синхронизацией.
-e Указывает rsync использовать протокол SSH для удаленных передач.
-progress Отображает ход передачи во время синхронизации.
-v Подробный вывод. Отображает подробную информацию о переводе.
-q Используется для подавления вывода для команды и параметров rsync.

Примеры команды Rsync

Rsync - это универсальный инструмент синхронизации, который можно настроить в соответствии с конкретными задачами.В этом руководстве мы будем использовать опции archive ( -a ) и verbose ( -v ) при необходимости.

Обратитесь к примерам rsync ниже, чтобы охватить большую часть использования rsync.

Примечание : Будьте осторожны при использовании завершающей косой черты в исходном пути при синхронизации каталогов. След играет важную роль. Если вы вводите завершающую косую черту в источнике, команда rsync не создает исходную папку в месте назначения; он копирует только файлы каталога.Если вы не используете завершающую косую черту, rsync также создает исходный каталог внутри целевого каталога.

1. Копирование одного файла локально

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

Например:

  rsync -v /home/test/Desktop/sample.txt / home / test / Desktop / rsync /  

Команда передает образец .txt в каталог rsync . Если целевой каталог не существует, добавьте косую черту в конце, и rsync создаст его, как в нашем примере.

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

2. Копирование нескольких файлов локально

Чтобы скопировать несколько файлов с помощью rsync, добавьте полные пути к исходным файлам:

  rsync -v / home / test / Desktop / sample.txt /home/test/Desktop/sample2rs.txt / home / test / Desktop / rsync  

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

3. Копирование каталога и всех подкаталогов локально (рекурсивное копирование файлов и каталогов)

Чтобы скопировать каталог и его содержимое в другое место на вашем компьютере, используйте параметр -a или -r .Использовали архив вариант :

  rsync -av / home / test / Desktop / Linux / home / test / Desktop / rsync  

В приведенном выше примере показано, как скопировать каталог Linux в каталог rsync . Обратите внимание, что мы не использовали завершающую косую черту после Linux . Следовательно, инструмент rsync создал каталог Linux и его содержимое внутри каталога rsync .

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

Чтобы скопировать каталог / home / test / Desktop / Linux в каталог / home / test / Desktop / rsync на удаленном компьютере, необходимо указать IP-адрес места назначения.

Добавьте IP-адрес и место назначения после исходного каталога. Не забудьте поставить двоеточие ( : ) после IP-адреса удаленного хоста без пробелов перед местом назначения.

Команда выглядит так:

  rsync -av / home / test / Desktop / Linux 192.168.56.100:/home/test/Desktop/rsync  

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

  rsync -a / home / test / Desktop / Linux jay @ 192.168.56.100: / home / test / Desktop / rsync  

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

Например:

  rsync -av /home/test/Desktop/sample_file.txt 192.168.56.100:/home/test/Desktop/rsync  

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

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

Например:

  rsync -av / home / test / Desktop / Linux / / home / test / Music 192.168.56.100:/home/test/Desktop/rsync  

6. Укажите протокол rsync для удаленных передач

Утилиту rsync можно указать с помощью опции -e использовать определенный протокол для передачи файлов. Чтобы использовать Rsync через SSH для удаленной передачи файлов, добавьте -e ssh к команде rsync .

Например, чтобы передать sample.txt с рабочего стола на рабочий стол удаленного компьютера:

  rsync -e ssh /home/test/Desktop/sample.txt 192.168.56.100:/home/test/Desktop  

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

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

Чтобы получить каталог с сервера, укажите его IP-адрес перед источником.

Например:

  rsync -av 192.168.56.100: / home / test / Desktop / DirM / home / test / Desktop  

Эта команда скопировала каталог DirM из 192.168.56.100 в / home / test / Desktop на локальном сервере.

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

  rsync -v 192.168.56.100:/home/test/Desktop/testfile.txt / home / test / Рабочий стол  

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

Для передачи нескольких файлов или нескольких каталогов с удаленного сервера укажите пути в фигурных скобках после IP-адреса сервера.Разделите пути запятой.

Например:

  rsync -av 192.168.56.100:{/home/test/Desktop/DirM,/home/test/Desktop/Dir1} / home / test / rsync  

То же самое и с файлами. Перечислите в фигурных скобках столько файлов, сколько вам нужно.

9. Показать ход выполнения rsync во время передачи данных

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

Добавьте флаг --progress к команде rsync , чтобы просмотреть объем переданных данных, скорость передачи и оставшееся время.

Например, для резервного копирования Dir1 на удаленный сервер и отображения прогресса введите:

  rsync -av --progress / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync  

10. Удалите несуществующий исходный файл или каталог из места назначения

Используйте параметр --delete , чтобы синхронизировать источник и цель.

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

  rsync -av --delete / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync  

11. Удалить исходные файлы после передачи

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

В этом случае используйте флаг --remove-source-files , чтобы удалить указанный вами исходный файл.

Например, эта команда передает файл резервной копии weekly.zip , а затем удаляет его из источника:

  rsync -v --remove-source-files /home/test/backup/weekly.zip 192.168.56.100:/home/test/Desktop/rsync/  

12. Rsync Dry Run

Rsync - мощный инструмент синхронизации. Поскольку этот инструмент позволяет копировать и удалять данные, мы советуем сначала выполнить пробный запуск, чтобы проверить, выполняет ли rsync то, что вы намеревались сделать.

Параметр пробного прогона особенно полезен, когда вы хотите удалить файлы.Чтобы выполнить пробный запуск, используйте параметр --dry-run и следуйте обычному синтаксису rsync.

Например:

  rsync -av --dry-run --delete / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync  

Результат выглядит так же, как и при фактической синхронизации файлов. Однако на этот раз данные не будут синхронизированы. Для подтверждения того, что произошла проверка, а не фактическая передача, внизу терминала отображается (СУХОЙ ЗАПУСК).

13.Установить максимальный размер файла для передачи

Чтобы определить максимальный размер файла, который будет передавать rsync, используйте --max-size = add_size .

Например, чтобы передать файлы размером не более 500 КБ, используйте эту команду:

  rsync -av --max-size = 500k / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync/  

14. Установите минимальный размер файла для передачи

Используйте --min-size = add_size с rsync, если вы не хотите передавать файлы меньше указанного вами размера.Эта опция полезна, например, когда вы хотите пропустить небольшие файлы журнала или миниатюры.

Чтобы пропустить любой файл размером менее 10 КБ, выполните следующую команду:

  rsync -av --min-size = 10k / home / test / Desktop / 192.168.56.100:/home/test/Desktop/rsync/  

15. Установка предела пропускной способности rsync

Если вы хотите определить предел пропускной способности при передаче данных между машинами, используйте --bwlimit = KB / s .

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

Чтобы установить максимальную скорость передачи 50 КБ / с, введите:

  rsync -av --bwlimit = 50 --progress / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync/  

Мы также использовали параметр --progress , чтобы продемонстрировать использование --bwlimit .

16. Копирование определенного типа файла

Вы можете использовать rsync для копирования только определенного типа файла. Для этого используйте звездочку ( * ) вместо имени файла и добавьте расширение.

Например, чтобы копировать только файлы .txt, введите:

  rsync -v /home/test/Documents/*.txt / home / test / Desktop / rsync /  

Эта команда rsync передает все текстовые файлы из каталога Documents в каталог rsync на рабочем столе.

17. Копировать структуру каталогов, но пропускать файлы

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

Для этого добавьте -f "+ * /" -f "- *" перед исходным каталогом.

Например, чтобы скопировать структуру каталога Linux в Documents , введите:

  rsync -av -f "+ * /" -f "- *" / home / test / Desktop / Linux / home / test / Documents  

18. Добавить штамп даты в имя каталога

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

Добавьте $ (дата +% Y-% m-% d) к имени каталога назначения, который вы хотите создать. Эта опция полезна, когда вы хотите отслеживать, когда произошла передача, не открывая свойства каталога.

Например:

  rsync -av / home / test / Desktop / Linux / home / test / Desktop / rsync $ (дата +% Y-% m-% d)  

19. Не копировать исходный файл, если был изменен тот же конечный файл

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

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

Чтобы избежать перезаписи измененных файлов назначения, используйте параметр -u .

Например:

  rsync -avu / home / test / Desktop / Linux / / home / test / Desktop / rsync  

20. Покажите разницу между исходным и конечным файлами

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

Например:

  rsync -avi / home / test / Desktop / Linux / / home / test / Desktop / rsync  

Пример выше показывает, что файл sample2rs.txt отсутствует в месте назначения.

Возможные буквы в выводе:

  • f - означает файл
  • d - показывает, что целевой файл находится под вопросом
  • t - показывает, что метка времени изменилась
  • s - показывает размер поменял

Заключение

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

20+ переключателей команды Rsync и общие примеры использования с примерами

Просмотры сообщений:
16 019

«rsync» - мощная команда в среде Linux.

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

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

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

Общий синтаксис для Rsync:

  # rsync [параметры] Источники назначения.
  

Переключатели rsync:

1, -v, –verbose

Повышение уровня детализации.

Пример:

Я создал файл «rsync» в папке «/ root / Rsync /» для целей тестирования.

  [электронная почта защищена] [~] # rsync -v / root / Rsync / rsync. 
rsync

отправлено 65 байт получено 31 байт 192,00 байт / сек
общий размер 0, ускорение 0,00
 

2, -r, –рекурсивный

Рекурсия в каталоги.

3, -l, –ссылки

Скопируйте символические ссылки как символические ссылки.

4, -p, –perms

Сохранить разрешения.

5, -t, –times

Сохранить время модификации.

6, -g, –группа

Группа сохранения.

7, -о, –владелец

владелец заповедника (только суперпользователь)

8, -D

То же, что и –устройства –специальные.

–устройства: сохраняют файлы устройств (только суперпользователь).
–специальные: сохранить специальные файлы.

9, -H, –корпус

Сохранить жесткие ссылки

10, -A, –acls

Сохранить ACL (подразумевает –perms)

11, -X, –xattrs

Сохранить расширенные атрибуты

12, -a, –архив

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

Архивный режим; равно -rlptgoD (no -H, -A, -X)

13, -q, –тихий

Подавлять сообщения, не связанные с ошибками.

14, Чтобы указать размер файла для синхронизации:

–max-size = РАЗМЕР

Не передавайте файлы размером больше SIZE
–min-size = SIZE

Не передавайте файлы размером меньше SIZE

.

15, –удалено

Удалить посторонние файлы из каталогов назначения.

16, W, - целиком

Копировать файлы целиком (без алгоритма дельта-xfer)

17, -u, –update

Пропускать более новые файлы на ресивере.Это означает, что не перезаписывайте измененные файлы в месте назначения.

18, –прогресс

Просмотр хода выполнения rsync во время передачи.

19, шаблон включения и исключения.

–включить
– исключить

Паттерны заключаются в одинарные кавычки.

Примеры:

  [[защита электронной почты] crybit] # rsync -avz --include 'c *' --exclude '*' / root / crybit / 109.200.11.67:/root/Rsinc101 
Пароль [защищенный адрес электронной почты]:
stdin: это не tty
отправка добавочного списка файлов
cry1.док
cry2.doc
cry3.doc
cry4.doc
cry5.doc

отправлено 267 байт получено 107 байт 68,00 байт / сек
общий размер 0, ускорение 0,00
 

В приведенном выше примере файлы, начинающиеся с «c», включены в Rsync, а все остальные файлы исключены из операции Rsync.

20 -e: Rsync через оболочку (SSH)

Синтаксис:

  # rsync -avz -e Источник назначения ssh
  

Некоторые полезные комбинации переключателей и полезные примеры «Rsync»:

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

1, Как синхронизировать два каталога на одной машине?

Я создал два каталога (также несколько файлов внутри каждого каталога) в / root, чтобы проверить использование rsync.

  / корень / Rsync1 /
/ корень / Rsync2 /
  

Пример:

  [электронная почта защищена] [~] # rsync -zvr / root / Rsync1 / / root / Rsync2 /
  отправка инкрементного списка файлов
rsync1.txt
rsync10.txt
rsync2.txt
rsync3.текст
......
......
отправлено 502 байта получено 202 байта 1408,00 байт / сек
общий размер 0, ускорение 0,00
 

Где,
-z - включить сжатие
-v verbose
-r указывает на рекурсивный

2, Сохраните следующий параметр при синхронизации файлов с помощью переключателя -a.

 r, l, p, t, g, o, D: детали переключателя упомянуты в разделе выше.
Рекурсивный режим, символические ссылки, разрешения, отметка времени, владелец и группа
 

См. Пример ниже:

 [адрес электронной почты защищен] [~] # ll / root / Rsync1 / rsync10.текст
-rw-r - r-- 1 root root 0 17 февраля 07:40 /root/Rsync1/rsync10.txt
[электронная почта защищена] [~] # ll /root/Rsync2/rsync10.txt
-rw-r - r-- 1 root root 0 17 февраля 07:40 /root/Rsync2/rsync10.txt
 

3, Как Rsync файлы с удаленного сервера на локальный?

Выход аналогичен SCP, синтаксис для выполнения того же действия вставлен ниже:

  # rsync -azv Удаленный IP-адрес: / путь / для / Sync / Путь / к / Sync
  

Некоторые примеры:

Синхронизировать каталог с удаленного на локальный

  [[email protected] crybit] # rsync -azv MY.СЕРВЕР.IP: / корень / Rsync1 / корень / crybit /
  [адрес электронной почты защищен] пароль:
stdin: это не tty
получение инкрементного списка файлов
Rsync1 /
Rsync1 / rsync1.txt
Rsync1 / rsync10.txt
Rsync1 / rsync2.txt
Rsync1 / rsync3.txt
.....
.....
отправлено 205 байт получено 527 байт 77,05 байт / сек
общий размер 0, ускорение 0,00
 

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

  [[email protected] crybit] # rsync -azv 109.200.11.67: / корень / Rsync1 / * / корень / crybit /
  [адрес электронной почты защищен] пароль:
stdin: это не tty
получение инкрементного списка файлов
rsync1.txt
rsync10.txt
rsync2.txt
rsync3.txt
...
...
отправлено 201 байт получено 499 байт 93,33 байт / сек
общий размер 0, ускорение 0,00
 

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

Синтаксис:

  # rsync -azv / local-path / для / Sync / Remote-IP: / path / to / Sync
  

Примеры :

  [[электронная почта] crybit] # rsync -avz / root / crybit / 109.200.11.67: / корень / Rsinc101
  [адрес электронной почты защищен] пароль:
stdin: это не tty
отправка добавочного списка файлов
создан каталог / root / Rsinc101
./
rsync1.txt
rsync10.txt
rsync2.txt
rsync3.txt
...
...
отправлено 1028 байт получено 399 байт 190,27 байт / сек
общий размер 0, ускорение 0,00
 
 Примечание 1: В примерах 3 и 4 вы можете использовать формат [email protected]: / path, если у вас есть только права пользователя на сервере.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *