Обычно мы копируем файлы из одного местоположения в другое уже существующее, используя такие команды, как cp, rsync и scp и т. д.
Если целевое местоположение не существует, мы сначала создаем его, а затем копируем файл в это вновь созданное местоположение.
Обычно копировал файлы из одного места в другое из командной строки именно так.
Знаете ли вы, что мы можем скопировать файл и автоматически создать целевой каталог, если он не существует?
Нет? Без проблем!
В этом руководстве мы расмотрим, как копировать файлы и создавать целевые каталоги одновременно с помощью одной команды в Linux.
Обратите внимание, что я не говорю о сочетании двух команд.
Например, любой может сделать это, объединив две команды, как показано ниже:
$ mkdir -p destination && cp source_file destination
Копирование файлов и одновременное создание целевых каталогов на Linux
install
Метод 1 – с помощью команды install
Команда install копирует файлы в любое место по вашему выбору на Linux.
Она специально используется для этой цели системами сборки, такими как automake.
Она является частью GNU coreutils, поэтому вам не нужно его устанавливать.
Чтобы скопировать файл и одновременно создать целевой каталог с помощью команды install, просто запустите:
$ install -D source-file destination-directory
Метод 2 – с помощью команды cp
Обычно мы используем команду 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
Метод 3 – с помощью команды rsync
$ rsync test.txt itsecforu/