scp 원격 파일 및 로컬 파일에 추가

scp 원격 파일 및 로컬 파일에 추가

원격 서버에서 가져오려는 파일이 여러 개 있습니다. 로컬 서버의 파일을 추가로 처리하려면 파일을 단일 파일로 병합(연결)해야 하는데 원격 파일에서는 이 작업을 수행할 수 없습니다.

내부적으로 어떻게 작동하는지 잘 모르겠지만 scp최상의 성능을 위해서는 파일을 로컬 디렉터리에 쓴 다음 병합하는 대신 즉시 병합한 다음 단일 파일에 써야 한다고 생각합니다. scp원격 파일에서 로컬 파일로 프로세스 중에 파일을 동적으로 병합(추가)할 수 있는지 알려주시겠습니까 ?

더 좋은 아이디어가 없나요?

답변1

scp 대신 SSH를 사용하고 실행하십시오 cat. 어디에서 하시겠습니까?

scp remote:{file1,file2...} local-dir

대신 다음을 수행하십시오.

ssh remote cat file1 file2 ... > locale-file

답변2

이것은 어리석은 일이지만 scp원격 파일을 로컬 fifo에 복사하고 여기에서 내보내면 실제로 이 작업을 수행할 수 있는 것 같습니다.

$ mkfifo p
$ while :; do cat p >> output ; done  &
$ scp somehost:test/\* p
bar       100%    4    10.9KB/s   00:00    
doo       100%    4     8.6KB/s   00:00    
foo       100%    4    13.6KB/s   00:00  
$ kill %1
# output contains the files concatenated

(OpenSSH 7.4p1-10+deb9u2를 사용하여 Debian에서 테스트됨)

답변3

다음 단계는 로컬 서버에서만 수행됩니다.

이 두 단계를 테스트했는데 훌륭하게 작동합니다.

첫 번째 단계


ssh username@remoteserverip "cat file1 file2 file3 >> /remoteserverpath/Mergedfile"

두 번째 단계에서는 병합된 파일을 원격 서버에서 로컬 서버로 복사합니다. rsync 또는 scp를 통해 이 작업을 수행할 수 있습니다.


나는 rsync를 선호한다

rsync -avzh username@remoteserverip:/remoteserverpath/Mergedfile localserverpath_where_you_want_to_save

관련 정보