📂 Руководство по копированию файлов:

rsync, cp, scp

Platform Tested on File Transfer

Полное руководство по копированию и синхронизации файлов и директорий в Linux с помощью команд rsync, cp и scp.


🔹 1. cp — копирование файлов и директорий

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

Синтаксис

cp [options] source destination

Основные опции

Опция Описание
-r / -R Рекурсивное копирование директорий
-v Показать файлы при копировании (verbose)
-u Копировать только если источник новее или файла нет в целевой
-p Сохранять права, время модификации и владельца
-i Спрашивать подтверждение перед перезаписью

Примеры

  1. Копирование файла:
cp file.txt /home/user/backup/
  1. Копирование директории рекурсивно:
cp -r /var/www/html /home/user/backup/
  1. С сохранением прав и с выводом прогресса:
cp -rvp /etc/nginx /home/user/backup/
  1. Копирование только обновлённых файлов:
cp -ru /source/dir /destination/dir

🔹 2. rsync — синхронизация файлов и директорий

Команда rsync более мощная, чем cp, и поддерживает синхронизацию между локальными и удалёнными машинами.

Синтаксис

rsync [options] source destination

Основные опции

Опция Описание
-a Архивный режим (рекурсивно, сохраняет права, символические ссылки, время и владельца)
-v Подробный вывод
-z Сжатие при передаче (для удалённых соединений)
--progress Показывать прогресс копирования
-u Копировать только новые и обновлённые файлы
--delete Удалять файлы в папке назначения, которых нет в источнике
-e "ssh" Использовать SSH для копирования на удалённый сервер

Примеры

  1. Копирование локальной директории:
rsync -av /home/user/docs/ /home/user/backup/docs/
  1. Копирование на удалённый сервер:
rsync -avz /home/user/docs/ user@remote:/home/user/backup/docs/
  1. С удалением лишних файлов на целевом сервере:
rsync -avz --delete /home/user/docs/ user@remote:/home/user/backup/docs/
  1. Показывать прогресс:
rsync -av --progress /var/www/html/ /backup/www/html/
  1. Копирование только обновлённых файлов:
rsync -avu /source/dir/ /destination/dir/
  1. Использование нестандартного порта SSH:
rsync -avz -e "ssh -p 2222" /source/dir/ user@remote:/destination/dir/

[!TIP] rsync идеально подходит для резервного копирования и синхронизации больших директорий.


🔹 3. scp — безопасная копия через SSH

Команда scp позволяет копировать файлы и директории между локальной и удалённой машинами по протоколу SSH.

Синтаксис

scp [options] source user@remote:/path/to/destination
scp [options] user@remote:/path/to/source /local/destination

Основные опции

Опция Описание
-r Рекурсивное копирование директорий
-v Подробный вывод
-P port Порт SSH (обратите внимание на заглавную P)
-C Сжатие передаваемых данных
-i keyfile Использовать указанный приватный ключ

Примеры

  1. Копирование файла на удалённый сервер:
scp file.txt user@remote:/home/user/
  1. Копирование директории рекурсивно:
scp -r /home/user/docs user@remote:/home/user/backup/
  1. Копирование с использованием нестандартного порта SSH:
scp -P 2222 file.txt user@remote:/home/user/
  1. Копирование с приватным ключом:
scp -i ~/.ssh/id_rsa file.txt user@remote:/home/user/
  1. Копирование с удалённого сервера на локальную машину:
scp user@remote:/home/user/file.txt /home/localuser/
  1. Сжатие передаваемых данных:
scp -C largefile.tar.gz user@remote:/home/user/

⚡ Резюме

Команда Особенности
cp Простое локальное копирование
rsync Синхронизация локально и удалённо, поддержка инкрементного копирования
scp Безопасное копирование через SSH, удобно для удалённых серверов

[!TIP] Для больших директорий или регулярного резервного копирования используйте rsync — он экономит трафик и время. Для разовых удалённых копий — scp достаточно просто и безопасно.


🔗 Полезные ссылки

```