Я бы решил проблему с tar
прозрачностью трубы ssh
. Пример можно увидеть ниже, удаленный компьютер назван bar
. Перед тестом я создал три пустых файла /tmp/foo
, выполнив ssh bar 'mkdir /tmp/foo ; touch /tmp/foo/{a,b,c}'
.
$ ssh bar 'cd /tmp/foo ; ls | sort -r | tar -cT -' | tar -xv
c
b
a
$ ls -l a b c
-rw-r--r-- 1 dnet dnet 0 nov 29 17:07 a
-rw-r--r-- 1 dnet dnet 0 nov 29 17:07 b
-rw-r--r-- 1 dnet dnet 0 nov 29 17:07 c
-T
Флаг tar
делает его прочитать имена файлов для упаковки из следующего параметра, а -
означает стандартный ввод. Теперь вам просто нужно передать имя файла в него, которое может быть получено ls
(как в примере) или find
для более сложных задач. С помощью этой настройки вы можете использовать, sort
чтобы указать точный порядок файлов, которые будут передаваться через SSH (в этом случае -r
отсортированные файлы в обратном алфавитном порядке). -v
Добавляются только к финалу, распаковка tar
, так что порядок виден.