Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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


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

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

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

Содержание статьи:

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

Название утилиты cp - это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.

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

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

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

Или:

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

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

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

  • --attributes-only - не копировать содержимое файла, а только флаги доступа и владельца;
  • -f, --force - перезаписывать существующие файлы;
  • -i, --interactive - спрашивать, нужно ли перезаписывать существующие файлы;
  • -L - копировать не символические ссылки, а то, на что они указывают;
  • -n - не перезаписывать существующие файлы;
  • -P - не следовать символическим ссылкам;
  • -r - копировать папку Linux рекурсивно;
  • -s - не выполнять копирование файлов в Linux, а создавать символические ссылки;
  • -u - скопировать файл, только если он был изменён;
  • -x - не выходить за пределы этой файловой системы;
  • -p - сохранять владельца, временные метки и флаги доступа при копировании;
  • -t - считать файл-приемник директорией и копировать файл-источник в эту директорию.

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

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

cp ~/pic.png ~/pictures/

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

cp ~/pic.png ~/pictures/wallpaper.png

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

cp  -R ~/папка ~/Документы/

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

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

cp -i ~/test ~/Documents/test

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

Опция -u полезна в следующем случае: вы знаете или предполагаете, что в директории, куда копируется файл, есть старая его версия, тогда оператор -u выполнит замену на новую версию:

cp -u ~/test ~/Documents/test

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

cp ~/test* ~/Документы/

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

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

cp -p ~/test* ~/Документы/

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

$ cp test.conf{,.bak}

Будет создан файл с таким же именем и расширением .bak

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

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

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

find . -name [0-9] -exec cp {} ~/Документы \

Здесь точка указывает на текущую директорию, а параметр name задает регулярное выражение. Параметром exec мы задаем, какую команду нужно выполнить для обнаруженных файлов. Символ {} - подставляет имя каждого файла.

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

ls -1 ~/ | egrep '[a-zA-Z]' | xargs cp -t ~/Папка/

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

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

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

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

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

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

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

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

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

tar cf - /var | ( cd /mnt/var && tar xvf - )

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

Выводы

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

Оцените статью:

Загрузка...

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

В Linux мы можем копировать файлы и каталоги с помощью команды «cp». Здесь мы продемонстрируем несколько распространенных примеров, в которых можно использовать «cp».

Примечание: Термин «каталог» в Linux означает просто «папка» в Windows.

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

Команда «cp» работает, указывая источник, за которым следует место назначения. Например, предположим, что мы хотим скопировать файл / tmp / test в / root, это будет сделано следующим образом.

 [[email protected] ~] #  echo "testing"> / tmp / test  [[адрес электронной почты защищен] ~] #  cat / tmp / test  тестирование [[электронная почта защищена] ~] #  cp / tmp / test / root /  [[адрес электронной почты защищен] ~] #  cat / root / test  тестирование 

Это скопирует исходный файл из / tmp / test в каталог / root / test. Как показано, когда мы проверяем содержимое только что скопированного файла / root / test, они содержат строку «тестирования», которую мы поместили в исходный файл / tmp / test.

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

 [[электронная почта защищена] ~] #  echo "testing2"> / tmp / test2  [[адрес электронной почты защищен] ~] #  cat / tmp / test2  тестирование2 [[электронная почта защищена] ~] #  cp / tmp / test2 / root / newfile  [[адрес электронной почты защищен] ~] #  cat / root / newfile  тестирование2 

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

 [[адрес электронной почты защищен] ~] #  mkdir / tmp / testdir  [[электронная почта защищена] ~] #  echo "testing3"> / tmp / testdir / testfile3  [[электронная почта защищена] ~] #  cp -R / tmp / testdir / / root /  [[адрес электронной почты защищен] ~] #  cat / root / testdir / testfile3  тестирование3 

Чтобы это работало, нам нужен флаг -R, который мы рассмотрим далее.

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

Дополнительные параметры

Команда «cp» имеет несколько полезных дополнительных параметров, которые мы можем использовать для выполнения определенных действий.

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

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

 [[email pro 
.

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

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

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

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

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

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

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

$ mkdir -v dir_B
$ touch dummy {1..10}

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

Команда Cp

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

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

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

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

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

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

$ cp -vr dir_A dir_A_copy

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

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

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

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

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

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

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

$ cp -i <источник> <назначение>

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

команда mv

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

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

$ mv <опция> <источник> <назначение>

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

$ mv -v dir_A / dir_A_copy

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

$ mv -v dir_A / * dir_A_copy

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

Команда Rsync

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

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

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

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

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

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

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

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

$ rsync -vr dir_A / dir_A_copy

Для более подробного вывода давайте использовать флаг «-vv».

$ rsync -vv -r dir_A / dir_A_copy

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

$ rsync -vv - no-all-file dummy * dir_B /

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

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

$ rsync -anvr dir_A / dir_A_copy

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

$ rsync <опция>
@ :

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

$ rsync -v --remove-source-files <источник> <назначение>

Оцените результат операции.

Заключительные мысли

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

Наслаждайтесь!

.

Как копировать файлы с / на виртуальную машину Linux

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

Мы рекомендуем использовать FileZilla Client для подключения к вашей виртуальной машине Linux. FileZilla поддерживает Windows, Linux и Mac. Также можно использовать другие клиенты SFTP. Например, CyberDuck, WinSCP.

В диалоговом окне «Диспетчер сайтов» FileZilla создайте новый сайт и введите следующую информацию:

  • Хост : полное доменное имя вашей виртуальной машины.
  • Порт : оставьте поле пустым
  • Протокол : SFTP - протокол передачи файлов SSH
  • Тип входа : Запрос пароля
  • Пользователь : Ваше имя пользователя
  • Пароль : оставьте поле пустым

После нажатия кнопки Connect появится всплывающее окно ввода пароля.В этом диалоговом окне снимите флажок Запомнить пароль до закрытия FileZilla и введите тот же пароль, что и для входа в SSH.

Копирование файлов с помощью SCP

Системы

Linux и macOS по умолчанию поставляются с клиентом SCP командной строки. Клиент Windows SCP доступен в MobaXterm и Git bash.

В Интернете можно найти множество подробных руководств по команде scp, вот краткое руководство по ее обычному использованию:

  # Загрузите файл yourFile.xyz в ваш домашний каталог на виртуальной машине $ scp yourFile.xyz [email protected]: ~ /. # Загрузите папку yourFolder в домашний каталог на виртуальной машине $ scp -r yourFolder [email protected]: ~ /.  

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

  # Загрузите файл ~ / yourFile.xyz в домашний каталог на вашем компьютере $ scp имя пользователя @ cerzheprd03.its.auckland.ac.nz:~/yourFile.xyz ~ /. # Загрузите папку yourFolder в домашний каталог на вашем компьютере $ scp -r [email protected]: ~ / yourFolder ~ /.  
.

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

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

Смотрите также