Копиране на файлове чрез SSH ⋆ ALexHost SRL

Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills
18.12.2024

Копиране на файлове чрез SSH

SSH (Secure Shell) е широко използван протокол за сигурен достъп и управление на отдалечени сървъри чрез криптирана връзка. Една от най-често срещаните задачи при работа със SSH е копирането на файлове между вашата локална машина и отдалечен сървър или между два отдалечени сървъра.

В тази статия ще разгледаме различни начини за копиране на файлове чрез SSH, включително използване на SCP (Secure Copy Protocol), rsync и други методи.


Защо да използваме SSH за прехвърляне на файлове?

Използването на SSH за прехвърляне на файлове има няколко предимства:

  • Сигурност: SSH криптира както командата, така и данните по време на предаването, което гарантира, че чувствителната информация е защитена.
  • Ефективност: SSH е бърз и надежден, като ви позволява да прехвърляте файлове директно между системите, без да е необходимо да влизате отделно.
  • Автоматизация: SSH може да се интегрира в скриптове, което позволява автоматизирано прехвърляне на файлове между сървъри или локални машини.

1. Копиране на файлове с SCP (Secure Copy Protocol)

SCP е един от най-популярните инструменти за сигурно копиране на файлове чрез SSH. Той ви позволява да прехвърляте файлове от локална машина към отдалечен сървър, от отдалечен сървър към вашата локална машина или между два отдалечени сървъра.

Основен синтаксис на SCP:

scp [опции] [източник] [дестинация]

Пример 1: Копиране на файл от локална машина на отдалечен сървър

scp /path/to/local/file username@remote_host:/path/to/remote/destination

В този пример:

  • /path/to/local/file е пътят до файла на вашата локална машина.
  • username@remote_host е SSH потребителят и името на хоста или IP адресът на отдалечения сървър.
  • /path/to/remote/destination е пътят, по който файлът ще бъде съхранен на отдалечения сървър.

Пример 2: Копиране на файл от отдалечен сървър на местната машина

scp username@remote_host:/path/to/remote/file /path/to/local/destination

В този случай файлът се прехвърля от отдалечения сървър на локалната машина.

Пример 3: Рекурсивно копиране на директория

За да копирате цяла директория, използвайте опцията -r (рекурсивно):

scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination

Това ще прехвърли директорията и цялото ѝ съдържание на отдалечения сървър.

Полезни опции на SCP:

  • -P [порт]: Посочете порта на SSH, ако е различен от този по подразбиране (22).
  • -C: Включете компресията по време на прехвърлянето за по-бързо копиране на файлове.
  • -i [identity_file]: Използвайте конкретен частен ключ SSH за удостоверяване.

2. Копиране на файлове с rsync

rsync е друг мощен инструмент за прехвърляне на файлове през SSH. Често се предпочита за прехвърляне на големи или повтарящи се файлове, тъй като копира само промените между източника и дестинацията, спестявайки време и честотна лента.

Основен синтаксис на rsync:

rsync [опции] [източник] [дестинация]

Пример 1: Копиране на файл от локална машина на отдалечен сървър

rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination

Пример 2: Копиране на директория с rsync

rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/

Полезни опции на rsync:

  • -a: Режим на архивиране, при който се запазват символните връзки, разрешенията, времевите маркери и собствеността на файловете.
  • -v: Вербален режим за показване на напредъка по време на прехвърлянето.
  • -z: Активирайте компресията, за да ускорите прехвърлянето.
  • –delete: Премахване на файлове в дестинацията, които вече не съществуват в източника.
  • -e “ssh -p [порт]”: Посочете потребителски порт на SSH.

3. Копиране на файлове между два отдалечени сървъра

С помощта на SSH можете също така да копирате файлове директно между два отдалечени сървъра. Това се поддържа както от SCP, така и от rsync.

Пример 1: Копиране на файлове между два отдалечени сървъра с SCP

scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination

Пример 2: Копиране на файлове между два отдалечени сървъра с rsync

rsync -avz username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination

Това е особено полезно за прехвърляне на файлове между сървъри, без да се налага първо да ги изтегляте на локалната си машина.


4. Копиране на файлове с SFTP (SSH File Transfer Protocol)

SFTP е друг метод за сигурно прехвърляне на файлове през SSH. Той е подобен на FTP, но използва SSH за осигуряване на криптиране. SFTP обикновено се използва в интерактивни сесии, но може да бъде и автоматизиран.

Използване на SFTP:

За да стартирате SFTP сесия, изпълнете следната команда:

sftp username@remote_host

След като влезете в прозореца на SFTP, можете да използвате команди като:

  • put /path/to/local/file /path/to/remote/destination: Качвате файл от локалната си машина на отдалечения сървър.
  • get /path/to/remote/file /path/to/local/destination: Получете /path/to/remote/file /path/to/local/destination: Изтегляне на файл от отдалечения сървър на вашата локална машина.
  • mput и mget: За качване или изтегляне на няколко файла наведнъж.

За да прекратите SFTP сесията, въведете exit или quit.


5. Автоматизиране на прехвърлянето на файлове със SSH ключове

При многократни прехвърляния на файлове е добре да настроите удостоверяване, базирано на SSH ключове, за да не се налага да въвеждате паролата си всеки път.

Стъпка 1: Генериране на двойка SSH ключове (ако нямате такъв)

На локалната си машина стартирайте:

ssh-keygen -t rsa

Това ще генерира двойка публичен и частен ключ.

Стъпка 2: Копиране на публичния ключ на отдалечения сървър

Използвайте следната команда, за да копирате публичния си ключ на отдалечения сървър:

ssh-copy-id username@remote_host

Сега можете да влизате и да прехвърляте файлове, без да е необходимо да въвеждате парола, което улеснява автоматизацията.


Заключение

Копирането на файлове чрез SSH е сигурен и ефективен начин за прехвърляне на данни между локалната ви машина и отдалечен сървър или между два отдалечени сървъра. Независимо дали използвате SCP, rsync или SFTP, SSH предлага криптирано прехвърляне на файлове, което предпазва данните ви от прихващане. Инструменти като SCP са лесни за еднократни трансфери, докато rsync е идеален за текущи задачи за синхронизация, особено за големи файлове или директории. Разбирането на тези инструменти ще ви помогне да управлявате по-ефективно прехвърлянето на файлове, особено в среда на отдалечен сървър.

Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills