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

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

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 полезны, ведь файловый менеджер может некорректно работать из-за проблем с графической оболочкой. Серверные компьютеры вообще управляются только через консоль. Перемещать файлы с помощью терминала очень удобно, в этом может убедиться каждый пользователь. Скопировать файлы можно как с помощью утилиты cp, так же используя tar и find.

Синтаксис

Рассмотрим синтаксис утилиты.

cp [параметр] [что копировать]  [куда купировать]

Как только команда будет активирована, отправляемый файл перенесется в место для приема, при указании на конце файла значка «/» он также будет перенесен, но с новым именем.

Основные параметры:

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

Примеры

Для первого примера, скопируем файл /root/katalog/dokument в папку, которая называется "newpapka".

cp /root/katalog/dokument /root/newpapka

Копирование нескольких файлов в одну директорию.

Cкопируем "dokument" и "file" в каталог "newpapka".

cp /root/katalog/dokument /root/katalog/file /root/newpapka

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

cp -v /root/katalog/dokument /root/katalog/file /root/newpapka

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

cp -i /root/katalog/dokument /root/newpapka

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

Данная возможность будет полезна при следующей ситуации: пользователю известно, что в определенном месте для копирования уже содержится тот же файл, но с устаревшей версией, а с помощью функции «-u» можно безболезненно перезаписать старые данные:

cp -u /root/katalog/dokument /root/newpapka

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

Для копирование папки со всем ее содержимом необходимо использовать параметр -r.

cp -r /root/katalog /root/newpapka

ВАЖНО! Как видно из скриншота, данный способ скопирует всю папку и поместит ее в новую директорию.

Если нужно только сделать копию всех файлов без папки, то опция -r не подойдет.

Можно сделать так:

cp /root/katalog/* /root/newpapka

Как видно из примера выше, команда cp работает со знаками «*» и «?», следующий запрос, займется копированием всех файлов, чье название начинается с new:

cp /root/katalog/new* /root/newpapka

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

cp test.conf{,.bak}

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

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

Регулярные выражения

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

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

Вот пример, в нем проводится копирование файлов, которые содержат цифры от 1 до 5:

find /root -name [1-5] -exec cp {} /root/newpapka \;

ВАЖНО! Обязательно в конце команды нужно ввести ";", в противном случаи будет ошибка - exec аргумент не задан.

Здесь:

  • /root - каталог где производить поиск.
  • -name - критерии поиска.
  • [1-5] - что искать, в данном случаи от одного до пяти.
  • -exec - аргумент, который говорит, что нужно запустить команду.
  • {} - подставляет имя каждого файла.

Сделать то же самое можно и не прибегая к find, можно обратиться к утилите ls, выбрать нужные файлы, используя регулярные выражения egrep, затем отправить их под контроль cp, применяя при этом xargs:

ls -1 /root | egrep '[1-5]' | xargs cp -t /root/newpapka

Данный способ не отличается особым удобством, однако использовать его можно. При работе с ним начнется копирование файлов из основной директории, чьи имена содержат лишь цифры от 1 до 5.

Копирование при помощи перенаправления вывода

В операционной системе Linux есть специальный символ ">", который означает перенаправление вывода.

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

Используя cat можно выводить на экран основные данные файла, а затем, используя bash, пользователь сможет переносить составляющие файла из одного места в другое.

Вот пример:

cat file1 > newfile

TAR

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

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

С помощью cp так делать можно, однако на помощь придется позвать утилиту tar, чтобы она начала работу следует написать в cp «-p».

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

tar cf - /lfc | ( cd /epl/lfc && tar xvf - )

С помощью данной команды все из папки /lfc отправляется в папку /epl/lfc. Таким способом можно скопировать любую информацию с компьютера, даже если это операционная система.

Итог

Теперь почти каждый пользователь знает, как копировать файлы в ОС. С помощью терминала делать это можно быстро, главное – запомнить все нужные команды.

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

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

СИНТАКСИС И ОПЦИИ

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

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

Или:

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

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

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

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

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

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

cp /source/path/name /target/path/name

Например представьте, что вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
          • file_one
          • file_two
          • file_three
        • folder_two

Если вы хотите скопировать file_one из текущего местоположения в /home/andreyex/documents/folder_one в /home/andreyex/documents/folder_two, то вы должны ввести следующую команду в командной строке:

cp /home/andreyex/documents/folder_one/file_one /home/andreyex/documents/folder_two/file_one

Ярлыки вы можете сделать здесь.

Главная часть может быть заменена на тильду (~), что объясняется в этой статье. Это изменяет команду на:

cp ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла

cp ~/documents/folder_one/file_one ~/documents/folder_two

Если вы уже в целевой папке вы можете просто заменить путь к цели с полной остановкой.

cp ~/documents/folder_one/file_one

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

cp file_one ~/documents/folder_two

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

В предыдущем разделе folder_one содержит файл с именем file_one и folder_two не делает. Представьте себе, что folder_two имеет файл с именем file_one и вы запустили следующую команду:

cp file_one ~/documents/folder_two

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

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

cp -b /source/file /target/file

Например:

cp -b ~/documents/folder_one/file_one ~/documents/folder_two/file_one

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

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

cp —backup=numbered ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Имя файла для резервных копий будет меняться: file_one.~1~, file_one.~2~ и т.д.

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

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

Для этого используйте следующий синтаксис:

cp -i /source/file /target/file

Например:

cp -i ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Сообщение будет выглядеть следующим образом :  cp: overwrite ‘./file1’?

Для перезаписи файла нажмите Y на клавиатуре или для отмены нажмите N или CTRL и C одновременно.

Что происходит при копировании символьных ссылок в Linux

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

Представьте себе, вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
        • folder_two
          • file_one (symbolic links points to folder_one/file_one)
        • folder3

Посмотрите на следующую команду:

cp ~/documents/folder_one/file_one ~/documents/folder3/file_one

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

Что происходит, однако, если скопировать символическую ссылку из folder_two в folder3?

cp ~/documents/folder_two/file_one ~/documents/folder3/file_one

Файл, который копируется в folder3 не будет символической ссылкой. Это на самом деле файл, на который указывает символическая ссылка, так на самом деле вы получите тот же результат, как если бы путем копирования file_one из folder_one.

Кстати вы можете получить тот же результат с помощью следующей команды:

cp -H ~/documents/folder_two/file_one ~/documents/folder3/file_one

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

cp -L ~/documents/folder_two/file_one ~/documents/folder3/file_one

Если вы хотите скопировать символическую ссылку необходимо указать следующую команду:

cp -d ~/documents/folder_two/file_one ~/documents/folder3/file_one

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

cp -P ~/documents/folder_two/file_one ~documents/folder3/file_one

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

В чем разница между символической ссылкой и жесткой связи?

Символическая ссылка – это ярлык для физического файла. Он не содержит больше, чем адрес на физический файл.

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

Это руководство расскажет вам все, что вам нужно знать о жестких ссылках .

Вы можете создать жесткую ссылку с помощью команды ср.

cp -l ~/source/file ~/target/file

В качестве примера того, почему вы могли бы использовать жесткую ссылку учесть, что у вас есть папка под названием видео и в этой папке видео у вас есть действительно большой видео файл с именем honeymoon_video.mp4. Теперь представьте, что вы также хотите, чтобы видео быть известным как barbados_video.mp4, потому что он также имеет кадры Барбадоса.

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

Вы могли бы вместо того, чтобы создать символическую ссылку с именем barbados_video.mp4, которая указывает на файл honeymoon_video.mp4. Это будет работать хорошо, но если кто-то удалил honeymoon_video.mp4 вы остались бы со ссылкой и ничего другого и связь по-прежнему занимает дисковое пространство.

Единственное отличие состоит в том, что они содержат разное количество индексных дескрипторов. (уникальные идентификаторы). Удаление файла honeymoon_video.mp4 не удаляет файл, но только снижает количество для этого файла на 1. Файл будет удален только если все ссылки на этот файл будут удалены.

Чтобы создать ссылку вы могли бы сделать что-то вроде этого:

cp -l /videos/honeymoon_video.mp4 /videos/barbados_video.mp4

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

Если вы хотите создать символическую ссылку вместо жесткой ссылки вы можете использовать следующую команду:

cp -s /source/file /target/file

Опять же я бы лично вообще используют команду ln -s, но вместо этого работает хорошо.

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

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

cp -u /source/file /target/file

Стоит отметить, что если файл не существует на целевой стороне, то копия будет иметь место.

2. Как скопировать несколько файлов

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

cp file1 file2 file3 fileN target_directory

Эта команда скопирует все указанные файлы в целевой каталог. Если в целевом каталоге есть файл(ы), соответствующий имени исходного файла (ов), он будет перезаписан.

3. Несколько способов обработки перезаписи при копировании файлов.

Вероятно, вы не всегда хотите, чтобы ваши существующие файлы целей были перезаписаны, и это абсолютно логично.

Чтобы предотвратить перезапись существующих файлов, вы можете использовать опцию -n. Таким образом, cp выиграл ‘перезаписать существующие файлы.

cp -n source_file target_directory

Но, возможно, вы хотите перезаписать некоторые файлы. Вы можете использовать интерактивную опцию -i, и она спросит вас, хотите ли вы перезаписать существующие файлы.

cp -i source_file target_directory cp: overwrite ‘target_directory/source_file’?

Вы можете ввести y для перезаписи существующего файла или n, чтобы не переписать его.

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

cp -b file.txt target_dir / file.txt ls target_dir file.txt file.txt ~

Резервная копия файла заканчивается на ~.

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

Подвести итоги:

  • -i: Подтвердить перед перезаписью
  • -n: Нет перезаписи
  • -b: Перезапись с резервным копированием
  • -u: Перезаписать, если целевой файл устарел или не существует

Как скопировать папки

Копирование папок такое же, как копирование файлов.

Например представьте, что вы имеете следующую структуру папок:

Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:

Вы можете использовать следующую команду:

cp -r /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

Кроме того, можно использовать следующую команду:

cp -R /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.

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

В Bash для копирования файлов используется команда cp (от «copy»), которой обычно передаются два аргумента:

  1. адрес с именем исходного файла,

  2. новый адрес с именем или просто адрес каталога, куда помещается копия.

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

Рассмотрим примеры.

cp readme readme2

В данном случае создается копия файла readme, которая остается в той же директории под именем readme2.

cp readme Desktop/

В папку Desktop копируется файл readme. Здесь текущим является родительский Desktop’у каталог. Имена копии и файла оригинала будут совпадать, а вот полные адреса – нет.

cp/home/irina/tux.png /mnt/D/pingvin.png

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

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

Чтобы скопировать каталог со всем его содержимым, необходимо использовать ключ -r команды cp:

cp-r ./letters ./oldletters

Перемещение и переименование

В Bash-оболочке Linux для перемещения и переименования используется одна и та же команда – mv (от «move» – перемещать). Переименование можно рассматривать как частный случай перемещения, ведь по-сути изменяется полный адрес файла, что равносильно перемещению, даже если файл остается в том же каталоге.

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

В случае перемещения без переименования во втором аргументе указывается только каталог места назначения.

mv document.txt Work

mv document.txt Work/doc23.txt

Здесь в первом случае файл document.txt перемещается в каталог Work. Во-втором случае одновременно происходит перемещение файла и его переименование: файл document.txt перемещается в директорию Work и получает новое имя doc23.txt.

При использовании команды mv для переименования в качестве второго аргумента указывается новое имя:

mv order.txt orderNew.txt

mv Work/list.odt Work/names.odt

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

Создание файлов и каталогов

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

mkdir Work
или
mkdir ./Work

Существует множество способов создания файлов, обычно они создаются какой-либо программой. Если все же возникает необходимость создать пустой файл, сделать это можно с помощью программы touch. В качестве аргумента ей передается имя создаваемого файла. Еще один способ – перенаправление вывода какой-либо команды в файл. Пример:

cal> ./Work/January

Здесь программа cal выводит календарь на текущий месяц, а поскольку стоит знак перенаправления вывода, то вывод команды будет записан в файл January, находящийся в папке Work.

Удаление файлов и каталогов

Для удаления файлов используется команда rm. Например:

rm ghost.png

Командой rmdir можно удалить пустой каталог. Если же каталог не пуст, следует использовать команду rm с ключом -r:

Вопросы

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

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

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

6. Как скопировать несколько каталогов

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

Просто используйте его так же, как и для одного каталога.

cp -r source_dir1 source_dir2 source_dir3 target_dir

Это всегда последний аргумент в команде, который принимается как целевой каталог.

Если вы хотите скопировать только содержимое нескольких каталогов одновременно, вы также можете это сделать:

cp -r source_dir1 /. source_dir2 /. source_dir3 /. target_dir

Фактически, вы можете смешивать каталоги, их содержимое и файлы в целом.

cp -r source_dir1 source_dir2 /. source_file target_dirСоветВы можете использовать подробный режим с опцией -v, чтобы посмотреть, какие файлы копируются.

7. Как сохранить атрибуты при копировании

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

Если вы хотите сохранить атрибуты исходного файла, вы можете скопировать файлы с помощью опции -p.

Давайте посмотрим на пример.

ls -l /etc/services -rw-r — r— 1 root root 19183 12 Jan 2018 /etc/services

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

ls -l /etc/services -rw-r—r— 1 root root 19183 Jan 12 2018 /etc/services

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

cp /etc/services . ls -l services -rwxrwxrwx 1 andreyex andreyex 19183 Nov 27 23:16 services

Как вы можете видеть, вы сохранили режим доступа и временную метку исходного файла с опцией -p.

Но подождите! Разве это не должно было сохранить право собственности на исходные файлы? Но вот владелец (root) исходного файла был изменен на andreyex,

Это связано с тем, что только root имеет разрешение на изменение права собственности на файл, принадлежащий root. Если вы используете опцию -p с файлом, не принадлежащим root, он сохранит право собственности. Или вы можете запустить команду с помощью sudo, это сохранит право собственности на файл, принадлежащий root.

Вы также можете указать атрибуты, которые хотите сохранить. Но тогда вам придется использовать опцию -preserve.

cp —preserve=timestamp /etc/services . ls -l services -rw-r—r— 1 andreyex andreyex 19183 Jan 12 2018 services

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Перекрёстные ссылки книги для Копирование, перемещение, создание и удаление файлов и каталогов

Linux

ПРИМЕРЫ КОПИРОВАНИЯ ФАЙЛОВ В 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 позволяет копировать файл, только если уже существующий более старой версии, чем новый:

 cp -u ~/test ~/Documents/test

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

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

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

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

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

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

$ cp test.conf{,.bak}

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

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

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

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

cp myfile.txt mydir

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

cp myfile1.txt myfile2.txt

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

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

cp /etc/config/myfile1.txt /home/pupkin/myfile1.txt /mnt/some/myfile3.txt mydir

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

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

cp -i myfile1.txt myfile2.txt cp: переписать ‘myfile2.txt’? y

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

При использовании опции -v выводится информация о том, какие файлы и куда копируются.

cp -v myfile1.txt myfile2.txt mydir/ ‘myfile1.txt’ -> ‘mydir/myfile1.txt’ ‘myfile2.txt’ -> ‘mydir/myfile2.txt’

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

Чтобы скопировать директорию и все ее содержимое нужно использовать опцию -r

cp -r /home/pupkin/mydir /mnt/usbflash

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

Скопируем файлы вида myfile*.txt (например, это могут быть файлы myfile1.txtmyfile10.txtmyfile2.txt) в директорию mydir, но если результирующий файл существует, то копирование выполняется только в том случае, если исходный файл новее.

cp -u myfile*.txt mydir

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

Чтобы существующие файлы не перезаписывались, используется опция -n

cp -n /home/pupkin/mydir /mnt/usbflash

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

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

cp —attributes-only myfile1.txt myfile2.txt

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

Скопируем файл myfile1.txt в файл myfile2.txt. Если файл myfile2.txt существует, то будет создана его резервная копия.

cp -b myfile1.txt myfile2.txt

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

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

cp -f myfile1.txt myfile2.txt
[spoiler title=»Источники»]

  • https://www.lcnt.ru/?p=213
  • https://andreyex.ru/linux/komandy-linux-i-komandy-shell/kak-skopirovat-fajly-s-pomoshhyu-komandy-sr-v-linux/
  • https://andreyex.ru/operacionnaya-sistema-linux/komanda-cp-v-linux-7-prakticheskih-primerov/
  • https://younglinux.info/bash/cpmv.php
  • https://pingvinus.ru/note/cmd-cp
[/spoiler]

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

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

Команда cp используется для копирования файлов.

 

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

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

cp /source/path/name /target/path/name

 

Например представьте, что вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
          • file_one
          • file_two
          • file_three
        • folder_two

Если вы хотите скопировать file_one из текущего местоположения в /home/andreyex/documents/folder_one в /home/andreyex/documents/folder_two, то вы должны ввести следующую команду в командной строке:

cp /home/andreyex/documents/folder_one/file_one /home/andreyex/documents/folder_two/file_one

 

Ярлыки вы можете сделать здесь.

Главная часть может быть заменена на тильду (~), что объясняется в этой статье. Это изменяет команду на:

cp ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла

cp ~/documents/folder_one/file_one ~/documents/folder_two

 

Если вы уже в целевой папке вы можете просто заменить путь к цели с полной остановкой.

cp ~/documents/folder_one/file_one

 

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

cp file_one ~/documents/folder_two

 

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

В предыдущем разделе folder_one содержит файл с именем file_one и folder_two не делает. Представьте себе, что folder_two имеет файл с именем file_one и вы запустили следующую команду:

cp file_one ~/documents/folder_two

 

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

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

cp -b /source/file /target/file

 

Например:

cp -b ~/documents/folder_one/file_one ~/documents/folder_two/file_one

 

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

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

cp --backup=numbered ~/documents/folder_one/file_one ~/documents/folder_two/file_one

 

Имя файла для резервных копий будет меняться: file_one.~1~, file_one.~2~ и т.д.

 

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

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

Для этого используйте следующий синтаксис:

cp -i /source/file /target/file

 

Например:

cp -i ~/documents/folder_one/file_one ~/documents/folder_two/file_one

 

Сообщение будет выглядеть следующим образом :  cp: overwrite ‘./file1’?

Для перезаписи файла нажмите Y на клавиатуре или для отмены нажмите N или CTRL и C одновременно.

 

Что происходит при копировании символьных ссылок в Linux

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

Представьте себе, вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
        • folder_two
          • file_one (symbolic links points to folder_one/file_one)
        • folder3

Посмотрите на следующую команду:

cp ~/documents/folder_one/file_one ~/documents/folder3/file_one

 

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

Что происходит, однако, если скопировать символическую ссылку из folder_two в folder3?

cp ~/documents/folder_two/file_one ~/documents/folder3/file_one

 

Файл, который копируется в folder3 не будет символической ссылкой. Это на самом деле файл, на который указывает символическая ссылка, так на самом деле вы получите тот же результат, как если бы путем копирования file_one из folder_one.

Кстати вы можете получить тот же результат с помощью следующей команды:

cp -H ~/documents/folder_two/file_one ~/documents/folder3/file_one

 

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

cp -L ~/documents/folder_two/file_one ~/documents/folder3/file_one

 

Если вы хотите скопировать символическую ссылку необходимо указать следующую команду:

cp -d ~/documents/folder_two/file_one ~/documents/folder3/file_one

 

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

cp -P ~/documents/folder_two/file_one ~documents/folder3/file_one

 

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

В чем разница между символической ссылкой и жесткой связи?

Символическая ссылка – это ярлык для физического файла. Он не содержит больше, чем адрес на физический файл.

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

Это руководство расскажет вам все, что вам нужно знать о жестких ссылках .

Вы можете создать жесткую ссылку с помощью команды ср.

cp -l ~/source/file ~/target/file

 

В качестве примера того, почему вы могли бы использовать жесткую ссылку учесть, что у вас есть папка под названием видео и в этой папке видео у вас есть действительно большой видео файл с именем honeymoon_video.mp4. Теперь представьте, что вы также хотите, чтобы видео быть известным как barbados_video.mp4, потому что он также имеет кадры Барбадоса.

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

Вы могли бы вместо того, чтобы создать символическую ссылку с именем barbados_video.mp4, которая указывает на файл honeymoon_video.mp4. Это будет работать хорошо, но если кто-то удалил honeymoon_video.mp4 вы остались бы со ссылкой и ничего другого и связь по-прежнему занимает дисковое пространство.

Единственное отличие состоит в том, что они содержат разное количество индексных дескрипторов. (уникальные идентификаторы). Удаление файла honeymoon_video.mp4 не удаляет файл, но только снижает количество для этого файла на 1. Файл будет удален только если все ссылки на этот файл будут удалены.

Чтобы создать ссылку вы могли бы сделать что-то вроде этого:

cp -l /videos/honeymoon_video.mp4 /videos/barbados_video.mp4

 

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

Если вы хотите создать символическую ссылку вместо жесткой ссылки вы можете использовать следующую команду:

cp -s /source/file /target/file

 

Опять же я бы лично вообще используют команду ln -s, но вместо этого работает хорошо.

 

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

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

cp -u /source/file /target/file

 

Стоит отметить, что если файл не существует на целевой стороне, то копия будет иметь место.

 

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

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

cp /source/file_one /source/file_two /source/file_three /target

 

Приведенная выше команда будет копировать file_one, file_two и file_three в целевую папку.

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

cp /home/andreyex/music/*.mp3 /home/andreyex/music2

 

Приведенная выше команда будет копировать все файлы с расширением .mp3 в папку music2.

 

Как скопировать папки

Копирование папок такое же, как копирование файлов.

Например представьте, что вы имеете следующую структуру папок:

Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:

Вы можете использовать следующую команду:

cp -r /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

 

Кроме того, можно использовать следующую команду:

cp -R /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

 

Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.

 

Резюме

Это руководство дало вам инструменты требующиеся для копирования файлов в Linux. Для всего остального вы можете использовать команду Linux man.

man cp

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как скопировать файл в Linux через терминал (Ubuntu, Debian и т.д.)

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

Команда для копирования «cp»

Для копирования файлов в Linux через терминал используется команда «cp» (от англ. «copy»). Команда «cp» представляет собой утилиту командной строки для копирования файлов и каталогов. Она поддерживает перемещение одного или нескольких файлов или папок с параметрами для создания резервных копий и сохранения атрибутов.

В общем случае, для того чтобы скопировать файл в Linux через терминал достаточно ввести команду «cp» и передать ей имя исходного и нового файла. Например, для того чтобы скопировать «file.txt» в новый «newfile.txt» нужно выполнить следующую команду:

cp file.txt newfile.txt

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

Таким же образом выполняется копирование файла в другую папку. Вводим команду «cp», указываем путь к файлу и затем каталог, в который его нужно скопировать. Например, для того чтобы скопировать «file.txt» в каталог «folder» нужно выполнить вот такую команду:

cp file.txt folder/

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

cp ~/temp/newfile.txt ~/temp/folder/

Еще один пример копирования с указанием полного пути:

При необходимости можно скопировать сразу несколько файлов. В этом случае сначала нужно перечислить файлы, а потом указать папку, в которую их нужно скопировать. Например, для того чтобы скопировать «file.txt» и «newfile.txt» в каталог «folder» нужно выполнить следующее:

cp file.txt newfile.txt folder/

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

cp *.txt folder/

При копировании каталогов нужно добавлять параметр «-R», так как без этого «cp» будет выдавать ошибку. Поэтому, для копирования каталогов нужно ввести команду «cp -R» и указать исходный и новый каталог. Например, для того чтобы скопировать каталог «folder» в «newfolder» вам нужно выполнить вот такую команду:

cp -R folder/ newfolder/

Как и в случае с файлами, папки можно копировать сразу по несколько штук. Для этого нужно ввести «cp», перечислить копируемые папки и указать каталог назначения. Например, для того чтобы скопировать папки «folder» и «folder2» в «newbigfolder» нужно выполнить следующее:

cp -R folder/ folder2/ newbigfolder/

Синтаксис и опции команды «cp»

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

cp [опции] источник приемник

Самых опций у команды «cp» очень много, поэтому мы рассмотрим только самые простые и часто используемые. С остальными опциями вы сможете ознакомиться отдельно, выполнив в терминале Linux команду «man cp».

-R , -r , --recursive
 Рекурсивное копирование каталогов.
 
 -b
 Создание резервной копии для всех файлов, которые могли быть перезаписаны или удалены при копировании.
 
 -d
 Копирование символических ссылок, а не файлов, на которые они ссылаются.
 
 -L
 Копировать файлы, а не символические ссылки.
 
 -l , --link
 Создание жестких ссылок, а не их копирование.
 
 -P, --no-dereference
 Не переходить по символическим ссылкам.
 
 -f, --force
 Если существующий файл назначения не может быть открыт, удалите его и повторите попытку.
 
 -i, --interactive
 Запрос перед перезаписью файлов.
 
 -n, --no-clobber
 Не перезаписывать файлы.
 
 -s, --symbolic-link
 Создавать символические ссылки вместо копирования файлов.
 
 -t, --target-directory=directory
 Обрабатывать место назначения как директорию.
 
 -T, --no-target-directory
 Обрабатывать место назначения как директорию.
 
 -u , --update
 Копировать только если исходный файл новее.
 
 -v , --verbose
 Вывод подробной информации.

Как уже было сказано, для выполнения команды копирования в терминале Linux сначала нужно ввести «cp», потом используемые опции, потом источник, и в конце место назначения. При этом опции из одной буквы можно соединять, например, вместо «-r -v» можно написать просто «-rv».

Ниже мы рассмотрим несколько примеров копирования с опциями.

  • cp -r folder/ newfolder/
    Рекурсивное копирование каталогов.
  • cp -rv folder/ newfolder/
    Рекурсивное копирование с выводом подробной информации.
  • cp -ri folder/ newfolder/
    Рекурсивное копирование в интерактивном режиме с запросом на перезапись.
  • cp -rn folder/ newfolder/
    Рекурсивное копирование без перезаписи.
  • cp -ru folder/ newfolder/
    Рекурсивное копирование только новых файлов.

Сохраните статью:

Посмотрите также:

Как скопировать файл или папку в Linux через терминал — инструкция пользователю

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

Как копировать файл Linux с помощью утилиты Cp

Сp — это стандартная утилита данной операционки, посредством использования которой можно сделать копию каталогов или единичных файлов.

К сведению! Cp — это сокращение от слова «Copy».

Внешний вид папок на рабочем столе операционной системы Линукс

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

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

  • «$ cp file источник file приёмник». Данная команда прописывается в отношении к файлам, содержимое которых пользователь хочет скопировать;
  • «$ сp file источник direct приёмник». Это сочетание уже применимо, когда нужно скопировать файл в директорию, т. е. каталог.

Обратите внимание! Представленные выше команды вводятся в терминале операционной системы Линукс. Это специальное средство для ввода команд, которые могут повлиять на функционирование операционки.

Опытные специалисты выделяют несколько опций Cр:

  • «-P». Даная опция позволяет не копировать символические ссылки;
  • «-X». Предотвращает выход за пределы используемой файловой системы;
  • «-r». Такая функция осуществляет рекурсивное копирование директории;
  • «-t». В процессе копирования меняет приёмник и источник местами, причём в независимости от копируемого элемента, будь то папка или единичный file;
  • «-s». Задаёт команду копирования, если конечный элемент был изменён пользователем. Такая опция применима, если только речь идёт о копировании файлов. Применять её к директориям нельзя.

Внешний вид терминала на OC Linux

Чтобы произвести Linux copy file с помощью представленной выше утилиты, рекомендуется действовать по следующему алгоритму:

  1. Зажать на клавиатуре ПК кнопки «Ctrl + Alt + T» одновременно на англоязычной раскладке для открытия терминала. Существуют и другие способы, позволяющие запустить классическое приложение, однако этот самый простой и эффективный.
  2. В строку с мигающим курсором вписать «$ cp/Название файла источника/ Имя file приёмника/» и тапнуть по «Enter». С директориями то же самое.
  3. Дождаться завершения процедуры копирования и перезапустить свой стационарный компьютер или ноутбук для окончательного применения внесённых изменений.
  4. Проверить, скопировалось ли содержимое файла в каталог и наоборот.

Важно! Если после осуществления представленных выше манипуляций положительный результат не был достигнут, то пользователь, скорее всего, допустил ошибку, когда писалась СЗ команда Linux. Процедуру стоит провести заново.

Как скопировать несколько файлов через терминал на Линукс

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

  1. Открыть терминал операционки по рассмотренной выше схеме.
  2. Отыскать строку с мигающим курсором и вбить в неё фразу «cp /Загрузки/{filetxt,file2.jpg,file3.odt} /Новая папка/». После нажатия на «Enter» с клавиатуры компьютера начнётся процесс копирования, по окончании которого указанные файлы окажутся в нужной директории.
  3. Открыть каталог, который был указан в качестве приёмника, и проверить его содержимое на предмет наличия files.

Копирование файлов через терминал на операционной системе Линукс

Обратите внимание! Подобные команды можно придумать и самостоятельно, добавляя в синтаксис новые элементы, а также меняя местами приёмник с источником. В этом деле главное — не ошибиться при написании названий файлов и директорий, иначе процедуру придётся повторять заново после перезапуска компьютера.

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

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

  1. Запустить терминал любым удобным способом. Это можно сделать как сочетанием клавиш, так и вручную через «Пуск».
  2. Вбить команду «tar cf — /direct1 | ( cd /direct2/dirext1 && tar xvf — )» и нажать на «Enter». Введя данную команду, пользователь сможет полностью скопировать содержимое одной директории в другую, т. е. переместить папку Linux.
  3. Перезагрузить компьютер, чтобы сохранить изменения.

К сведению! Через программное обеспечение Tar также возможно скопировать ISO-образ с одного USB-накопителя на другой.

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

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

Файловый менеджер на операционке Linux

Процесс выполнения такого метода удобнее всего рассмотреть в пошаговом алгоритме, который рекомендуют к применению опытные специалисты:

  1. Запустить нужную папку, тапнув по ней левой клавишей компьютерного манипулятора два раза.
  2. Зажать правую кнопку мышки и выделить всё содержимое директории. Это могут быть различные файлы, например, документы, видеоролики, изображения, музыка, интернет-ресурсы, скачанные напрямую с сервера, и т. д.
  3. Когда все элементы выделятся, пользователю ПК потребуется нажать на ПКМ и в меню контекстного типа отыскать строку «Копировать», после чего тапнуть по ней один раз ЛКМ.
  4. Открыть другую папку, в которую пользователь хочет вставить скопированные ранее элементы. Её надо будет создать заранее и разместить на рабочем столе компьютера.
  5. Кликнуть ПКМ по любому свободному месту в окошке отобразившегося каталога.
  6. В окне контекстного типа тапнуть по строке «Вставить».
  7. Дождаться окончания процесса перемещения элементов из одной директории в другую.

Обратите внимание! Аналогичным образом можно переместить папку в папку, один единственный файл в указанный каталог либо его содержимое в другой file, осуществив замену. При этом перезагружать операционную систему после выполнения таких манипуляций не требуется, т. к. все изменения применяются автоматически.

Открытие папки от имени администратора через файловый менеджер на Linux

Почему не получается осуществить копирование объектов через файловый менеджер на ОС Линукс

У данного обстоятельства есть несколько распространённых причин:

  • системный сбой. В такой ситуации после перемещения файлов между двумя директориями пользователю рекомендуется нажать правой клавишей манипулятора по свободному пространству на рабочем столе либо прямо в папке и тапнуть по строке «Обновить». Содержимое каталога должно отобразиться. Также можно попробовать перезапустить стационарный компьютер, ноутбук и выполнить процедуру копирования ещё раз;
  • вирусное заражение ПК. Некоторое вредоносное программное обеспечение, которое попало на устройство через Глобальную сеть, может отрицательно повлиять на функционирование операционной системы, заблокировать работу многих стандартных функций. Для решения проблемы необходимо проверить свой ПК, воспользовавшись лицензионным антивирусом либо специализированными утилитами;
  • проблемы с копируемыми объектами. Если файл имеет расширение, которое невозможно прочитать, то могут возникнуть проблемы с его копированием на внешний носитель либо в отдельную папку;
  • нелицензионная версия операционной системы. Пиратские, собранные копии операционки также могут стать причиной возникновения подобной проблемы, поэтому их не рекомендуется использовать;
  • наличие специальных обновлений. Некорректно загруженное обновление может стать причиной нестабильности работы операционной системы. Для исправления ошибки обновление потребуется деинсталлировать;
  • устаревшая версия БИОС материнской платы ПК. Данная причина редко вызывает проблемы с копированием файлов и папок на Linux, однако её исключать нельзя. Загрузить последнюю версию BIOS для конкретной модели материнской платы можно с официального сайта её изготовителя в Интернете.

Чистка компьютера от вредоносного ПО с использованием лицензионного антивируса

Важно! Перепрошивать BIOS самостоятельно не рекомендуется во избежание проблем в дальнейшем. Лучше обратиться в сервисный центр, специалисты которого смогут справиться с поставленной задачей без особых проблем.

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

Таким образом, большинство способов копирования файлов и папок на операционке Линукс реализуется с помощью терминала. Однако с работой консоли сможет разобраться не каждый пользователь. В такой ситуации скопировать нужные объекты можно будет в файловом менеджере системы. На основе представленной выше информации каждый сможет понять, как осуществляется в 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» имеет несколько полезных дополнительных параметров, которые мы можем использовать для выполнения определенных действий.

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

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

.

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

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

Как копировать файлы с / на виртуальную машину 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. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

linux - Как копировать файлы через ssh

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

cp в Linux / Unix | копировать файлы / каталоги

cp - это команда оболочки Linux для копирования файлов и каталогов.

Синтаксис команды cp

Копировать из источника в dest

$ cp [ options ] source dest

Параметры команды cp

Основные параметры команды cp:

Обновление
опция описание
cp -a архивных файлов
cp -f принудительное копирование путем удаления файла назначения, если необходимо
cp -i интерактивный - спросите перед перезаписью
cp -l ссылки файлов вместо копии
cp -L перейти по символическим ссылкам
cp -n нет перезаписи файла
cp -R рекурсивная копия (включая скрытые файлы)
cp -u - копировать, если источник новее, чем dest
cp -v verbose - печатать информационные сообщения

Примеры команды cp

Копировать отдельный файл main.c в каталог назначения bak :

$ cp main.c bak

Скопируйте 2 файла main.c и def.h в каталог с абсолютным путем назначения / home / usr / rapid / :

$ cp main.c def.h / home / usr / rapid /

Скопировать все файлы C в текущем каталоге в подкаталог bak :

$ cp * .c bak

Копировать каталог src в каталог с абсолютным путем / home / usr / rapid / :

$ cp src / главная / usr / rapid /

Рекурсивно скопировать все файлы и каталоги в dev в подкаталог bak :

$ cp -R dev bak

Принудительное копирование файла:

$ cp -f test.c бак

Интерактивная подсказка перед перезаписью файла:

$ cp -i test.c bak
cp: перезаписать bak / test.c? y

Обновить все файлы в текущем каталоге - копировать только новые файлы в каталог назначения bak :

$ cp -u * bak

Генератор кода CP

Выберите cp options и нажмите кнопку Generate Code :


См. Также

.

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