Як передавати файли з одного Linux сервера на інший

В Linux середовищі з декількома серверами багато завдань припускають переміщення одного або декількох файлів з одного сервера на інший. Залежно від кількості файлів, які ви повинні перемістити, є кілька команд, які можуть вам допомогти... . Припустимо для цих обговорень, що наші сервери-alice і madhat, і що наш користувач на alice-це rabbit (кролик), і наш користувач на madhat - fieldmouse (Польова мишка).

Кроки

  1. Для простого файлу спробуйте команду "scp".ви можете використовувати це як команди "push " або" pull", але давайте почнемо з pushing (висування) файлу на інший сервер. У той час як на alice використовуйте команду "scp myfile fieldmouse@madhat:thatfile". Це скопіює файл на іншу систему в ідентифікатор користувача userid - "thatfile". Якщо ви були зареєстровані в іншій системі, Ви можете так само легко витягнути файл за допомогою команди "scp rabbit@alice:myfile thatfile" і отримаєте той же результат.
  2. Щоб скопіювати весь каталог, ми можемо знову звернутися до команди "scp".ТНа цей раз ми додамо ключ-r, щоб змусити копію діяти "рекурсивно". "scp -r mydir fieldmouse@madhat:."- скопіює весь каталог "mydir" на іншу систему, включаючи всі його зміст і додаткові каталоги. Каталог на madhat все одно буде називатися mydir.
  3. Що робити, якщо у вас є великий "безлад" з файлами і каталогами для копіювання? ви можете використовувати команду " tar " щоб створити один файл, а потім скопіювати цей файл, як зазначено вище, а потім використовувати tar, щоб поширити його на іншому сервері ... Але це схоже на це... не Unix-подібні. Там повинен бути спосіб зробити це за один крок, чи не так? Ну, звичайно!

    Евведіть pipe вашої улюбленої оболонки. Ми все ще можемо використовувати tar, щоб упакувати потрібні нам файли, а потім використовувати SSH, щоб отримати їх в іншій системі (що і SCP використовує під оболонками), і tar з іншого боку, щоб поширити файли назад. Але навіщо витрачати час і простір, створюючи сам файл tar, коли ми могли б просто створити pipe, яка охоплює дві системи і передає дані tar через неї?

    використовуючи той же каталог, що і в попередньому прикладі, спробуйте "tar-cf - mydir/* / ssh fieldmouse@madhat' tar-xf - '"

Поради

  • Звичайно, є також і інші способи зробити це. Linux-повна інструментів. Ваша оцінка може змінюватися.
  • Ви повинні змінювати ім'я користувача / ім'я хоста / файл ім'я каталогу в залежності від конфігурації мережі і навколишнього середовища, поки використовуєте команди вище. Команди, наведені вище, є лише прикладами виконання команд для копіювання файлів на сервер.

Попередження

  • Переконайтеся, що ідентифікатори та їх GID на різних систем, які ви використовуєте, збігаються (не тільки імена користувачів). Якщо це не так, цікаві проблеми з безпекою будуть відбуватися.

Ще почитати: