Поиск по сайту:

Как исключить определенные каталоги из копирования в Linux

Некоторое время назад мы обсуждали, как исключить файлы определенного размера из копирования с помощью rsync в Unix-подобных системах. Этот метод помог нам исключить файлы большого размера или менее важные файлы, чтобы завершить процесс копирования как можно скорее. Итак, оставшиеся файлы мы сможем скопировать позже, когда у нас будет свободное время. Сегодня в этом кратком руководстве мы увидим, как исключить определенные каталоги из копирования с помощью команд Rsync и cp в Linux.

Исключить определенные каталоги из копирования в Linux

Способов выполнения этой задачи может быть много. Мне известны следующие два метода.

Метод 1 – использование команды rsync

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

Допустим, у вас есть папка ostechnix. Внутри каталога ostechnix есть три подкаталога, а именно: dir1dir2 и dir3.

$ ls ostechnix/
dir1 dir2 dir3

Вы хотите скопировать dir1 и dir3 в другое место, но не dir2. Как? Здесь на помощь приходит rsync.

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

rsync -av --progress ostechnix/ backup/ --exclude dir2

Пример вывода будет:

sending incremental file list
./
dir1/
dir1/file1.pdf
 6,152,611 100% 58.36MB/s 0:00:00 (xfr#1, to-chk=7/11)
dir1/file2
 2,597,261 100% 14.83MB/s 0:00:00 (xfr#2, to-chk=6/11)
dir1/file3.doc
 88,143 100% 470.37kB/s 0:00:00 (xfr#3, to-chk=5/11)
dir1/file4.txt
 66,374 100% 330.71kB/s 0:00:00 (xfr#4, to-chk=4/11)
dir3/
dir3/file1.pdf
 6,152,611 100% 18.39MB/s 0:00:00 (xfr#5, to-chk=3/11)
dir3/file2
 2,597,261 100% 6.68MB/s 0:00:00 (xfr#6, to-chk=2/11)
dir3/file3.doc
 88,143 100% 224.16kB/s 0:00:00 (xfr#7, to-chk=1/11)
dir3/file4.txt
 66,374 100% 164.10kB/s 0:00:00 (xfr#8, to-chk=0/11)

sent 17,813,759 bytes received 187 bytes 11,875,964.00 bytes/sec
total size is 17,808,778 speedup is 1.00

Приведенная выше команда скопирует все содержимое папки ostechnix в папку backup и исключит каталог dir2 из копирования.

Альтернативно вы можете использовать ту же команду, что и ниже.

rsync -av --progress --exclude="folder_to_exclude" source_dirctory dest_directory

Пример:

rsync -av --progress --exclude="dir2" ostechnix/ backup/

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

Для получения более подробной информации посетите справочные страницы.

man rsync

Также читайте:

  • Как быстро передавать большие файлы по сети в Linux и Unix
  • Как узнать размер каталога в Linux из командной строки

Способ 2. Использование команды cp

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

Перейдите в исходный каталог, то есть в нашем случае ostechnix.

cd ostechnix/

И выполните следующую команду:

cp -r `ls -A | grep -v "dir2"` /home/sk/backup/

Приведенная выше команда скопирует все содержимое текущей папки ostechnix, кроме подкаталога dir2, и сохранит его в /home/sk/backup/. каталог.

Еще проще мы можем сделать это следующим образом.

cp -r !(dir2) /home/sk/backup/

Для получения более подробной информации посетите справочные страницы.

man cp

Статьи по данной тематике