[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rabota-v-cli-bash-kak-peredavat-fayly-mezhdu-mashinami-s-pomoshchyu-scp-i-rsync":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},169,"kak-peredavat-fayly-mezhdu-mashinami-s-pomoshchyu-scp-i-rsync",4,"rabota-v-cli-bash","Работа в CLI (Bash)","💻","Как передавать файлы между машинами с помощью scp и rsync?","**`scp` и `rsync`** — команды для копирования файлов между локальной машиной и удалённым сервером (или между двумя серверами) через SSH. `scp` проще в использовании, `rsync` значительно мощнее и эффективнее.\n\n### scp (Secure Copy)\n\n`scp` копирует файлы через SSH, каждый раз передавая файл целиком:\n\n```bash\n# Копировать файл на сервер\nscp file.txt user@server:\u002Ftmp\u002F\n\n# Копировать файл с сервера\nscp user@server:\u002Fvar\u002Flog\u002Fapp.log .\n\n# Копировать директорию рекурсивно\nscp -r project\u002F user@server:\u002Fopt\u002F\n\n# Указать порт\nscp -P 2222 file.txt user@server:\u002Ftmp\u002F\n\n# Копирование между двумя серверами\nscp user1@server1:\u002Fdata\u002Ffile.txt user2@server2:\u002Fdata\u002F\n\n# Используя алиас из ~\u002F.ssh\u002Fconfig\nscp file.txt production:\u002Fopt\u002Fdeploy\u002F\n```\n\n### rsync — продвинутая синхронизация файлов\n\n`rsync` превосходит `scp` по эффективности: передаёт только изменившиеся части файлов (дельта-копирование), поддерживает сжатие, возобновление передачи и множество опций.\n\n```bash\n# Базовая синхронизация\nrsync -av source\u002F user@server:\u002Fdest\u002F\n# -a = archive (рекурсивно, сохраняет права, время, символические ссылки)\n# -v = verbose\n\n# С прогрессом и сжатием\nrsync -avz --progress source\u002F user@server:\u002Fdest\u002F\n# -z = сжатие при передаче\n\n# Синхронизация с удалением лишних файлов на приёмнике\nrsync -av --delete source\u002F user@server:\u002Fdest\u002F\n\n# Исключение файлов\nrsync -av \\\n    --exclude='target' \\\n    --exclude='.git' \\\n    --exclude='*.log' \\\n    project\u002F user@server:\u002Fopt\u002Fproject\u002F\n\n# Через нестандартный SSH-порт\nrsync -av -e 'ssh -p 2222' source\u002F user@server:\u002Fdest\u002F\n\n# Пробный запуск (показать, что будет сделано, без фактического копирования)\nrsync -avn source\u002F user@server:\u002Fdest\u002F\n# -n = dry-run\n```\n\n> **Внимание:** завершающий `\u002F` у source имеет значение! `rsync -av source\u002F dest\u002F` копирует **содержимое** source в dest, а `rsync -av source dest\u002F` копирует **саму директорию** source в dest (создаст dest\u002Fsource\u002F).\n\n### Сравнение scp и rsync\n\n| Характеристика | scp | rsync |\n|---|---|---|\n| Дельта-копирование | Нет (всегда копирует полностью) | Да (передаёт только изменения) |\n| Возобновление | Нет | Да (`--partial`) |\n| Сжатие при передаче | Нет | Да (`-z`) |\n| Исключения | Нет | Да (`--exclude`) |\n| Удаление лишнего | Нет | Да (`--delete`) |\n| Dry-run | Нет | Да (`-n`) |\n| Простота | Проще | Сложнее, но значительно мощнее |\n\n### Практический пример — деплой Java-приложения\n\n```bash\n#!\u002Fbin\u002Fbash\nset -euo pipefail\n\n# Сборка и деплой\nmvn clean package -DskipTests\nrsync -avz --progress target\u002Fapp.jar deploy@production:\u002Fopt\u002Fapp\u002F\nssh production 'sudo systemctl restart myapp'\n```\n\n> **На собеседовании:** основной посыл: `scp` — для разовых копирований, `rsync` — для регулярной синхронизации и деплоя. Упомяните дельта-копирование и флаг `--dry-run` как ключевые преимущества rsync. Вопрос-ловушка: «в чём разница между `rsync source\u002F` и `rsync source`?» — завершающий слэш определяет, копируется содержимое или сама директория.\n\n---","","junior",[15,16,17,18,19],"devops","linux","ssh","bash","networking",[],null,{"title":23,"description":24,"ogTitle":23,"ogDescription":25,"keywords":26,"schemaAnswer":34,"featuredSnippetReady":35},"scp и rsync: передача файлов между серверами -- Gymterview","Как передавать файлы между машинами с помощью scp и rsync? Сравнение, дельта-копирование, синхронизация, исключения, практический пример деплоя Java-приложения.","Сравнение scp и rsync для передачи файлов: дельта-копирование, сжатие, исключения и практический пример деплоя Java-приложения.",[27,28,29,30,31,32,33],"scp","rsync","передача файлов","синхронизация файлов","дельта-копирование","деплой Java","копирование через SSH","scp (Secure Copy) -- простое копирование файлов через SSH: scp file.txt user@server:\u002Ftmp\u002F, с -r для рекурсивного копирования директорий. rsync -- продвинутая синхронизация с дельта-копированием (передаёт только изменения), поддержкой сжатия (-z), возобновления (--partial), исключений (--exclude) и удаления лишних файлов (--delete). Типичный вызов: rsync -avz --progress source\u002F user@server:\u002Fdest\u002F. rsync превосходит scp по эффективности, но scp проще в использовании. Практический пример деплоя: mvn clean package, rsync jar на сервер, ssh restart.",true]