📂 Руководство по копированию файлов:
rsync, cp, scp
Полное руководство по копированию и синхронизации файлов и директорий в Linux с помощью команд rsync, cp и scp.
🔹 1. cp — копирование файлов и директорий
Команда cp — базовая команда для копирования файлов и директорий на локальной машине.
Синтаксис
cp [options] source destination
Основные опции
| Опция | Описание |
|---|---|
-r / -R |
Рекурсивное копирование директорий |
-v |
Показать файлы при копировании (verbose) |
-u |
Копировать только если источник новее или файла нет в целевой |
-p |
Сохранять права, время модификации и владельца |
-i |
Спрашивать подтверждение перед перезаписью |
Примеры
- Копирование файла:
cp file.txt /home/user/backup/
- Копирование директории рекурсивно:
cp -r /var/www/html /home/user/backup/
- С сохранением прав и с выводом прогресса:
cp -rvp /etc/nginx /home/user/backup/
- Копирование только обновлённых файлов:
cp -ru /source/dir /destination/dir
🔹 2. rsync — синхронизация файлов и директорий
Команда rsync более мощная, чем cp, и поддерживает синхронизацию между локальными и удалёнными машинами.
Синтаксис
rsync [options] source destination
Основные опции
| Опция | Описание |
|---|---|
-a |
Архивный режим (рекурсивно, сохраняет права, символические ссылки, время и владельца) |
-v |
Подробный вывод |
-z |
Сжатие при передаче (для удалённых соединений) |
--progress |
Показывать прогресс копирования |
-u |
Копировать только новые и обновлённые файлы |
--delete |
Удалять файлы в папке назначения, которых нет в источнике |
-e "ssh" |
Использовать SSH для копирования на удалённый сервер |
Примеры
- Копирование локальной директории:
rsync -av /home/user/docs/ /home/user/backup/docs/
- Копирование на удалённый сервер:
rsync -avz /home/user/docs/ user@remote:/home/user/backup/docs/
- С удалением лишних файлов на целевом сервере:
rsync -avz --delete /home/user/docs/ user@remote:/home/user/backup/docs/
- Показывать прогресс:
rsync -av --progress /var/www/html/ /backup/www/html/
- Копирование только обновлённых файлов:
rsync -avu /source/dir/ /destination/dir/
- Использование нестандартного порта 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 |
Использовать указанный приватный ключ |
Примеры
- Копирование файла на удалённый сервер:
scp file.txt user@remote:/home/user/
- Копирование директории рекурсивно:
scp -r /home/user/docs user@remote:/home/user/backup/
- Копирование с использованием нестандартного порта SSH:
scp -P 2222 file.txt user@remote:/home/user/
- Копирование с приватным ключом:
scp -i ~/.ssh/id_rsa file.txt user@remote:/home/user/
- Копирование с удалённого сервера на локальную машину:
scp user@remote:/home/user/file.txt /home/localuser/
- Сжатие передаваемых данных:
scp -C largefile.tar.gz user@remote:/home/user/
⚡ Резюме
| Команда | Особенности |
|---|---|
cp |
Простое локальное копирование |
rsync |
Синхронизация локально и удалённо, поддержка инкрементного копирования |
scp |
Безопасное копирование через SSH, удобно для удалённых серверов |
[!TIP] Для больших директорий или регулярного резервного копирования используйте
rsync— он экономит трафик и время. Для разовых удалённых копий —scpдостаточно просто и безопасно.
🔗 Полезные ссылки
```