でファイルを転送するときにソート順を指定できるかどうか疑問に思っていますscp。
例えば:
$ scp -r "user@host:/path/to/download/" .
[... files download in a seemingly random order ...]
これはおそらくscp機能に関連している可能性があるので、たとえばファイル名の昇順でファイルが転送されるようにソース(サーバー)側でsshを構成する方法はありますか?
でファイルを転送するときにソート順を指定できるかどうか疑問に思っていますscp。
例えば:
$ scp -r "user@host:/path/to/download/" .
[... files download in a seemingly random order ...]
これはおそらくscp機能に関連している可能性があるので、たとえばファイル名の昇順でファイルが転送されるようにソース(サーバー)側でsshを構成する方法はありますか?
回答:
tarとのパイプ透過性の問題を解決しsshます。以下に例を示しますbar。リモートPCの名前はです。テストの前に、を/tmp/foo実行して3つの空のファイルを作成しました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順番が表示され、その結果、。
sortは、barどういうわけかこれを達成しますか?
scpそれぞれのファイルのメタデータとコンテンツの両方を送信し、それらは単に異なる「プロトコル」を使用します。結果を繰り返し処理できると思いますが、名前に空白が含まれているファイルに注意する必要があります。