1

У меня есть Linux-машина с числовыми папками. Как безопасно скопировать диапазоны этих папок на другой сервер? Исходный компьютер запускает tcsh, целевой bash. На данный момент из каталога, содержащего данные, которые я хочу скопировать, я использую следующую команду:

scp -r [2042-2046] user@target:home/user/destination_folder

Исходный компьютер запрашивает мой пароль для цели и, кажется, копирует файлы, но на целевой машине ничего не приходит. Там нет ошибок. Однако, если я заменю диапазон папок одним именем папки, то копирование работает нормально:

scp -r 2042 user@target:home/user/destination_folder

однако это будет означать повторение команды scp 5 раз и ввод моего пароля каждый раз, что кажется очень неэффективным, особенно для больших диапазонов.

3 ответа3

1

Диапазон

[2042-2046]

представляется интерпретированным как файл 2 и файл 6.

Следующее дает необходимый диапазон:

204[2-6]
0

Используйте выражение расширения bash:

scp -r {2042..2046} user@target:home/user/destination_folder

Обратите внимание, что раскрытие скобки происходит до раскрытия параметра, поэтому вы не можете написать это:

start=2042
end=2046
scp -r {$start..$end} user@target:home/user/destination_folder

без eval

0

Вы можете использовать поток tar через SSH:

tar cvf --include='204[2-6]' - . | ssh user@target "cd /home/destination/folder; tar xvf -"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .