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?
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.
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:
sort
wbar
zdalnym poleceniu w jakiś sposób by to osiągnęł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.Transfer plików można osiągnąć w kolejności alfabetycznej, używając
rsync
:P
umożliwia częściowe pobieranie,e
ustawia protokół SSH ir
pobiera rekurencyjnie.źródło
Na wypadek, gdyby to komuś pomogło, podałem tutaj proste rozwiązanie:
/programming/23067175
Wciąż czekam na lepszy sposób!
źródło