SCP 재귀 파일 전송 순서


11

로 파일을 전송할 때 정렬 순서를 지정할 수 있는지 궁금합니다 scp.

예를 들면 다음과 같습니다. $ scp -r "user@host:/path/to/download/" .

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

아마도 이것이 어떻게 scp기능 과 관련이있을 수 있기 때문에 파일이 오름차순으로 파일과 같이 전송되도록 소스 (서버) 측에서 ssh를 구성하는 방법이 있습니까?

답변:


4

의 문제와 tar파이프 투명도를 해결해야했습니다 ssh. 아래에서 예를 볼 수 있으며 원격 PC의 이름은 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순서가 볼 수 그래서.


Woah, 훌륭한 하위 수준 접근 방식으로 더 넓은 그림을 명확하게 제시합니다. 감사합니다.
Dmitry Minkovsky

아카이브 대신 파일을 개별적으로 전송하기 위해 이러한 접근 방식을 어떻게 확장 할 수 있습니까? 에서 결과를 반복하는 루프겠습니까 sort에서 bar어떻게 든 원격 명령이 작업을 수행?
Dmitry Minkovsky

그럴지도 모르지만, 그것을 호적로 옮기는 문제는 보이지 않습니다. 당신이 그것에 대해 생각한다면,이 접근 방식과 큰 차이는 없습니다. scp각 파일에 대한 메타 데이터와 내용을 전송하는 것은 서로 다른 "프로토콜"을 사용합니다. 결과를 반복 할 수는 있지만 이름에 공백이있는 파일을 처리해야합니다.
dnet

2
@ dimadima, 당신이 대답을 너무 좋아한다면 아마도 당신은 대답을 받아 들일 수 있습니다.
피터 V. Mørch

이 답변은 효과가 있지만 파일 이름에 공백이있는 경우에 맞게 조정해야합니다.
Ruslan

1

다음을 사용하여 알파벳 순서로 파일을 전송할 수 있습니다 rsync.

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

P부분 다운로드를 허용 e하고 SSH 프로토콜을 설정하며 r재귀 적으로 다운로드합니다.


0

이것이 누군가를 돕는 경우 여기에 간단한 해결책을 제공했습니다.

/programming/23067175

여전히 영리한 방법으로 기다리고 있습니다!


1
이것은 단지 링크입니다. 완전한 답변을 얻으려면 여기에 답변을 제공 한 다음 참조 할 수있는 링크를 제공하십시오.
Kevin Panko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.