У Linux середовищі з декількома серверами багато завдань припускають переміщення одного або декількох файлів з одного сервера на інший. Залежно від кількості файлів, які ви повинні перемістити, є кілька команд, які можуть вам допомогти. Припустимо для цих обговорень, що наші сервери - alice і madhat, і що наш користувач на alice - це rabbit (кролик), і наш користувач на madhat - fieldmouse (польова мишка).
кроки Правити
Для простого файлу спробуйте команду "scp". Ви можете використовувати це як команди "push" або "pull", але давайте почнемо з pushing (висування) файлу на інший сервер. У той час як на alice використовуйте команду "scp myfile fieldmouse @ madhat: thatfile". Це скопіює файл на іншу систему в ідентифікатор користувача userid - "thatfile". Якщо ви були зареєстровані в іншій системі, ви можете так само легко витягти файл за допомогою команди "scp rabbit @ alice: myfile thatfile" і отримаєте той же результат.
Що робити, якщо у вас є великий "безлад" з файлами і каталогами для копіювання? Ви можете використовувати команду "tar" щоб створити один файл, а потім скопіювати цей файл, як зазначено вище, а потім використовувати tar, щоб поширити його на іншому сервері. Але це схоже на те. НЕ Unix-подібні. Там повинен бути спосіб зробити це за один крок, чи не так? Ну звичайно!
EВведіте pipe вашої улюбленої оболонки. Ми все ще можемо використовувати tar, щоб упакувати потрібні нам файли, а потім використовувати SSH, щоб отримати їх в іншій системі (що і SCP використовує під оболонками), і tar з іншого боку, щоб поширити файли назад. Але навіщо витрачати час і простір, створюючи сам файл tar, коли ми могли б просто створити pipe, яка охоплює дві системи і передає дані tar через неї?
Використовуючи той же каталог, що і в попередньому прикладі, спробуйте "tar -cf - mydir / * | ssh fieldmouse @ madhat 'tar -xf -'"