SCP rekurencyjne polecenie przesłania pliku

11

Zastanawiasz się, czy możliwe jest określenie kolejności sortowania podczas przesyłania plików scp.

Na przykład: $ scp -r "user@host:/path/to/download/" .

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

Ponieważ być może może to być związane ze sposobem scpdziałania, czy istnieje jakiś sposób skonfigurowania ssh po stronie źródłowej (serwera), aby pliki były przesyłane, na przykład w porządku rosnącym nazw plików?

Dmitrij Minkowski
źródło

Odpowiedzi:

4

Chciałbym rozwiązać problem z tarprzezroczystością rur ssh. Przykład można zobaczyć poniżej, nazwa komputera zdalnego bar. Przed testem utworzyłem trzy puste pliki /tmp/foo, wykonując 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

-TFlaga tarczyni go odczytać nazwy plików na opakowaniu od następnego parametru, a -oznacza standardowe wejście. Teraz wystarczy wstawić do niego nazwę plików, które mogą pochodzić ls(jak w przykładzie) lub w findprzypadku trudniejszych zadań. Dzięki tej konfiguracji możesz użyć, sortaby wskazać dokładną kolejność przesyłania plików przez SSH (w tym przypadku -rposortowane pliki w odwrotnej kolejności alfabetycznej). -vDodaje się tylko w końcowej rozpakowywania tar, tak, że kolejność jest widoczny.

dnet
źródło
Woah, świetne podejście na niższym poziomie i tak wyraźne przedstawienie szerszego obrazu. Dziękuję Ci.
Dmitrij Minkovsky
Jak takie podejście można rozszerzyć, aby przesyłać pliki pojedynczo zamiast w archiwum? Czy pętla iterująca wyniki sortw barzdalnym poleceniu w jakiś sposób by to osiągnęła?
Dmitry Minkovsky
Może, ale nie widzę problemu z przeniesieniem go jako pobudki. Jeśli się nad tym zastanowić, nie ma dużej różnicy między tym podejściem a scp- zarówno wysyłają metadane, jak i zawartość dla każdego pliku, po prostu używają innego „protokołu”. Myślę, że możesz iterować wyniki, ale powinieneś zadbać o pliki z białymi spacjami w ich nazwach.
dnet
2
@dimadima, jeśli tak bardzo lubisz odpowiedź, być może możesz ją przyjąć .
Peter V. Mørch
Ta odpowiedź działa, ale trzeba ją dostosować do przypadku, gdy w nazwach plików są spacje.
Ruslan
1

Transfer plików można osiągnąć w kolejności alfabetycznej, używając rsync:

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

Pumożliwia częściowe pobieranie, eustawia protokół SSH i rpobiera rekurencyjnie.

Lenar Hoyt
źródło
0

Na wypadek, gdyby to komuś pomogło, podałem tutaj proste rozwiązanie:

/programming/23067175

Wciąż czekam na lepszy sposób!

Victor Sojo
źródło
1
To tylko link. Aby uzyskać pełną odpowiedź, podaj odpowiedź tutaj, a następnie podaj link w celach informacyjnych.
Kevin Panko,