Оболочка для извлечения данных с нескольких серверов с помощью scp

Конечно, могут. Вы можете монтировать что угодно(фактические файловые системы дисков, файловые системы fuse, overlayfs, tmpfs, связывания и т. д. )ниже /sysили /proc, расширяя и/или заменяя интерфейсы, предоставляемые ядром.

Хорошо ли это, это совсем другое дело.

Пример:

# unshare -m
# touch /tmp/foo
# mount -B /tmp/foo /proc/1/status
# echo FOR GREAT JUSTICE > /proc/1/status
# cat /proc/1/status
0
12.02.2021, 10:47
2 ответа

Как сказал dirkt, это будет выполнять каждую команду последовательно --, т. е. следующая копия не будет запущена, пока первая не будет выполнена.

Если вы хотите, чтобы скрипт выполнялся в разумные сроки, вы можете добавить символ &в конец строки или блока кода (, заключенного в фигурные скобки ), чтобы выполнить команду в фоновом режиме и немедленно начать следующий, как этот:

#!/bin/bash

for server in $(cat server.txt); do
    scp -r  $username@$server:/tmp/backup/*.txt* /backup/ &
done
0
18.03.2021, 22:30

Написанные так, они будут идти один за другим.

Взгляните наparallel(вам может понадобиться установить программный пакет )для его параллельного выполнения. Кроме того, не выполняйте все 300 сразу, ограничьте количество одновременных выполнений (, иначе в целом это будет медленнее ).

Вы можете войти в систему без пароля; вам нужно будет создать пару ключей ssh, поместить закрытый ключ в машину, с которой вы делаете scp, и поместить открытый ключ в ~/.ssh/authorized_keysна всех 300 машинах, с которых вы копируете. Если ключи находятся в правильных местах, вам не нужно менять свой сценарий.

0
18.03.2021, 22:30

Теги

Похожие вопросы