10

Интересно, можно ли указать порядок сортировки при передаче файлов с помощью scp .

Например:$ scp -r "user@host:/path/to/download/" .

[... files download in a seemingly random order ...]

Поскольку, возможно, это может быть связано с тем, как функционирует scp , существует ли какой-либо способ настроить ssh на стороне источника (сервера), чтобы файлы передавались, например, в порядке возрастания имени файла?

3 ответа3

3

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

1

Можно добиться передачи файлов в алфавитном порядке с помощью rsync:

rsync -P -e ssh -r user@remote_host:/some_path local_path

P разрешает частичную загрузку, e устанавливает протокол SSH и r загружает рекурсивно.

0

В случае, если это кому-то поможет, я предоставил простое решение:

https://stackoverflow.com/questions/23067175

Все еще жду более умного способа сделать это!

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