Linux копирование файлов rsync

Содержание
  1. Копируем с RSync: основные примеры синхронизации файлов
  2. Установка
  3. Базовый синтаксис
  4. Основные опции RSync
  5. Как скопировать/синхронизировать файлы у себя на компьютере
  6. Как скопировать/синхронизировать с компьютера на удаленный сервер
  7. Как скопировать/синхронизировать с удаленного сервера на компьютер
  8. Как указать другой порт ssh и ключ?
  9. Я хочу видеть прогресс копирования/синхронизации
  10. Как ограничить скорость передачи файлов?
  11. Как исключить некоторые файлы или включить определенный тип файлов?
  12. Исключения с помощью .rsync-filter
  13. Другие полезные опции
  14. —delete / —delete-after / —del (—delete_during)
  15. —no-perms —no-owner —no-group
  16. —inplace
  17. -W, —whole-file
  18. Что в итоге?
  19. Как использовать rsync для копирования файлов и папок в Linux
  20. Используйте эти примеры rsync, чтобы узнать, как копировать из командной строки
  21. Синтаксис rsync
  22. Примеры rsync
  23. Копирование файлов по размеру
  24. Копировать целые папки
  25. Исключить некоторые файлы
  26. 17 полезных примеров команд rsync (удаленная синхронизация) в Linux
  27. 17 полезных примеров команд rsync (удаленная синхронизация) в Linux
  28. Пример: 1) Копирование или синхронизация файлов локально (rsync -zvh)
  29. Пример: 2) Копировать или синхронизировать каталог локально (rsync -zavh)
  30. Локальное рекурсивное копирование файлов и каталогов (rsync -zrvh or rsync -zavh)
  31. Пример: 4) Копирование или синхронизация файлов и каталогов из локальной в удаленную систему.
  32. Пример: 5) Копирование или синхронизация файлов и каталогов с удаленного компьютера в локальную систему.
  33. Пример: 6) Укажите удаленную оболочку во время синхронизации (rsync -e ssh)
  34. Пример: 7) Отображение хода синхронизации в выводе команды rsync
  35. Пример: 8) Скопируйте структуру каталогов без копирования файлов
  36. Пример: 9) Возобновить передачу больших файлов после сбоя в scp
  37. Пример: 10) Удалить файлы в месте назначения, если его нет в источнике (–delete)
  38. Пример: 11) Установите ограничение на размер передаваемого файла (–max-size)
  39. Пример: 12) Не синхронизировать/копировать измененный файл в месте назначения
  40. Пример: 13) Удалить файлы из источника после синхронизации (–remove-source-files)
  41. Пример: 14) Команда rsync пробного запуска перед фактической синхронизацией
  42. Пример: 15) Включить и исключить файлы во время синхронизации с rsync
  43. Пример: 16) Установите ограничение на скорость передачи данных в rsync(–bwlimit= )
  44. Пример: 17) Просмотр разницы в файлах и каталогах между источником и местом назначения

Копируем с RSync: основные примеры синхронизации файлов

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

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

Сам сервис работает на SSH протоколе по умолчанию, но может работать и на собственном протоколе rsyncd, но обо всем по порядку.

Установка

По умолчанию rsync есть не везде, поэтому если вы получили ошибку «bash: rsync: command not found» — значит его нужно установить (как на локальной, так и на удаленной машине):

Базовый синтаксис

Основные опции RSync

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

Базовые опции:

Работа с файлами:

Настройка синхронизации/подключения/передачи файлов:

Отображение/результат:

Опции полезные для создания инкрементальных резервных копий:

Теперь пройдемся по базовым примерам.

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

Данная команда копирует файлы (т.е. содержимое) из каталога /home/user/Downloads/TEMP/files/ в каталог /home/user/Downloads/TEMP/copyfiles.

  • если в конце пути до источника (каталога) нет слэша, то будет скопирован сам каталог (в примере выше это files).
  • если слэш указан, то будет скопировано содержимое каталога (т.е. то, что внутри files, из примера выше)

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

Находясь в нужном каталоге, мы скопировали каталог 2021, файл logo.svg.png и еще один каталог copy2021 в несуществующий ранее каталог copydir.

Вот как это выглядит наглядно:

Получается это не плохая альтернатива cp 🙂

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

Важно указывать полный путь на удаленном сервере, иначе rsync попытается скопировать каталог «2021» в корень удаленного сервера.
Еще важно указывать полный путь до удаленного сервера, так как, к примеру, копируя файл «file.txt» на сервер указав путь /home/user/somedir, каталог somedir не будет создан, вместо этого файл file.txt скопируется на сервер под именем somedir. Чтобы избежать этого используйте путь полный путь /home/user/somedir / .

Если мы хотим немного сжать файлы при передачи (к примеру у нас медленный интернет), можно использовать ключ -z:

Но важно понимать, что сжатие имеет смысл использовать там где это нужно, так как в новых версиях ssh уже использует сжатие передаваемых данных, тратить ресурсы CPU не стоит, особенно на слабых машинах или NAS серверах.

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

В данном примере мы копируем файл filefromsrv в каталог, в котором находимся.

Как указать другой порт ssh и ключ?

С помощью опции -e (она же —rsh). Вот как скопировать файл с компьютера на сервер у которого не стандартный ssh порт:

А вот как можно указать ключ авторизации и порт:

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

Я хочу видеть прогресс копирования/синхронизации

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

Читайте также:  Сбросить пароль mac os high sierra

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

Если мы хотим видеть наиболее интересный вывод, то нам в этом поможет ключ —progress. Вот пример:

Некоторые могут советовать ключ -P, но имейте в виду, -P включает в себя ключ —partial и —progress одновременно (что в целом не так страшно).

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

Нужно указать опцию —bwlimit=SPEED, где SPEED это скорость в Кбайт в секунду:

Полезно бывает на слабом интернете с большими файлами.

Как исключить некоторые файлы или включить определенный тип файлов?

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

Конечно можно указать одну директорию:

Еще мы можем исключить файлы с определенным расширением:

Саму опцию мы можем использовать несколько раз:

Для копирования определенного типа файлов (да и не только) мы можем использовать опцию —include. Используется она точно так же, как и exclude. Вот пример, в котором я загружаю на сервер только все файлы с расширением .sql:

Исключения с помощью .rsync-filter

Для более гибкой настройки копирования (в случае регулярного копирования это будет очень полезно) все исключения/включения можно оформить в файле .rsync-filter (это появилось в более поздних версиях rsync).

Попробую объяснить подробно на примере, как и что мы можем исключать (спасибо этому блогу за хорошее описание).
Допустим, у меня есть такой каталог (somedir), в котором я хочу исключить (красная стрелка) или оставить (зеленая стрелка) некоторые файлы/каталоги:

Ниже приведен один из примеров настройки исключений в файле .rsync-filter с комментариями:

Для того, чтобы rsync заметил файл .rsync-filter, достаточно указать опцию -F:

В итоге на сервер будут скопированы только эти файлы:

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

Другие полезные опции

—delete / —delete-after / —del (—delete_during)

Если мы делаем ежедневные резервные копии и не хотим засорять удаленный сервер лишними файлами (которых уже нет в источнике), то мы можем использовать опцию —delete:

В результате будет удален файл, которого больше нет в директории источника (в somedir):

По умолчанию, rsync сначала выполняет удаление файлов перед копированием для уверенности, что хватит свободного места на приемной стороне (т.е. использует по умолчанию —delete-before). Если мы хотим удалять файлы после копирования, используйте параметр —delete-after.

Если мы хотим хотим удалять файлы в процессе передачи, а не перед, то можно использовать опцию —del (—delete_during). Это поможет сэкономить немного ресурсов и времени.

Кстати, это не все «delete» параметры, которые есть, вот их полный список с кратким описанием:

А если вам по какой-то причине не нужно обновлять файлы на принимающем сервере, вместо опции —del.. можно использовать опцию —ignore-existing.

—no-perms —no-owner —no-group

Иногда нам может потребоваться не переносить атрибуты (права файлов, пользователя и группу пользователя). Для этого мы можем воспользоваться опциями —no-p —no-o —no-g (оно же —no-perms —no-owner —no-group):

Важно соблюдать порядок (особенности работы «—no-OPTION» в rsync).

—inplace

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

-W, —whole-file

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

Что в итоге?

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

Если вы где-то нашли ошибку, или есть еще какие-то интересные способы использования rsync — пишите, я добавлю их в статью ;).

Источник

Как использовать rsync для копирования файлов и папок в Linux

Используйте эти примеры rsync, чтобы узнать, как копировать из командной строки

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

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

Синтаксис rsync

Правильное использование команды rsync требует правильного синтаксиса:

Предоставленное выше пространство option может быть заполнено рядом параметров. Полный список приведен в разделе ОБЗОР ОПЦИЙ документации rsync, но вот несколько распространенных примеров:

  • -v , –verbose : увеличьте детализацию (более подробно рассказывается о том, что делает команда).
    • – info = FLAGS. Предоставляет подробные информационные сообщения.
    • – debug = FLAGS. Предоставляет подробные сообщения отладки.
    • – msgs2stderr : специальная обработка вывода для отладки.
  • -q , –quiet . Подавляет сообщения, не связанные с ошибками.
    • – no-motd : подавляет сообщение дня в режиме демона (MOTD).
  • -c , –checksum : пропускает файлы на основе контрольной суммы, а не времени и размера мода.
  • -r , –recursive . Просмотрите дополнительные подкаталоги.
  • -b , –backup : создавайте резервные копии.
    • – backup-dir = DIR. Делайте резервные копии в соответствующей иерархии каталогов.
    • – суффикс = SUFFIX. Добавляет текст суффикса в конец файлов резервной копии.
  • -d , –dirs : переносить только каталоги, не просматривая их.
Читайте также:  Irql less or equal windows 10 синий экран

Примеры rsync

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

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

В этом примере выше все файлы JPG из папки /data/ копируются в папку /backupdata/ в папке рабочего стола пользователя Jon.

Копирование файлов по размеру

Этот пример rsync немного сложнее, поскольку он настроен на не копировать файлы, если их размер превышает 2048 КБ. То есть копировать только файлы меньше указанного размера.

Вы можете использовать k, m, или g , чтобы указать килобайты, мегабайты и гигабайты в множителе 1024, или кб , мб или gb , чтобы использовать 1000.

То же самое можно сделать для – min-size , как вы видели выше. В этом примере rsync будет копировать только файлы размером 30 МБ или более.

Когда вы используете rsync для копирования файлов очень большого размера, например, 30 МБ и более, особенно если их несколько, возможно, вы захотите увидеть ход выполнения функции копирования, чтобы знать, что команда обрабатывает. В этих случаях используйте параметр – progress , чтобы процесс работал до 100%.

Копировать целые папки

Параметр – recursive предоставляет простой способ скопировать всю папку в другое место, например в папку /data2/ в приведенном выше примере.

Эта команда скопирует всю папку и все ее содержимое в новое место.

Исключить некоторые файлы

Вы также можете скопировать всю папку, но исключить файлы с определенным расширением, например, файлы DEB в этом примере выше.

В этом примере вся папка /data/ копируется в /backupdata/, как и в предыдущем примере, но все файлы DEB исключаются из копии.

Источник

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

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

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

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

Локальная синхронизация: # rsync

Удаленная синхронизация: # rsync@ :

Удаленная синхронизация: # rsync @ :

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

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

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

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

Предположим, мы хотим скопировать файл из домашнего каталога пользователя pkumar в папку /opt/back, выполните следующую команду rsync >rsync -zvh /home/pkumar/OpenStack-Networking.pdf /opt/backup
OpenStack-Networking.pdf
sent 4.09M bytes received 35 bytes 2.73M bytes/sec
total size is 6.15M speedup is 1.50
[[email protected]

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

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

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

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

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

Локальное рекурсивное копирование файлов и каталогов (rsync -zrvh or rsync -zavh)

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

Читайте также:  При загрузке windows появляется полоски

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

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

Пример: 4) Копирование или синхронизация файлов и каталогов из локальной в удаленную систему.

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

Пример: 5) Копирование или синхронизация файлов и каталогов с удаленного компьютера в локальную систему.

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

Вышеуказанная команда автоматически создаст папку “rpms_db” в папке /tmp на нашем локальном компьютере

Пример: 6) Укажите удаленную оболочку во время синхронизации (rsync -e ssh)

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

Пример: 7) Отображение хода синхронизации в выводе команды rsync

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

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

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

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

Пример: 9) Возобновить передачу больших файлов после сбоя в scp

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

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

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

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

Пример: 11) Установите ограничение на размер передаваемого файла (–max-size)

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

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

Пример: 12) Не синхронизировать/копировать измененный файл в месте назначения

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

Пример: 13) Удалить файлы из источника после синхронизации (–remove-source-files)

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

Пример: 14) Команда rsync пробного запуска перед фактической синхронизацией

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

Пример: 15) Включить и исключить файлы во время синхронизации с rsync

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

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

Пример: 16) Установите ограничение на скорость передачи данных в rsync(–bwlimit= )

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

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

Пример: 17) Просмотр разницы в файлах и каталогах между источником и местом назначения

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

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

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

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

Источник

Оцените статью