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

How Can I Copy Files Folder Into Another Folder Linux Terminal



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

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

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







Все шаги демонстрируются на Ubuntu 18.04.1. Сначала давайте создадим несколько фиктивных файлов для работы.



$mkdir -vdir_A



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





$трогатьдурачок{1..10}

Давайте создадим еще одну папку в dir_A с несколькими фиктивными файлами.



$mkdir -vdir_B
$трогатьдурачок{1..10}

Теперь вся структура каталога dir_A выглядит так.

$деревоdir_A

Команда Cp

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

Это основная структура cp команда.

$cp <параметры> <источник> <место назначения>

Например, давайте сделаем копию манекен1 файл с именем dummy1_copy .

$cpdummy1 dummy1_copy

Теперь давайте попробуем скопировать сразу несколько файлов. Для такой операции cp требует, чтобы местом назначения был каталог. Здесь я буду использовать выражение с подстановочными знаками, чтобы получить все дурачок файлы и поместите их в ~ / Загрузки каталог.

$cpдурачок*~/Загрузки

Как насчет копирования каталога?

$cp -vrdir_A dir_A_copy

Здесь мы использовали два разных флага. Давайте быстро их разберем.

  • -r: заменяет a рекурсивный копия (включая любые скрытые файлы). Обязательно наличие флага, если копирование затрагивает весь каталог или более.
  • -v: означает подробный . Инструмент cp будет выводить каждое выполняемое действие.

Хотите перейти по символическим ссылкам? Добавьте флаг -L.

$cp -Lvr <источник> <место назначения>

Допустим, в целевом каталоге уже есть файл с таким именем. Если вы хотите избежать перезаписи, используйте флаг -n. Это гарантирует, что в случае конфликта cp не перезапишет файл.

$cp -nv <источник> <место назначения>

Если вы выполняете деликатное копирование / вставку, лучше иметь лучший контроль над тем, что происходит, верно? В таком случае используйте флаг -i. Это означает интерактивный режим, в котором cp будет запрашивать подтверждение каждый раз, когда возникает конфликт.

$cp <источник> <место назначения>

Если вам интересно, справочная страница всегда является одной из лучших документации. Узнать больше о cp.

$человек cp

команда mv

Инструмент mv похож на инструмент cp. Однако вместо копирования mv перемещает файлы и каталоги. По сравнению с cp это проще.

Командная структура mv аналогична cp.

$мв <вариант> <источник> <место назначения>

Чтобы переместить содержимое dir_A к dir_A_copy выполните следующую команду.

$мв -vdir_A/dir_A_copy

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

$мв -vdir_A/ *dir_A_copy

У инструмента mv особо не с чем работать. Чтобы узнать обо всех доступных параметрах, посетите страницу руководства.

$человек мв

Команда Rsync

Это один из самых популярных и мощных инструментов для копирования файлов, который в основном используется для резервного копирования. Он позволяет копировать файлы через удаленное соединение. В отличие от cp и mv, он также поставляется с множеством расширенных параметров копирования файлов, которые предлагают максимальную настройку его поведения.

Rsync в основном известен своим алгоритмом дельта-передачи, который значительно сокращает объем данных, которыми необходимо обмениваться. В случае удаленной синхронизации это значительно экономит пропускную способность.

Rsync обычно не входит в предустановленный дистрибутив Linux. Однако из-за своей популярности теперь он доступен во всех основных дистрибутивах Linux. Использовать Pkgs.org чтобы найти пакет rsync для вашего дистрибутива. Предполагая, что у вас установлен rsync, приступим.

Во-первых, основная структура команд rsync. Это очень похоже на cp.

$rsync<параметры> <источник> <место назначения>

Прежде чем начать, вот несколько популярных аргументов rsync.

  • -v : Подробный режим, выводит все действия, выполняемые на экране консоли.
  • -vv : Подробный режим с более подробной информацией
  • : Рекурсивный режим, должен присутствовать при копировании каталогов
  • -С участием : Сжать данные
  • : Архивные данные
  • -n : Пробный запуск, следует запускать в сочетании с подробным режимом. Просто выводит действия, если команда должна была запускаться по-настоящему
  • -удалять : Удалить файл (ы) и каталог (ы) в целевом каталоге, если исходный каталог больше не содержит их.
  • -нет-весь-файл : Заставляет rsync использовать свой алгоритм дельта-передачи, несмотря ни на что. Полезно в сценариях, где необходимо обеспечить минимальный объем записи данных.
  • –Remove-исходный файл : Удалить исходный файл (ы) после копирования.

Давайте посмотрим на них в действии. Сначала копия каталога. Выполните следующую команду.

$rsync-vrdir_A/dir_A_copy

Для дальнейшего подробного вывода воспользуемся флагом -vv.

$rsync-vv dir_A/dir_A_copy

А теперь давайте посмотрим на интересную часть rsync. Мы обсудили, как rsync интеллектуально копирует только измененные файлы, экономя полосу пропускания и запись на диск. Пришло время проверить это в действии. В этом примере действие будет выполняться в пределах dir_A каталог.

$rsync-vv --no-целый файлдурачок*dir_B/

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

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

$rsync-anvrdir_A/dir_A_copy

Rsync также может работать с удаленными каталогами, без проблем. Все, что ему нужно, это правильное соединение SSH с настроенными ключами SSH.

$ rsync<вариант> <local_dir>
<имя пользователя> @<удаленный узел>:<destination_dir>

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

$rsync-v --remove-исходные файлы <источник> <место назначения>

Проверьте результат операции.

$деревоdir_A

$деревоdir_A_copy

Последние мысли

Cp и rsync - наиболее распространенные инструменты, которые вы можете использовать для копирования файлов в папку на терминале Linux. Оба они также хороши для написания сценариев. Просто не забудьте протестировать функции перед реализацией.

Наслаждаться!