Копирование нескольких файлов в Linux

Копирование нескольких файлов в Linux

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

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

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

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

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

решение1

Диапазон

[2042-2046]

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

Ниже приведен требуемый диапазон:

204[2-6]

решение2

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

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

решение3

Используйте 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

Связанный контент