Что такое рекурсивное копирование файлов

Копируем файлы и папки в терминале Linux

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

Копирование в терминале Linux

Для копирования используется команда “cp”, у нее так же имеются некоторые опции, о которых вы узнаете чуть позже. Для того что бы скопировать какие то файлы или папки, необходимо ввести команду “cp”, далее, при необходимости указать путь до директории где находится папка или файл который вы ходите скопировать. После чего указываем путь до директории куда хотим скопировать. Так же возможно, вне домашнего каталога вам придется работать от root пользователя при копировании информации. И так, давайте приступим, например, мне необходимо скопировать файл под названием “test” в директорию “Документы”. Для этого ввожу команду “cp” далее название файла и путь куда хочу скопировать данный файл. При это не забываем про регистр, как мы помним, Linux чувствителен к нему:

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

Теперь усложним немного и скопируем файл который находится в директории “/tmp”. Как вы помните, при копировании вне домашнего каталога вам нужны будут права root пользователя. А иначе у вас не чего не получится:

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

Что бы получить права root пользователя на копирования из директории “/tmp”, как вы могли уже догадаться, необходимо перед командой “cp” ввести слово “sudo”:

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

Предположим, нам необходимо скопировать данный файл по другим именем, для этого снова вводим команду “cp”, далее путь к файлу и путь куда хотим скопировать данный файл. Но, в конце пути куда хотим скопировать, необходимо ввести новое название того файла, который копируем. Например, я хочу скопировать файл “test-file” из директории “/tmp” и переименовать его в “test-cp”, что бы вам было более наглядно, выделю жирным старое название файла, а затем новое:

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

Рекурсивное копирование

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

При необходимости точно так же как и файлы при копировании, название папки можно изменить, например, назовем папку “test-cp” просто “test”:

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

При копировании файла в нужную вам директорию, предыдущий файл с таким же именем просто перезапишется. То есть, если вы копируете файл “test-file” из директории “/tmp”, в директорию “Документы”, он заменит в директории уже имеющийся файл “test-file”. Что бы избежать перезаписывания файлов необходимо вести опцию “-i”, тогда при копировании вам будет предложен выбор, перезаписать файл или нет. Вы можете выбрать да или нет, указав это буквами “y- да, перезаписать” или “n- нет, не перезаписывать”:

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

Заключение

Я уже не раз писал, что не стоит боятся терминала Linux, в нем нет ни чего сложно, а порой, бывает и так, что работа в терминале облегчает пользователю жизнь. Так же, если вы пользователь Debian и у вас по каким то причинам нет sudo, вы можете перейти к статье о настройке Debian и добавить вашего пользователя в группу sudo. Вы всегда можете набрать команду “cp –help” для получения справки по данной команде.

А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X

Источник

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

Не всегда есть доступ к файловому менеджеру: из-за различных поломок графическая оболочка на домашнем компьютере может быть недоступна, а на серверах используется только консольный интерфейс. К тому же копирование файлов Ubuntu через терминал намного эффективнее, и вы сами в этом убедитесь. Сегодня мы рассмотрим не только обычное копирование командой cp Linux, но и не совсем обычное: с помощью tar и find.

Утилита копирования файлов cp

Синтаксис и опции

Общий синтаксис cp выглядит вот так:

$ cp опции файл-источник файл-приемник

$ cp опции файл-источник директория-приемник/

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

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

Примеры копирования файлов в linux

Теперь, когда вы знаете основные опции, можно перейти к практике. Например, мы хотим скопировать некую картинку из домашней папки в подкаталог pictures:

Или можем явно указать имя новой картинки:

Копирование папок осуществляется с помощью ключа -r:

После выполнения этой команды копирования

/папка будет скопирована в папку

/Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка

/документы будет перезаписана.

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

Есть и противоположная опция -n, означающая «никогда не перезаписывать существующие файлы».

Сp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:

Если нужно применить более сложные регулярные выражения, придётся комбинировать утилиту cp с find или egrep.

В случае, если важно сохранить права доступа к файлу и его владельца, нужно использовать опцию -p:

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

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

Копирование файлов по регулярным выражениям в Linux

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

Но не find‘ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:

Это не совсем удобный способ копировать файлы Linux, но всё же он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.

Копирование содержимого файлов в Linux

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

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

cat файл1 файл2 > файл3

Специальное копирование файлов в Linux с помощью tar

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

Утилита cp тоже может справиться с такой задачей? если указать опцию -p, но можно использовать утилиту архивации tar. Мы не будем создавать никаких файлов архивов, а построим туннель. Первая часть команды пакует файл и отправляет на стандартный вывод, а другая сразу же распаковывает в нужную папку:

Здесь мы полностью копируем содержимое папки /var в папку /mnt/var. Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему.

Выводы

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

Источник

cp — копирование файлов и каталогов

cp — копирование файлов и каталогов

ОБЗОР

Опции POSIX: [-fiprR] [—]

Дополнительные опции POSIX 1003.1-2003: [-HLP]

Опции GNU file-utils 4.0 (краткая форма):
[-abdfilprsuvxPR] [-S СУФФИКС] [-V ] [—backup=CONTROL] [—sparse=КОГДА] [—help] [—version] [—]

Дополнительные опции GNU file-utils 4.1 (краткая форма):
[-HLP] [—copy-contents] [—no-preserve] [—reply=HOW] [—remove-destination] [—strip-trailing-slashes] [—target-directory=DIR]

ОПИСАНИЕ

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

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

ОПЦИИ POSIX

POSIX имеет четыре с половиной опции:

Если требуется, удаляет существующие файлы, в которые происходит копирование. (См. выше)

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

Сохраняет исходные параметры файла, такие как владелец, группа, права доступа (включая suid и sgid биты), время последней модификации и время последнего доступа к файлу. В случае, если установка владельца или группы приводит к ошибке, suid и sgid биты сбрасываются. (Заметим, что впоследствии исходный файл и его копия могут иметь разное время последнего доступа, так как операция копирования является доступом к исходному файлу).

Копировать каталоги рекурсивно; правильно обрабатывать ситуации, когда попадаются объекты, не являющиеся обычными файлами или каталогами. (Так, копией FIFO или специального файла будет также являться FIFO или специальный файл).

Завершает список опций.

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ POSIX 2003

Разименовывает символьные ссылки, указанные в списке параметров. Не разименовывает символьные ссылки, которые встречаются во время рекурсивного копирования, а просто копирует их.

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

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

ПОДРОБНОСТИ ВЕРСИИ GNU

Обычно файлы записываются точно в том же виде, как и были прочитаны. См. ниже об опции —sparse, который является исключением.

По умолчанию cp не копирует каталоги (см. опцию -r ).

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

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

ОПЦИИ GNU

По возможности сохраняет структуру и атрибуты исходных файлов при копировании (но не сохраняет структуру каталогов). Эквивалентно заданию опций -dpPR.

Смотрите обсуждение резервных копий ниже.

(начиная с версии file-utils 4.1)В file-utils 4.0 делаются глупые вещи, попытки копировать содержимое файлов устройств и FIFO во время рекурсивного копирования. Никогда не используйте эту опцию. С ней, `cp’ может просто зависнуть, читая FIFO или /dev/tty или заполнить весь диск копируя /dev/zero.

Удаляет существующие файлы в случае возникновения ошибки при открытии их на чтение и никогда не спрашивает подтверждения перед тем как это сделать. (Такое поведение начинается с версии file-utils 4.1. В file-utils 4.0 эта опция была эквивалентна новой опции —remove-destination.)

(начиная с версии file-utils 4.1) См. описание POSIX выше.

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

Делает жесткие ссылки вместо копирования обычных файлов (не каталогов).

(начиная с версии file-utils 4.1)Смотрите описание POSIX выше.

(начиная с версии file-utils 4.1) Не сохраняет заданные атрибуты. См. ниже опцию —preserve.

копирует файл a/b/c в existing_dir/a/b/c, создавая отсутствующие промежуточные каталоги.

Параметр КОГДА может принимать следующие значения:

auto Поведение по умолчанию: выходной файл является разреженным, если входной файл также является разреженным. always Всегда делать выходной файл разреженным. Это полезно, когда входной файл расположен на файловой системе, которая не поддерживает разреженные файлы, а выходной файл будет располагаться на файловой системе, которая их поддерживает. never Никогда не делать выходные файлы разреженными. Если вы нашли применение для этой опции, дайте нам знать. —strip-trailing-slashes (начиная с file-utils 4.1) Удаляет все конечные символы `’ из каждого аргумента. (Это может изменить интерпретацию аргумента, если он является символьной ссылкой на каталог.) -s, —symbolic-link Делает символьные ссылки вместо копирования не-каталогов. Все имена исходных файлов должны быть полными, т. е. начинаться с символа /, за исключением случая, когда символьные ссылки будут создаваться в текущем каталоге. Эта опция генерирует сообщение об ошибке, если система не поддерживает символьные ссылки. -S Суффикс резервной копии, см. ниже. —target-directory=КАТАЛОГ (начиная с версии file-utils 4.1) Задаёт каталог назначения, куда будет осуществляться копирование. Имеется в виду для использования с xargs(1), как, например, в «ls | xargs cp —target-directory=../d». -t, —target-directory=КАТАЛОГ копирует все аргументы ИСТОЧНИК в КАТАЛОГ -T, —no-target-directory обрабатывать DEST как обычный файл. -u, —update Не копировать не-каталоги, которые уже существуют в том месте, куда осуществляется копирование, если они имеют такое же или более раннее время модификации. -v, —verbose Выводить имя каждого файла перед его копированием. -x, —one-file-system Пропускать подкаталоги, которые расположены на файловых системах, отличных от той, где начиналось копирование.

ОПЦИИ РЕЗЕРВНОГО КОПИРОВАНИЯ GNU

-b, —backup Делать резервные копии файлов, которые будут перезаписаны или удалены. —backup=CONTROL (Начиная с версии fileutils-4.1.) -S СУФФИКС, —suffix=СУФФИКС Добавить СУФФИКСк имени файла при создании его резервной копии.Если данная опция не задана, то суффикс можно также задать, используя переменную окружения SIMPLE_BACKUP_SUFFIX Если не задана ни опция, ни переменная, то по умолчанию используется суффикс

. -V МЕТОД, —version-control=МЕТОД Определяет, как будут называться резервные копии файлов. Аргумент МЕТОД может принимать значения numbered (или t), existing (или nil) и never (или simple). Если данная опция не задана, то будет использовано значение переменной окружения VERSION_CONTROL. Если же не задано значение и этой переменной, то по умолчанию тип резервного копирования устанавливается в existing.Данная опция соответствует переменной version-control в Emacs. Допустимыми значениями МЕТОД являются (допускаются однозначные сокращения):

t, numbered Всегда делать нумерованные резервные копии файлов. nil, existing Делать нумерованные резервные копии файлов для файлов, которые уже их имеют и простые резервные копии для остальных файлов. never, simple Всегда делать простые резервные копии.

СТАНДАРТНЫЕ ОПЦИИ GNU

ОКРУЖЕНИЕ

При работе обычным образом используются значения переменных LANG, LC_ALL, LC_COLLATE, LC_CTYPE и LC_MESSAGES. Для GNU версии используются также переменные SIMPLE_BACKUP_SUFFIX и VERSION_CONTROL, контролирующие создание резервных копий, как описано выше.

СОВМЕСТИМОСТЬ

ЗАМЕЧАНИЯ

Данная страница описывает версию cp пакета fileutils-4.1; другие версии могут иметь небольшие отличия. Исправления и дополнения присылайте по адресу aeb@cwi.nl. Сообщения об ошибках в этой программе присылайте по адресу fileutils-bugs@gnu.ai.mit.edu.

ПЕРЕВОД

Перевёл с английского Виктор Вислобоков 2003

Источник

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

How to Copy Files and Directories in Linux

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

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

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

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

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

В операционных системах Linux и Unix cp команда используется для копирования файлов и каталогов.

Скопируйте файл в каталог

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

В следующем примере мы копируем файл file.txt в /backup каталог:

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

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

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

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

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

Копирование каталогов с помощью cp команды

Команда выше создаст каталог назначения и рекурсивно скопирует все файлы и подкаталоги из источника в каталог назначения.

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

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

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

Если целевой файл существует, он rsync будет перезаписан.

Эту же команду можно использовать для копирования каталога:

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

Вывод

Источник

Команда cp

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

Описание команды cp

Синтаксис

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

куда_копируем — название файла, в который выполняется копирование другого файла, или директория, в которую копируются исходные файлы или директории.

Опции

МЕТОД определяет, каким образом формируется имя резервной копии. МЕТОД может принимать значения:

КОГДА может принимать значения:
always — всегда создавать «легкую» копию файла. Создается ссылка на исходные данные. Фактического копирования данных не происходит. Блоки данных копируются только тогда, когда они изменяются.
auto — создается обычная полная копия.

КОГДА может принимать значения:
auto — (поведение по умолчанию) копировать разреженные файлы в разреженные файлы.
always — результирующий файл всегда разреженный, если в исходном есть достаточное количество нулевых последовательностей.
never — не делать результирующие файлы разреженными.

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

Скопировать файл в другую директорию

Скопируем файл myfile.txt в директорию mydir :

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

Скопируем файл myfile1.txt в новый файл myfile2.txt

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

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

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

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

Показать информацию о копируемых файлах

Скопировать директорию

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

Не перезаписывать существующие файлы

Скопировать только атрибуты

Скопируем только атрибуты файла. Содержимое файла не копируется.

Создать резервную копию для результирующих файлов, если они существуют

Что такое рекурсивное копирование файлов. Смотреть фото Что такое рекурсивное копирование файлов. Смотреть картинку Что такое рекурсивное копирование файлов. Картинка про Что такое рекурсивное копирование файлов. Фото Что такое рекурсивное копирование файлов

Принудительно перезаписывать существующие файлы назначения

Источник

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

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