В Linux есть несколько команд для копирования файлов через терминал. Наиболее часто используемая команда – cp (copy).
1. Команда cp (copy):
- Синтаксис:
· cp [опции] <источник> <назначение>
- <источник>: Путь к файлу или каталогу, который нужно скопировать.
- <назначение>: Путь к месту, куда нужно скопировать файл или каталог. Если <назначение> - существующий каталог, то <источник> будет скопирован внутрь этого каталога. Если <назначение> - имя файла, то <источник> будет скопирован с этим именем.
- Основные опции:
- -r или -R (recursive): Копирует каталоги рекурсивно (включая все подкаталоги и файлы). Обязательна для копирования каталогов.
- -i (interactive): Запрашивает подтверждение перед перезаписью существующего файла в <назначение>.
- -f (force): Принудительно перезаписывает существующие файлы в <назначение> без запроса подтверждения. Используйте с осторожностью.
- -u (update): Копирует только если файл <источник> новее, чем файл <назначение>, или если файла <назначение> не существует.
- -v (verbose): Выводит подробную информацию о процессе копирования.
- -p (preserve): Сохраняет оригинальные атрибуты файла (владелец, группа, права доступа, временные метки).
- -a (archive): Эквивалентна -dR -p. Сохраняет все атрибуты файла, включая жесткие ссылки, и позволяет копировать каталоги рекурсивно.
- Примеры:
- Скопировать файл file.txt в каталог Documents:
o cp file.txt Documents/
- Скопировать файл file.txt в каталог Documents и переименовать его в new_file.txt:
o cp file.txt Documents/new_file.txt
- Скопировать каталог my_folder в каталог backup_folder рекурсивно (включая все подкаталоги и файлы):
o cp -r my_folder/ backup_folder/
или
cp -R my_folder/ backup_folder/
- Скопировать каталог my_folder в каталог backup_folder рекурсивно, сохраняя все атрибуты файлов:
o cp -a my_folder/ backup_folder/
- Скопировать файл file.txt в текущий каталог, запросив подтверждение перед перезаписью, если файл с таким именем уже существует:
o cp -i file.txt .
(Точка . означает текущий каталог)
- Скопировать несколько файлов в один каталог:
o cp file1.txt file2.txt file3.txt Documents/
2. Команда rsync (remote sync):
- Команда rsync более мощная и гибкая, чем cp. Она особенно полезна для синхронизации файлов и каталогов между двумя компьютерами по сети, но также может использоваться для локального копирования.
- rsync копирует только измененные части файлов, что делает её более эффективной для больших файлов или каталогов, которые часто обновляются.
- Синтаксис (для локального копирования):
· rsync [опции] <источник> <назначение>
- Основные опции (для локального копирования):
- -a (archive): Режим архивирования; эквивалентен -rlptgoD.
- -v (verbose): Увеличивает уровень детализации вывода.
- -z (compress): Сжимает данные при передаче (не имеет смысла при локальном копировании, но часто используется при копировании по сети).
- --delete: Удаляет файлы в <назначение>, которых нет в <источник>. Используйте с осторожностью.
- --progress: Показывает индикатор прогресса во время копирования.
- Примеры:
- Скопировать каталог my_folder в каталог backup_folder рекурсивно, сохраняя все атрибуты файлов и показывая прогресс:
o rsync -av --progress my_folder/ backup_folder/
- Синхронизировать каталог my_folder с каталогом backup_folder, удаляя файлы в backup_folder, которых нет в my_folder:
o rsync -av --delete my_folder/ backup_folder/
Внимание! Будьте очень осторожны с опцией --delete, т.к. она может случайно удалить важные файлы.
3. Использование графических файловых менеджеров через терминал (например, nautilus, thunar, dolphin):
- В некоторых дистрибутивах Linux можно использовать графические файловые менеджеры через терминал для копирования файлов. Например, в GNOME можно использовать команду nautilus для открытия файлового менеджера, а затем перетащить файлы из одного окна в другое. Этот способ удобен, если вы предпочитаете графический интерфейс, но работаете в терминале. Аналогично, можно использовать thunar (для XFCE) или dolphin (для KDE).
Важные моменты:
- Пути к файлам и каталогам: Важно правильно указывать пути к файлам и каталогам. Используйте абсолютные пути (например, /home/user/Documents/file.txt) или относительные пути (например, file.txt для файла в текущем каталоге, ./file.txt тоже для файла в текущем каталоге, ../file.txt для файла в родительском каталоге).
- Права доступа: Убедитесь, что у вас есть права на чтение файла <источник> и на запись в каталог <назначение>.
- Перезапись файлов: По умолчанию команда cp перезаписывает существующие файлы без запроса подтверждения. Используйте опцию -i для запроса подтверждения перед перезаписью или будьте внимательны, чтобы не потерять важные данные.
- Копирование каталогов: Для копирования каталогов необходимо использовать опцию -r или -R (рекурсивно).
- Использование sudo: В некоторых случаях может потребоваться использовать команду sudo для копирования файлов, принадлежащих другим пользователям или требующих административных прав.
Выбор команды для копирования зависит от ваших потребностей и предпочтений. Для простых задач достаточно команды cp. Для более сложных задач, таких как синхронизация файлов или копирование больших объемов данных по сети, лучше использовать команду rsync.