TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #125 761
Продвинутое копирование файлов и каталогов с исключениями

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

Когда и зачем исключать файлы?

Чтобы пропустить временные файлы (*.tmp, *.swp).
Чтобы избежать копирования тяжёлых или ненужных данных.
Для создания точных копий без избыточной информации.


Исключения с помощью cp и find. Хотя cp сам по себе не поддерживает флаг исключений, можно комбинировать его с другими командами, такими как find.

Пример: исключение файлов *.log:


find source_dir -type f ! -name '*.log' -exec cp --parents {} target_dir \;


Разбор:

find source_dir - ищет файлы в директории.
! -name '*.log' - исключает файлы с расширением .log.
-exec cp --parents {} - копирует файлы с сохранением структуры каталогов.

Использование rsync для исключений. Для более гибкого копирования предпочтительнее использовать rsync, так как он поддерживает исключения через опцию --exclude.

Пример: исключение определённой папки и файлов


rsync -av --exclude 'temp/' --exclude '*.log' source_dir/ target_dir/


Разбор:

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

Вывод команды:


sending incremental file list
./
file1.txt
file2.txt

sent 125 bytes received 40 bytes 330.00 bytes/sec
total size is 245 speedup is 1.41


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

Пример: исключение через файл шаблонов
Создайте файл exclude.txt:


*.log
temp/
backup/


Выполните команду:


rsync -av --exclude-from='exclude.txt' source_dir/ target_dir/


Копирование больших данных с исключениями. Если копируете большие объёмы данных, используйте rsync вместо cp, так как он эффективнее обрабатывает большие деревья файлов и поддерживает докопирование (resume).

Докопирование файлов после прерывания:


rsync -av --exclude '*.tmp' source_dir/ target_dir/


Хотя cp - базовый инструмент, его возможности можно расширить комбинацией с find для сложных задач. Для регулярной работы с исключениями rsync остаётся лидером.

BashTex 📱 #linux #utils
  • 👍 10
More from @bash_tex
  1. Oct 13, 2026openat2(): как Linux защищает от выхода за пределы каталога Допустим, приложение должно чи…
  2. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  3. Oct 9, 2026BashTex 📱 #мем
  4. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  5. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  6. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →