📁Как скопировать файлы и создавать целевые каталоги одновременно на Linux

by itisgood

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

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

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

Знаете ли вы, что мы можем скопировать файл и автоматически создать целевой каталог, если он не существует?

Нет? Без проблем!

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

Обратите внимание, что я не говорю о сочетании двух команд.

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

$ mkdir -p destination && cp source_file destination
Но это не единичная команда.
Здесь мы использовали две команды, то есть mkdir и cp.
Теперь позвольте мне показать, как выполнить ту же задачу, используя только одну команду.

Копирование файлов и одновременное создание целевых каталогов на Linux

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

Метод 1 – с помощью команды install

Команда install копирует файлы в любое место по вашему выбору на Linux.

Она специально используется для этой цели системами сборки, такими как automake.

Она является частью GNU coreutils, поэтому вам не нужно его устанавливать.

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

$ install -D source-file destination-directory

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

У команды cp есть опция с именем –parents, которая позволяет нам скопировать всю структуру каталогов исходного файла и сохранить ее в месте назначения.

Например, скажем, файл test.txt сохранен в каталоге ~/Downloads, и вы хотите скопировать его в каталог ~/Documents.

Если вы скопируете файл с помощью команды cp из ~/Downloads в ~/Documents, файл будет сохранен в такой структуре каталогов -> ~/ Documents/Downloads/test.txt.

Давайте сделаем это в режиме реального времени и посмотрим, что произойдет.

$ cp --parents Downloads/test.txt ~/Documents/

Теперь запустите команду tree, чтобы проверить содержимое каталога ~/Documents:

$ tree Documents/ 

Documents/

 └── Downloads

        └── test.txt

 1 directory, 1 file

Помните, что мы не создавали никаких каталогов внутри папки ~ /Documents.
Параметр –parents команды cp сохранил структуру каталогов исходного файла.
В отличие от команды install, вам не нужно указывать имя файла в конце целевого каталога.
Это не имеет прямого отношения к нашей теме.
Однако команда cp автоматически создала целевые каталоги, то есть сохранила структуру каталогов исходного файла.
Rsync – идеальное решение для копирования и резервного копирования данных между локальными и удаленными каталогами.
Чтобы скопировать файлы и одновременно создать целевые каталоги с помощью команды rsync, запустите:
$ rsync test.txt itsecforu/
Среди этих трех команд я предпочитаю команду install.
Потому что я могу создавать вложенные каталоги (каталог внутри другого каталога) с помощью команды install.
Насколько мне известно, команды cp и rsync могут создать только один каталог.
Пожалуйста, поправьте меня, если я ошибаюсь.

 

You may also like

Leave a Comment