![scp 원격 파일 및 로컬 파일에 추가](https://linux55.com/image/123729/scp%20%EC%9B%90%EA%B2%A9%20%ED%8C%8C%EC%9D%BC%20%EB%B0%8F%20%EB%A1%9C%EC%BB%AC%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%B6%94%EA%B0%80.png)
원격 서버에서 가져오려는 파일이 여러 개 있습니다. 로컬 서버의 파일을 추가로 처리하려면 파일을 단일 파일로 병합(연결)해야 하는데 원격 파일에서는 이 작업을 수행할 수 없습니다.
내부적으로 어떻게 작동하는지 잘 모르겠지만 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