Rsync удалить отсутствующие файлы

Обновлено: 28.04.2024

Если всё плохо и на дисках создать каталог уже нельзя, то нас всегда спасёт /dev/shm:

Вешаем на каталог те же права, которые сейчас висят на том каталоге, который мы собираемся чистить (иначе каталог станет принадлежать руту и туда никто потом не сможет писать), например:

Начинаем всё удалять:

Комментарии (14):

Спасибо большое за ценную инфу! Взял на вооружение!

Ну херню не неси.
IO оно поставит раком только в том случае, если с IO всё и так плохо (например, в сервере стоят sata-2 диски убитые).
Удаление файлов последовательное, никакого параллелизма там нет, занята одна IO-очередь. Соответственно, всё это прекрасно управляется через ionice (да и просто не мешает другим процессам, если сервер хорошо себя чувствует, а не убит в потолок по IO без всяких удалений файлов).

Позвольте полюбопытствовать, как вы поставите rsync, если inodes кончились?
С совершенно обычного сервера:
root@2:

> А еще можно примерно так:
ls на 200 миллионах файлов тоже падает по памяти.

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

Бинарь rsync можно тоже в /dev/shm положить

> Даже если отключить всякие ненужные сортировки?
На 130 файлах:
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 1112maxresident)k
0inputs+0outputs (0major+338minor)pagefaults 0swaps

На 200к файлов:
0.65user 0.19system 0:02.96elapsed 28%CPU (0avgtext+0avgdata 52660maxresident)k
118008inputs+0outputs (0major+13218minor)pagefaults 0swaps

50 мегабайт памяти с гаком во втором случае (оба запуска на ssd).

> И это (ls -1f) занимает меньше минуты на md raid5 из 4х sata-2 дисков.
Да, а ещё вы 11 млн. раз сделали бы тяжелый exec на бинарник rm вместо простого сисколла unlink

> Насколько rsync быстрее получается?
Насколько именно быстрее выяснить не получилось. Все остальные способы банально падали по памяти.
Я просто по-strac-ил и не придумал, что можно выкинуть. Он там делает getdents, потом lstat на файл, потом unlink без переключений контекстов.
Соответственно, ему не нужно нигде хранить выхлоп lstat (а ls кладет в память результаты lstat на каждый файл в память, при этом, собственно, сначала делает lstat на каждый файл).
Ну а выхлоп getdents можно читать без всасывания всего массива в память. Да и там, емнип, словарь/массив из номеров inodes файлов, так что оно и так сильно меньше занимает.

В целом точка зрения на быстрое удаление понятно. Но для информации:
6.36user 17.28system 1:57.59elapsed 20%CPU (0avgtext+0avgdata 22788maxresident)k
11726752inputs+0outputs (0major+11768minor)pagefaults 0swaps
Или мне кажется или ls -1f использует всего ничего памяти. Т.е. выпадение по памяти здесь весьма сомнительно.

> Xargs же, на основе этого составляет свой список по 10-100 файлов (хз, сколько за раз) и просто удаляет. Если ты не умеешь работать с find — твои проблемы.
Интересно, с каких пор утилита для распараллеливания научилась сама файлы удалять?
Удалять умеет find, но делает он это per-entry.

> Надо ли это на высоконагруженных серверах? Нет.
Поэтому у тебя на этих серверах FIFO-шедуллер уже включен?

> поэтому ты и админишь localhost
Да. localhost с желтой стрелкой на морде.

> Или мне кажется или ls -1f использует всего ничего памяти. Т.е. выпадение по памяти здесь весьма сомнительно.

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

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

Перед тем, как копировать файлы, всегда стоит сделать пробный прогон (ключ -n ) в режиме с показом подробностей ( -v ):

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

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

Обратите внимание на слэш в конце первого аргумента — без него файлы источника /path/to/src/файлы будут размещены в /path/to/dst/src/файлы . А при наличии слэша в конце первого аргумента — файлы будут в /path/to/dst/файлы , что скорее всего и нужно.

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

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

Обратите внимание, что источник всегда является первым аргументом, а приемник — вторым.

Для автоматического копирования, например по cron , необходимо настроить авторизацию с использованием ключей.

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

Опция -a или --archive — рекурсивно копирует файлы, включая разыменованные символьные ссылки, с сохранением связанных с файлами сведений об их владельцах, групповых и индивидуальных правах и времени последнего изменения. Использование этого ключа равносильно указанию ключей --group , --links , --owner , --perms , --recursive и --times .

Опция -b или --backup — переименовывает файлы, которые в противном случае должны быть удалены или перезаписаны, добавляя к их существующим именам знак тильды (

). Эта опция обычно используется вместе с --backup-dir — вместо переименования rsync перемещает эти файлы в указанный каталог.

Опция --backup-dir=dir — используется вместе с --backup и перемещает в директорию dir те файлы, которые в противном случае должны быть удалены или перезаписаны. После перемещения старой версии файла в каталог dir новая версия из источника копируется в приемник.

Если dir указан с использованием относительного пути, то это путь относительно приемника.

Опция --copy-unsafe-links — для каждого файла, являющегося символьной ссылкой на файл за пределами той иерархии, которой принадлежит источник, производится копирование файла, на который указывает ссылка, а не символьной ссылки на него.

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

Опция -n или --dry-run — запуск утилиты без записи на диск. С опцией --verbose позволяет посмотреть, что будет сделано, если запустить rsync без --dry-run . Особенно полезно запускать перед использованием --delete .

Опция -g или --group — сохранение групповых связей копируемых файлов.

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

Опция --link-dest=dir — если файл существует в источнике, но его нет в приемнике, rsync ищет в каталоге dir файл с точно таким же именем. Если точная копия файла будет найдена, rsync создает из файла в dir жесткую ссылку на него в приемнике. Если точная копия не будет найдена, rsync копирует файл в приемник.

Опция -o или --owner — сохранение данных о владельце копируемых файлов (только для пользователей с root-правами).

Опция -p или --perms — сохранение данных о правах доступа копируемых файлов.

Опция -r или --recursive — рекурсивный спуск по каталогу-источнику и копирование всех файлов в иерархии.

Опция -t или --times — сохранение данных о времени последнего изменения копируемых файлов.

Опция -u или --update — пропускать файл, если в приемнике оказался файл новее, чем в источнике.

Опция -v или --verbose — вывод информации о том, что в данный момент делает rsync.

Опция -z или --compress — сжатие файлов в процессе копирования.

Зеркальное копирование

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

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

Резервное копирование

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

С помощью опции --link-dest=dir можно превращать каждое дополняющее резервное копирование в полноценное, путем создания жестких ссылок между дополняющими резервными копиями и неизменившимися файлами, имеющимися в исходной полноценной резервной копии.

Если dir задается как отосительный путь, то он задается относительно файла-приемника.

При запуске этой команды rsync проходит сверху вниз по содержимому каталога /path/to/src , проверяя каждый найденный файл. Для каждого файла в каталоге /path/to/src утилита ищет в каталоге /path/to/dst точную копию этого файла.

  • Если она находит точную копию в каталоге /path/to/dst — переходит к следующему файлу
  • Если она не находит точную копию в каталоге /path/to/dst — ищет точную копию в каталоге backup
    • Если она находит точную копию файла в каталоге backup , утилита создает жесткую ссылку из файла в каталоге backup на файл в каталоге /path/to/dst
    • Если она не находит точную копию файла в каталоге backup , утилита копирует файл из каталога /path/to/src в каталог /path/to/dst

    Небольшой bash-скрипт, демонстрирующий создание полноценной и дополняющей резервной копии:

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

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

    Зачем нужен rsync?

    Зачем пользоваться rsync если есть привычные cp и scp , спросите вы.

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

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

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

    Принцип применения

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

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

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

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

    Правила копирования каталогов

    С одной стороны правила очень простые.

    Если в конце пути до именованного источника нет слеша, то скопируется сам каталог.

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

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

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

    Некоторые полезные ключи

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

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

    Если вы копируете файлы с какого-то очень занятого, или слабого, сервера, то можно исключить трату ресурсов процессора на вычисление изменившихся частей файлов, скопировав их целиком. Для этого нужен ключ -W .

    Если вам хочется знать сколько всего, по мнению rsync, осталось работать, вам нужен ключ --info=progress2 . Если вы копируете целую файловую систему, то этот ключ, будучи использован сам по себе, вас разочарует: информация об итоговом объёме будет постоянно обновляться. Это происходит потому что rsync не пытается считать всю файловую систему до того как начнёт копирование, а делает обе задачи сразу.

    Но не отчаивайтесь! Если вы хотите знать точно сколько осталось работать с самого начала, то можно отключить последовательное сканирование ключём --no-inc-recursive или, короче, --no-i-r .

    Ключи выше есть начиная с версии 3.1.0, то есть уже работают в Debian stable.

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

    С этим ключём rsync удалит лишние файлы из каталого-назначения.

    Ключ -n в команде выше был оставлен намеренно.

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

    О сжатии замолвим слово

    Вопреки популярному заблуждению от использования сжатия внутри rsync (ключ -z ) больше вреда, чем пользы. Дело в том что всюду используемый OpenSSH уже с версии конца 2005 года по умолчанию использует сжатие передаваемых данных. Сами понимаете, сжатие уже сжатых данных только лишь использует ресурсы процессора, не уменьшая объем передаваемых данных.

    В том, что при соединении с вашим сервером уже используется сжатие, можно убедиться так:

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

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

    Копируем частично

    Наверняка вам когда-нибудь понадобится чтобы rsync пропускал некоторые файлы при копировании.

    В самом простейшем случае вам нужно чтобы rsync не копировал файлы разных систем контроля версий, включая каталог вроде .svn и .git . В этой задаче вам не нужно ничего кроме ключа -C (или --cvs-exclude в полной форме). Так файлы большинства популярных VCS будут проигнорированы будто их нет. Не забываем использовать -n при первом запуске.

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

    Исключаем через .rsync-filter

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

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

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

    Если нужно исключить файл или каталог относительно каталога в котором находится .rsync-filter , то укажем со слешем в начале:

    В правилах звездочка соответствует любым символам кроме слеша, а две звездочки соответствуют вообще любым символам:

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

    Файлы .rsync-filter команда rsync умеет искать по всей структуре каталогов будучи запущена с ключём -F .

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

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

    Ограничим rsync по ssh

    Случается нужно разрешить работу rsync по ssh, удалённо и без пароля, только определённого для каталога и хоста, исключив копирование чего-либо в другие места или из других мест.

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

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

    Если нужно чтобы ваш бекап нельзя было перезаписать или удалить на сервере назначения, то опцию --del следует заменить на --ignore-existing .

    Машина времени

    Те пользователи macOS и OS X, что делают бэкап, наверняка оценили работу Time Machine. Эта программа позволяет буквально в два клика вернуться к прошлой версии любого файла. Не смотря на все красивости, Time Machine не делает ничего такого чего мы не можем сделать с помощью rsync .

    Скрипт следует положить в корень того диска или каталога, куда следует делать бэкапы.

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

    После нескольких запусков получается такая структура каталога:

    При этом latest указывает на самый последний бэкап.

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

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

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

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

    У одинаковых, не менявшихся, файлов будет один и тот же inode.

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


    Как следует из названия, команда 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

    Пример: 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 для рекурсивного копирования файлов и каталогов.

    Примечание . В команде 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К,

    Пример: 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=<KB/s>)

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

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

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

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

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

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

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

    Читайте также: