Меню Рубрики

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

Команда cp — копирование файлов в Linux из терминала

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

Знание о команде 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 является то, что она не показывает количество скопированной информации, это мешает, особенно когда приходится работать с тяжелыми файлами. Полоску прогресса можно увидеть, если использовать функцию cv.

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

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

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

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

find /root -name 3 -exec cp <> /root/newpapka \;

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

  • /root — каталог где производить поиск.
  • -name — критерии поиска.
  • 3 — что искать, в данном случаи от одного до пяти.
  • -exec — аргумент, который говорит, что нужно запустить команду.
  • <> — подставляет имя каждого файла.

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

ls -1 /root | egrep ‘5’ | xargs cp -t /root/newpapka

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

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

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

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

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

cat file1 > newfile

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

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

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

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

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

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

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

Источник

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

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

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

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

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

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

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

Главная часть может быть заменена на тильду (

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

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

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

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

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

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

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

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

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

) в конце, которая является резервной копией оригинального файла.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Копирование файла в терминале linux
  • Копирование папок в linux
  • Копирование жесткого диска в linux dd
  • Конфиг разрешение экрана linux
  • Контрольная сумма файла linux