Копіювання папок і файлів з віддаленого на локальний за допомогою SCP

Shell

Передача файлів за допомогою SCP: короткий посібник

Протокол безпечного копіювання (SCP) — це зручний інструмент для передачі файлів і каталогів між віддаленими та локальними машинами. Якщо ви часто використовуєте SSH для доступу до свого сервера, для керування вашими даними важливо знати, як ефективно копіювати папки та файли.

У цьому посібнику ми розглянемо, як використовувати SCP для копіювання віддаленої папки під назвою фу до вашої локальної машини, зокрема до /home/user/Desktop. Цей підручник передбачає базове розуміння SSH і команд терміналу.

Команда опис
scp -r Безпечно рекурсивно копіює каталог і його вміст із віддаленого хоста на локальний комп’ютер.
paramiko.SSHClient() Створює екземпляр клієнта SSH у Python для полегшення операцій SSH.
scp.get() Використовує клієнт SCP у Python для отримання файлів або каталогів із віддаленого хоста на локальний шлях.
ansible.builtin.fetch Ansible модуль для отримання файлів з віддалених машин на локальну.
flat: no Опція в модулі вибірки Ansible для збереження структури каталогів під час копіювання.
validate_checksum: yes Забезпечує цілісність скопійованих файлів шляхом перевірки їх контрольних сум.

Розуміння SCP для передачі файлів

Наданий сценарій оболонки демонструє, як використовувати щоб скопіювати папку з віддаленого сервера на локальну машину. По-перше, він визначає змінні для віддаленого імені користувача, хоста та каталогу, а також локального каталогу. Потім сценарій виконує Команда, яка розшифровується як "захищена копія" та дозволяє рекурсивне копіювання каталогів. Синтаксис вказує вихідний шлях, while ${LOCAL_DIR} вказує шлях призначення на локальній машині. Сценарій завершується відтворенням повідомлення про успіх.

Сценарій Python досягає тієї ж мети, але використовує бібліотека для обробки з’єднань SSH і бібліотеку для виконання безпечного копіювання. Після імпорту необхідних бібліотек він встановлює змінні для віддаленого та локального каталогів. Сценарій створює екземпляр клієнта SSH за допомогою і підключається до віддаленого сервера за допомогою connect метод. Потім він створює екземпляр клієнта SCP з і використовує метод копіювання віддаленого каталогу на локальну машину. Нарешті, сценарій закриває клієнт SCP.

Автоматизація передачі файлів за допомогою Ansible

Ansible playbook — ще один метод копіювання файлів з віддаленого сервера на локальну машину. Ansible використовує конфігурацію на основі YAML для визначення завдань. Посібник починається з назви завдання та визначення хостів, якими в даному випадку є localhost. Потім він визначає завдання отримати віддалену папку за допомогою модуль. The атрибут визначає віддалений каталог, тоді як атрибут Атрибут визначає локальне місце призначення. The flat: no гарантує збереження структури каталогів під час копіювання.

The опція гарантує, що підручник не працюватиме, якщо вихідний каталог не існує, надаючи додатковий рівень обробки помилок. Крім того, опція перевіряє цілісність скопійованих файлів шляхом перевірки їхніх контрольних сум, гарантуючи, що файли передано правильно та без пошкоджень. Цей підхід особливо корисний для автоматизації повторюваних завдань передачі файлів послідовним і надійним способом.

Використання SCP для передачі файлів з віддаленого на локальний

Сценарій оболонки для передачі файлів SCP

# Copying a remote folder to local directory using SCP
#!/bin/bash
# Define variables
REMOTE_USER="your_username"
REMOTE_HOST="your_server_address"
REMOTE_DIR="/path/to/remote/folder"
LOCAL_DIR="/home/user/Desktop"
# Execute SCP command
scp -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} ${LOCAL_DIR}
echo "Folder copied successfully to ${LOCAL_DIR}"

Автоматизація передачі файлів SCP за допомогою Python

Сценарій Python для автоматизованої передачі SCP

import paramiko
from scp import SCPClient
# Define variables
remote_user = "your_username"
remote_host = "your_server_address"
remote_dir = "/path/to/remote/folder"
local_dir = "/home/user/Desktop"
# Create SSH client and connect
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect(remote_host, username=remote_user)
# Create SCP client and transfer files
scp = SCPClient(ssh.get_transport())
scp.get(remote_dir, local_dir, recursive=True)
scp.close()

Використання Ansible для керування передачею файлів SCP

Ansible Playbook для передачі файлів SCP

--- 
- name: Copy folder from remote to local
  hosts: localhost
  tasks:
    - name: Copy remote folder to local directory
      ansible.builtin.fetch:
        src: "/path/to/remote/folder"
        dest: "/home/user/Desktop"
        flat: no
        fail_on_missing: yes
        validate_checksum: yes

Розширені методи SCP та міркування

Крім базової передачі файлів, SCP пропонує кілька розширених функцій і параметрів, які можуть бути безцінними для складніших завдань. Однією з таких функцій є можливість використання символів узагальнення для визначення кількох файлів або каталогів. Наприклад, використовуючи скопіює всі файли .txt із віддаленого каталогу до локального каталогу. Це може заощадити час і спростити робочі процеси під час роботи з великою кількістю файлів.

Ще одна корисна функція параметр, який дозволяє вказати номер порту для підключення SCP. Це особливо зручно, якщо ваша служба SSH працює на нестандартному порту. Наприклад, використовуючи підключатиметься до віддаленого хосту через порт 2222. Крім того, опцію можна використовувати для стиснення даних під час передачі, що може значно скоротити час передачі великих файлів. Це досягається шляхом додавання -C до команди SCP, наприклад in .

  1. Як скопіювати весь каталог за допомогою SCP?
  2. Використовуйте команду для рекурсивного копіювання каталогу.
  3. Чи можу я копіювати файли з певного порту за допомогою SCP?
  4. Так, ви можете вказати порт за допомогою .
  5. Як я можу скопіювати кілька файлів за допомогою SCP?
  6. Використовуйте символи підстановки, наприклад для копіювання кількох файлів.
  7. Чи можна стискати файли під час передачі SCP?
  8. Так, додати параметр вашої команди SCP, як-от .
  9. Як передавати великі файли за допомогою SCP?
  10. Використовувати можливість стиснення файлів і забезпечення стабільного з’єднання для запобігання перебоїв.
  11. Чи можна SCP автоматизувати за допомогою сценаріїв?
  12. Так, ви можете використовувати сценарії оболонки, сценарії Python або підручники Ansible для автоматизації передачі файлів SCP.
  13. Що робити, якщо передача SCP не вдається?
  14. Перевірте підключення до мережі, переконайтеся, що шлях і дозволи правильні, а також перевірте конфігурацію SSH.
  15. Чи може SCP відновити перервану передачу?
  16. Ні, SCP не підтримує відновлення передачі. Розгляньте можливість використання rsync для відновлюваних передач.
  17. Як я можу забезпечити цілісність файлу під час передачі SCP?
  18. Використовувати параметр у Ansible або перевірити контрольні суми вручну після передачі.

Опанування використання SCP для передачі файлів між віддаленими та локальними машинами є важливою навичкою для ефективного керування сервером. Використовуючи сценарії оболонки, сценарії Python і підручники Ansible, ви можете автоматизувати та спростити ці завдання, заощадивши час і зменшивши кількість помилок. Розширені параметри, такі як рекурсивне копіювання, специфікація порту та стиснення даних, ще більше підвищують універсальність SCP. Розуміння цих методів гарантує безпечну та надійну передачу файлів, незалежно від того, чи це стосується щоденних операцій чи великомасштабної міграції даних.