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

Рейтинг: 5  / 5

How to Copy Files and Directories in Linux

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

Копирование файлов и каталогов является одной из наиболее распространенных задач, которые вы выполняете при работе в командной строке. В Linux есть несколько команд для копирования файлов с cp и rsync является наиболее широко используемыми инструментами.

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

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

В операционных системах Linux и Unix cp команда используется для копирования файлов и каталогов.

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

cp file_

Если целевой файл существует, он будет перезаписан. Чтобы получить запрос на подтверждение перед перезаписью файлов, используйте -i опцию.

cp -i file_

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

cp -p file_

Еще одна полезная опция -v . При использовании этой опции команда печатает, что делается:

cp -v file_

» -> ‘file_’ Скопируйте файл в каталог

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

В следующем примере мы копируем файл в /backup каталог:

cp /backup

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

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

cp /backup/new_

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

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

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

cp dir dir1

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

Команда cp также позволяет использовать сопоставление с образцом. Например, чтобы скопировать все .png файлы из текущего каталога в /backup каталог, вы должны использовать:

cp *.png /backup Копирование каталогов с помощью cp команды Чтобы скопировать каталог, включая все его файлы и подкаталоги, используйте параметр -R или -r . В следующем примере мы копируем каталог Pictures в Pictures_backup :

cp -R Pictures Pictures_backup

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

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

cp -RT Pictures Pictures_backup

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

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

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

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

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

Читайте также:  Как поменять разрешение экрана

rsync -a file_

Если целевой файл существует, он rsync будет перезаписан.

Эту же команду можно использовать для копирования каталога:

rsync -a /var/www/public_html/ /var/www/public_html_backup/

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

Чтобы узнать больше о rsync проверке следующих статей:

  • Как использовать Rsync для локальной и удаленной передачи данных и синхронизации
  • Как исключить файлы и каталоги с помощью Rsync

Вывод

В этом руководстве мы показали вам , как копировать файлы и каталоги в Linux и Unix системах , основанных на использовании cp и rsync утилиты.

#copy #linux #command

Файловые команды

  • basename — Удаляет любой путь и указанный суффикс из имени файла (получает имя файла)
  • cd dir – сменить директорию на dir, при этом, если в текущем  каталоге нет подкаталога dir, то поиск dir происходит по каталогам, указанным в переменной $CDPATH
  • cp file1 file2– скопировать file1 в file2
    • -r – рекурсивно
    • -f или —force — попытаться удалить существующую цель, если в нее нельзя записывать.
    • -i или —interactive — интерактивно подтвердить попытку замещения существующего файла
    • -b или —backup — сделает резервную копию файлов, которые будут замещены.
    • -p — сохранить атрибуты копируемого файла (время, права и т.п.)
  • csplit — Разбивает заданный файл на несколько новых файлов в соответствие с заданными образцами или номерами строк и выдает количество байтов в каждом новом файле
  • ddif=/source/device of=/target/device bs=blocksize count=кол-во_блоков — копирование и преобразование файлов
  • dirname — Удаляет из имени файла суффикс, не являющийся директорием (получает имя каталога — путь)
  • ln file link – создать хардлинк link к файлу file
    • -s – создать символическую ссылку
  • ls– список файлов и каталогов
    • -a – со скрытыми
    • -l — форматированный одноколоночный список (выводится тип файла, права доступа к файлу, количество жестких ссылок на файл, имя владельца, имя группы, размер файлаr (в байтах), временной штамп и имя файла. Типы файлов могут принимать следующие значения: — для обычного файла, d для каталога, b для блочного устройства, для символьного устройства, l для символической ссылки, p для PIPE (FIFO) и s для гнезда (socket).
    • -h — отображение размеров в человекопонятном (от human) виде (10M, 15K)
    • -i — вывод inode элементов
    • -t — сортировка по дате модификации (от старых к новым)/time
    • -S — отсортировать по размеру (от больших к маленьким)/size
    • -r — сортировка в обратном порядке
    • -R — список с подкаталогами
  • md5sum — Выводит или проверяет контрольные суммы Message Digest 5 (MD5)
  • mkdir dir – создать каталог dir
    • -p /path/to/three/{dir1,dir2,dir3} создание нескольких каталогов dir1,dir2,dir3 в каталоге /path/to/three/
    • -m permission — указание прав permission на создаваемый каталог
  • mv file1 file2 – переименовать или переместить file1 в file2. если file2 существующий каталог — переместить file1 в каталог file2
  • nl — Сообщает о количестве строк в указанных файлах
  • pwd – показать текущий каталог
  • readlink — Выдает значение указанной символической ссылки
  • rm file – удалить file
    • -r – удалить каталогь
    • -f – удалить форсированно (без запроса)
    • -i или —interactive — интерактивно подтвердить попытку удаления файла
  • stat — Отображает статус файла или файловой системы
  • touch file – обновить время доступа к файлу file или создать file, если его нет
    • -c или —no-create — не создавать файл, если его не существует.
    • -d или -t — изменить время на указанное (формат указания времени в man touch)
  • more file – вывести содержимое file с возможностью прокрутки вверх/вниз
  • less File — аналог more
  • tee file — вывод данных, получаемых со стандартного ввода на стандартный вывод И в файл file. (команда называется «тройник»)
  • fuser file — идентифицирует (если без параметров — отображает PID) процессы, использующие файл file
  • head file – вывести первые 10 строк file

Ls –a Linux

Скрытые файлы и каталоги

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

Чтобы сделать файл или каталог скрытым, все, что вам нужно сделать, — это создать файл или каталог с именем, начинающимся с . или переименуйте это, чтобы быть таковым. Также вы можете переименовать скрытый файл, чтобы удалить. Команда ls, по умолчанию не выводит список скрытых файлов и каталогов. Подробнее о команде можно прочитать здесь. Мы можем изменить его, добавив параметр командной строки -a, чтобы он отображал скрытые файлы и каталоги.

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

Создание папки и просмотр сведений о её владельце, группе и правах доступа

Создадим папку folder командой mkdir так, как описано в → этой статье. Если действовать по такой же схеме, как и описано выше, то окажется, что этого недостаточно. Будет выдана информация только о размере папки:

[email protected]:~# ls -l folder total 0

Поэтому с папками при просмотре сведении о ней работаем по такой схеме: смотрим информацию не об этой папке, а общую информацию о всей папке. Тогда информация о вложенных в неё файлах и папках выдаётся в полной мере:

[email protected]:~# ls -l total 4 -rw-r—r— 1 root root 0 Apr 10 21:06 file drwxr-xr-x 2 root root 4096 Apr 10 21:18 folder

Как отличить папку от файла в linux

Сразу на этом примере остановлюсь на вопросе о том, как отличить папку от файла в linux. В самом начале строки в символах о правах доступа у файла первым символом идет — тогда, как у папки первый символ это буква d. Именно это отличает папку от файла.

Синтаксис и опции команды «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 Вывод подробной информации.

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

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

Читайте также:  8 лучших утилит для полного удаления программ с компьютера

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

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

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

  • Как удалить папку в Linux через терминал (консоль)
  • Как перейти в папку в терминале Linux
  • Как открыть файл в терминале Linux
  • Как создать файл в Linux через терминал
  • Как удалить файл в Linux через терминал

Назначение прав для запуска файла в Linux

Сделать файл вразумительным для запуска можно с помощью графической оболочки. Нажмите по ярлыку правой кнопкой мыши. В контекстуальном меню выберите пункт «свойства». Открывшееся окно должно содержать вкладку «преимущества», в котором нужно активировать пункт «разрешить выполнение файла как программы». Данный метод будет отличаться в зависимости от дистрибутива Linux и графической оболочки. Также возможно приставить права запуска через консоль. Для этого используется команда chmod. Пример, презентованый ниже, устанавливает право выполнения для владельца файла и его группы. Вы можете скопировать Bash-скрипт из первоначального примера в файл и провести с ним данную операцию.

chmod ug+x games-dialog

Установка переменных окружения и оболочки

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

Создание переменной оболочки

Определение этой переменной будет происходить в пределах текущей сессии консольной оболочки.

$ TEST_VAR=’Hello World!’

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

Определенная выше переменная теперь доступна в текущей сессии, но в дочернем процессе она будет отсутствовать. Увидеть ее можно при помощи команды grep на вывод set:

$ set | grep TEST_VAR TEST_VAR=’Hello World!’ $ bash # создание новой дочерней сессии $ set | grep TEST_VAR # делаем поиск переменной $ # вывод пуст

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

$ printenv | grep TEST_VAR $ # вывод пуст

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

$ echo $TEST_VAR Hello World!

Команда echo делает вывод введенной строки как аргумента. Но, в данном случае применяется знак $, в совокупности с ключом переменной, который возвращает ее значение.

Создание переменной окружения

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

$ export TEST_VAR $ printenv | grep TEST_VAR TEST_VAR=Hello World!

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

$ bash $ echo $TEST_VAR Hello World!

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

$ export NEW_VAR=»Testing export» $ printenv | grep NEW_VAR NEW_VAR=»Testing export» $ exit # делаем выход из текущего процесса и возвращаемся в родительский $ echo $NEW_VAR $ # ничего

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

Современная техника - портал Миникод