Команда для копирования «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/
Использование rsync для передачи файлов по SSH
С помощью вы можете передавать файлы и каталоги по SSH с и на удаленные серверы.
Общий синтаксис для передачи файлов с помощью следующего:
Где находится исходный каталог, целевой каталог — это удаленное имя пользователя SSH, а также удаленный хост SSH или IP-адрес.
Более новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию, поэтому вы можете опустить эту опцию.
Например, для передачи одного файла из локальной системы в каталог на удаленной системе с IP-адресом вы должны выполнить:
Опция означает архивный режим , который синхронизирует каталоги рекурсивно, передача специального и блочные устройства, сохранить символические ссылки, время модификации, группы, права собственности и права доступа.
Если вы не установили пароль без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.
Если файл существует на удаленном сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:
Для передачи данных с удаленного на локальный компьютер используйте удаленное местоположение в качестве источника и локальное местоположение в качестве места назначения:
Передача каталогов по протоколу SSH аналогична передаче файлов.
Важно знать, что в исходных каталогах по-разному трактуется косая черта. Если исходный каталог имеет косую черту, будет копироваться только содержимое исходного каталога в целевой каталог
Если косая черта не указана, исходный каталог будет скопирован в целевой каталог.
Например, чтобы перенести локальный каталог в каталог на удаленной машине, вы должны набрать:
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию , укажите порт с помощью параметра. Например, если SSH прослушивает порт, вы должны использовать:
При передаче больших объемов данных рекомендуется запускать команду в сеансе экрана или использовать параметр, который указывает показывать индикатор выполнения во время передачи и сохранять частично переданные файлы:
КОПИРОВАНИЕ ФАЙЛОВ ПО РЕГУЛЯРНЫМ ВЫРАЖЕНИЯМ В LINUX
В утилите find можно применить различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлы вызвав для каждого из них команду cp. Например, копируем все файлы в текущей директории содержащие в имени только цифры:
Здесь точка указывает на текущую директорию, а параметр name задает регулярное выражение. Параметром exec мы задаем какую команду нужно выполнить для обнаруженных файлов. Символ {} — подставляет имя каждого файла.
Но не find’ом единым можно такое делать. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:
Это достаточно неудобный способ копировать файлы linux но все же, он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.
Выбор другого файла конфигурации
Мобильным пользователям, которые попеременно используют сеть компании и публичные сети, будет тяжело каждый раз менять настройки scp. Лучше всего создать для этого отдельный файл ssh_config и воспользоваться параметром -F.
По умолчанию файл ssh_config для пользователя находится в ~/.ssh/config. Если создать отдельный файл proxy_ssh_config для использования прокси, это упростит переход между сетями.
Например, если в сети компании используется прокси-сервер, а в публичной сети – нет, а пользователь попеременно работает в разных сетях, можно использовать опцию -F с именем нужного файла конфигурации для сети компании, а в публичной сети ее не указывать:
# scp -F /home/user/proxy_ssh_config Label.pdf [email protected]:.
Копирование файлов
scp безопасно копирует файлы между хостами в сети. Оно использует ssh для передачи данных и использует ту же аутентификацию и обеспечивает ту же безопасность, что и ssh. в отличие rcp, scp запросит пароли или парольные фразы, если они необходимы для аутентификации.
Имена файлов могут содержать спецификацию пользователя и хоста, чтобы указать, что файл должен быть скопирован на / с этого хоста. Имена локальных файлов можно сделать явными, используя абсолютные или относительные пути, чтобы избежать scp обработка имен файлов, содержащих ’’В качестве спецификаторов хоста. Также разрешены копии между двумя удаленными хостами.
Копирование файлов с помощью команды cp
Самый простой сценарий использования — скопировать файл в текущем рабочем каталоге . Например, чтобы скопировать файл с именем , чтобы вы ранить выполнить следующую команду:
или
Чтобы скопировать файл в другой каталог, укажите абсолютный или относительный путь к каталогу назначения.
Если в качестве места назначения указано только имя каталога, то имя скопированного файла совпадает с именем исходного файла.
В следующем примере мы копируем файл в каталог:
Если вы хотите скопировать файл под другим именем, вам нужно указать желаемое имя файла. Команда ниже скопирует файл в указанный каталог как .
По умолчанию, если целевой файл существует, он перезаписывается. Опция указывает , чтобы не перезаписать существующий файл.
Чтобы заставить запросить подтверждение, используйте опцию.
Если вы хотите скопировать файл только в том случае, если он новее, чем целевой, используйте параметр:
При копировании файла новый файл принадлежит пользователю, выполняющему команду. Используйте опцию, чтобы сохранить режим файла, владельца и метки времени :
Еще одна полезная опция , которая указывает печатать подробный вывод:
Специальное копирование файлов в Linux с помощью tar
Linux интересен тем, что позволяет выполнять одно и то же действие различными путями. Копирование в Linux тоже может быть выполнено не только с помощью cp. При переносе системных файлов в другой каталог, резервном копировании системных файлов и т.д
важно чтобы сохранились атрибуты, значения владельцев файлов и символические ссылки как они есть без какой-либо модификации
Утилита cp тоже может справиться с такой задачей? если указать опцию -p, но можно использовать утилиту архивации tar. Мы не будем создавать никаких файлов архивов, а построим туннель. Первая часть команды пакует файл и отправляет на стандартный вывод, а другая сразу же распаковывает в нужную папку:
Здесь мы полностью копируем содержимое папки /var в папку /mnt/var. Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему.
Синтаксис
Рассмотрим синтаксис утилиты.
Как только команда будет активирована, отправляемый файл перенесется в место для приема, при указании на конце файла значка «/» он также будет перенесен, но с новым именем.
Основные параметры:
- —attributes-only – переместить не сам файл, а только данные пользователя и флаги доступа;
- -f —force – вместо старых данных записать новые;
- -i —interactive – спросить о необходимости переписывать старую информацию;
- -L – создать копию не ссылок-символов, а того, что находится по этим ссылкам;
- -n – оставить старые файлы на их месте;
- -P – игнорировать ссылки-символы;
- -r – скопировать данные Linux используя рекурсию;
- -s – ничего не копировать, просто создать ссылки-символы;
- -u – копировать файл, но при условии, что он уже был изменен;
- -x – проводить все действия только внутри одной системы файлов;
- -p – во время копирования сохранить все информацию о файле;
- -t – команда дает возможность считать файл для приема директорией, и отправлять в него нужный объект;
УТИЛИТА КОПИРОВАНИЯ ФАЙЛОВ 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:
Или можем явно указать имя новой картинки:
Копирование папок осуществляется с помощью ключа -r:
После выполнения этой команды копирования ~/папка будет скопирована в папку ~/Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка ~/документы будет перезаписана.
По умолчанию команда cp linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать нужно ли перезаписывать каждый файл если вы неуверены в правильности составления команды:
Есть и противоположная опция -n, означающая никогда не перезаписывать существующие файлы.
Опция -u позволяет копировать файл, только если уже существующий более старой версии, чем новый:
cp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:
Если нужно применить более сложные регулярные выражения, придется комбинировать утилиту cp с find или egrep.
В случае если важно сохранить права доступа к файлу и его владельца нужно использовать опцию -p:
Для упрощения использования команды можно использовать синтаксис фигурных скобок. Например, чтобы создать резервную копию файла выполните:
$ cp test.conf{,.bak}
Будет создан файл с таким же именем и расширением .bak
По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.
Предложение размещения боеголовок
Краткое содержание
Расположение: , Главный офис
Примечание: Содержит предложение размещения боеголовок. В тексте переведены поясняющие надписи.
Оригинал: (под спойлером)
Перевод текста: (под спойлером)
ПРОЕКТ МОДУЛЬНОЙ ЗОНЫ
ПРЕДЛОЖЕНИЕ ПО РАСПОЛОЖЕНИЮ
ЯДЕРНЫХ БОЕГОЛОВОК
От Доктора Харпа
Четыре водородные бомбы по килотонне
взрывчатки позволяют снести площадь выше
объекта, не вызывая серьёзных повреждений в подземных частях.
ОБЪЕКТ
Предназначен для защиты объекта в случаях
детонации Альфа боеголовки.
5 мегатонн водородной бомбы,
нацеленно на разрушение всего,
что в радиусе 5 мильной зоне, в том числе и объекта.
Детонации требует авторизации O5 уровня.
Смотрите страницу 24 для более подробной схемы и технической информации.
Русифицированная версия документа из https://scpcbgame.ru: (под спойлером)
SCP Команда: На Что Обратить Внимание
Поскольку SCP использует шифрование SSH, для копирования файла вам потребуется пароль ssh. Кроме того, необходимо иметь право на чтение на машине, с которой вы собираетесь копировать, и право на запись на машине(ах), куда вы будете копировать.
Для аутентификации и настройки соединения вам нужно будет создать пару ключей ssh с помощью следующей команды:
ssh-keygen -t rsa
Вы копируете этот ключ в удалённую систему, используя:
Открытый ключ будет скопирован сразу после аутентификации на удалённом(ых) компьютере(ах), после чего вы сможете выполнить перенос.
Если вы не помните пароль(и) root для какой-либо из систем, вы можете попросить клиента ssh выбрать файл, из которого закрытый идентификационный ключ для подтверждения RSA будет считываться автоматически.
Для протокола версии 2 дефолтный путь идентификации ключа хоста — ~/.ssh/id_dsa, а для версии протокола 1 — ~/.ssh/id_rsa. Затем нужно выяснить, где хранятся резервные копии закрытых и открытых ключей, чтобы вы могли применить команду ssh для их автоматического использования.
Для пути /back-up/home/jack/.ssh команда выглядит следующим образом:
Совет: значением по умолчанию этого параметра является –overwrite , поэтому, если вы не укажете опцию –overwrite no или –overwrite ask в своей команде scp, операция перезапишет файлы с одинаковыми названиями и местоположениями без каких-либо предупреждений.
Если вы копируете большие файлы, мы рекомендуем использовать сеанс tmux или запустить команду на другом экране. Кроме того, вы также должны использовать опцию -v. Это заставит scp отображать любые отладочные соединения, проблемы с аутентификацией или конфигурацией.
Примеры
Для первого примера, скопируем файл /root/katalog/dokument в папку, которая называется «newpapka».
Копирование нескольких файлов в одну директорию.
Cкопируем «dokument» и «file» в каталог «newpapka».
Часто бывает так, когда копируешь несколько файлов, желательно выводить информацию, что происходит. В этом поможет опция «-v».
Команда cp устроена так, что все отправляемые с ее помощью файлы перезаписываются, однако программу можно заставить спрашивать пользователя о том, нужно ли перезаписывать старые данные, для этого есть специальная команда:
Существует альтернатива данной функции, благодаря запросу «-n» можно сказать программе, чтобы она вообще не перезаписывала файлы.
Данная возможность будет полезна при следующей ситуации: пользователю известно, что в определенном месте для копирования уже содержится тот же файл, но с устаревшей версией, а с помощью функции «-u» можно безболезненно перезаписать старые данные:
Скопировать директорию
Для копирование папки со всем ее содержимом необходимо использовать параметр -r.
Если нужно только сделать копию всех файлов без папки, то опция -r не подойдет.
Можно сделать так:
Как видно из примера выше, команда cp работает со знаками «*» и «?», следующий запрос, займется копированием всех файлов, чье название начинается с new:
Для ввода команд быстрее есть возможность применять фигурные скобки, чтобы заиметь копию файла для резерва следует ввести данную команду:
С ее помощью появится резервный файл, который имеет расширение, указанное в скобках.
Одним из неудобств функции cp является то, что она не показывает количество скопированной информации, это мешает, особенно когда приходится работать с тяжелыми файлами. Полоску прогресса можно увидеть, если использовать функцию cv.
Регулярные выражения
Для выполнения других, более сложных функций, придется использовать вместе с cp такие утилиты find и egrep.
С помощью утилиты find есть возможность использовать команды для выявления расположения файлов. Пользователь может найти данные с использованием find, а затем скопировать их, используя функция для копирования.
Вот пример, в нем проводится копирование файлов, которые содержат цифры от 1 до 5:
Здесь:
- /root — каталог где производить поиск.
- -name — критерии поиска.
- — что искать, в данном случаи от одного до пяти.
- -exec — аргумент, который говорит, что нужно запустить команду.
- {} — подставляет имя каждого файла.
Сделать то же самое можно и не прибегая к find, можно обратиться к утилите ls, выбрать нужные файлы, используя регулярные выражения egrep, затем отправить их под контроль cp, применяя при этом xargs:
Данный способ не отличается особым удобством, однако использовать его можно. При работе с ним начнется копирование файлов из основной директории, чьи имена содержат лишь цифры от 1 до 5.
Копирование при помощи перенаправления вывода
В операционной системе Linux есть специальный символ «>», который означает перенаправление вывода.
Благодаря этой возможности можно не только переносить файлы, но и работать с их составляющими. Есть возможность соединить несколько файлов или наоборот разрезать их.
Используя cat можно выводить на экран основные данные файла, а затем, используя bash, пользователь сможет переносить составляющие файла из одного места в другое.
Вот пример:
TAR
Одной из особенностью Linux является то, что в нем одно и то же действие можно выполнять, используя несколько различных команд.
Скопировать данные можно не только с помощью cp. Когда важные системные файлы отправляются в другое место или происходит создание резервных копий данных, нужно, чтобы такие вещи как атрибуты, владельцы данных, ссылки-символы были сохранены без каких-либо изменений.
С помощью cp так делать можно, однако на помощь придется позвать утилиту tar, чтобы она начала работу следует написать в cp «-p».
В качестве примера будет приведен туннель – одна часть запроса архивирует файл и отправляет его, другая – разархивирует и отправляет в нужное место:
С помощью данной команды все из папки /lfc отправляется в папку /epl/lfc. Таким способом можно скопировать любую информацию с компьютера, даже если это операционная система.
Итог
Теперь почти каждый пользователь знает, как копировать файлы в ОС. С помощью терминала делать это можно быстро, главное – запомнить все нужные команды.
Утилита копирования файлов 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:
Или можем явно указать имя новой картинки:
Копирование папок осуществляется с помощью ключа -r:
После выполнения этой команды копирования ~/папка будет скопирована в папку ~/Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка ~/документы будет перезаписана.
По умолчанию команда cp Linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать, нужно ли перезаписывать каждый файл, если вы не уверены в правильности составления команды:
Есть и противоположная опция -n, означающая «никогда не перезаписывать существующие файлы».
Опция -u полезна в следующем случае: вы знаете или предполагаете, что в директории, куда копируется файл, есть старая его версия, тогда оператор -u выполнит замену на новую версию:
Сp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:
Если нужно применить более сложные регулярные выражения, придётся комбинировать утилиту cp с find или egrep.
В случае, если важно сохранить права доступа к файлу и его владельца, нужно использовать опцию -p:
Для упрощения использования команды можно применять синтаксис фигурных скобок. Например, чтобы создать резервную копию файла, выполните:
Будет создан файл с таким же именем и расширением .bak
По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.
700-799
SCP-700SCP-701SCP-702SCP-703SCP-704SCP-705SCP-706SCP-707SCP-708SCP-709SCP-710SCP-711SCP-712SCP-713SCP-714SCP-715SCP-716SCP-717SCP-718SCP-719SCP-721SCP-722SCP-723SCP-724SCP-725SCP-726SCP-727SCP-728SCP-729SCP-730SCP-731SCP-732SCP-733SCP-734SCP-735SCP-736SCP-737SCP-738SCP-739SCP-740SCP-741SCP-742SCP-743SCP-744SCP-745SCP-746SCP-747SCP-748SCP-749SCP-750SCP-751SCP-752SCP-753SCP-754SCP-755SCP-756SCP-757SCP-758SCP-759SCP-760SCP-761SCP-762SCP-763SCP-764SCP-765SCP-766SCP-767SCP-768SCP-769SCP-770SCP-771SCP-772SCP-773SCP-774SCP-775SCP-776SCP-777SCP-778SCP-779SCP-780SCP-781SCP-782SCP-783СкрюныеSCP-784SCP-785SCP-786SCP-787SCP-788SCP-789SCP-790SCP-791SCP-792SCP-793SCP-794SCP-795SCP-796SCP-797SCP-798SCP-799
Копирование файлов по регулярным выражениям в Linux
В утилите find можно применять различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлы, вызвав для каждого из них команду cp. Например, копируем все файлы в текущей директории, содержащие в имени только цифры:
Здесь точка указывает на текущую директорию, а параметр name задает регулярное выражение. Параметром exec мы задаем, какую команду нужно выполнить для обнаруженных файлов. Символ {} — подставляет имя каждого файла.
Но не find‘ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:
Это не совсем удобный способ копировать файлы Linux, но всё же он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.