Як передавати файли з одного 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". TНа цей раз ми додамо ключ-r, щоб змусити копію діяти "рекурсивно". "Scp -r mydir fieldmouse @ madhat:."- скопіює весь каталог" mydir "на іншу систему, включаючи всі його зміст і додаткові каталоги. Каталог на madhat все одно буде називатися mydir.
3. Що робити, якщо у вас є великий "безлад" з файлами і каталогами для копіювання? Ви можете використовувати команду "tar" щоб створити один файл, а потім скопіювати цей файл, як зазначено вище, а потім використовувати tar, щоб поширити його на іншому сервері ... Але це схоже на те... НЕ Unix-подібні. Там повинен бути спосіб зробити це за один крок, чи не так? Ну звичайно!
EВведіте pipe вашої улюбленої оболонки. Ми все ще можемо використовувати tar, щоб упакувати потрібні нам файли, а потім використовувати SSH, щоб отримати їх в іншій системі (що і SCP використовує під оболонками), і tar з іншого боку, щоб поширити файли назад. Але навіщо витрачати час і простір, створюючи сам файл tar, коли ми могли б просто створити pipe, яка охоплює дві системи і передає дані tar через неї?
Використовуючи той же каталог, що і в попередньому прикладі, спробуйте "tar -cf - mydir / * | ssh fieldmouse @ madhat `tar -xf -`"
EВведіте pipe вашої улюбленої оболонки. Ми все ще можемо використовувати tar, щоб упакувати потрібні нам файли, а потім використовувати SSH, щоб отримати їх в іншій системі (що і SCP використовує під оболонками), і tar з іншого боку, щоб поширити файли назад. Але навіщо витрачати час і простір, створюючи сам файл tar, коли ми могли б просто створити pipe, яка охоплює дві системи і передає дані tar через неї?
Використовуючи той же каталог, що і в попередньому прикладі, спробуйте "tar -cf - mydir / * | ssh fieldmouse @ madhat `tar -xf -`"
Поради
- Звичайно, є також інші способи зробити це. Linux - повна інструментів. Ваша оцінка може змінюватися.
- Ви повинні міняти ім`я користувача / ім`я хоста / файл ім`я каталогу в залежності від конфігурації мережі і навколишнього середовища, поки використовуєте команди вище. Команди, наведені вище, є тільки прикладами виконання команд для копіювання файлів на сервер.
попередження
- Переконайтеся, що ідентифікатори і їх GID на різних систем, які ви використовуєте, збігаються (не тільки імена користувачів). Якщо це не так, цікаві проблеми з безпекою відбуватимуться.