Я хотел бы решить проблему с 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 , так что порядок виден.