SCP: 디렉터리를 복사하지만 특정 파일만 복사합니다.

SCP: 디렉터리를 복사하지만 특정 파일만 복사합니다.

디렉터리를 복사하려고 하는데 특정 파일만 복사하려고 합니다.

sudo scp -r user@ip:'ls /nas1/logs/tomcat/dev-main/dev-main*|grep localhost_access_log.2023-09-21.txt' /home/test

파일이 원격 서버에 있는 경우

/nas1/logs/tomcat/dev-main/dev-main-1111/localhost_access_log.2023-09-21.txt    
/nas1/logs/tomcat/dev-main/dev-main-1234/localhost_access_log.2023-09-21.txt

그런 다음 해당 파일을 로컬 서버에 복사하고 싶습니다.

/home/test/dev-main-1111/localhost_access_log.2023-09-21.txt
/home/test/dev-main-1234/localhost_access_log.2023-09-21.txt

scp 명령과 함께 grep을 사용할 수 있습니까?

답변1

rsync댓글대로 설치되어 있지 않으니 사용 tar하시면 됩니다.

ssh user@ip 'cd /nas1/logs/tomcat/ && tar cf - dev-main-*/localhost_access_log.2023-09-22.txt' | tar xf -

설명하다:

  • ssh user@ip '...'...원격 호스트에서 명령 실행
  • 이 경우 실행할 명령은 cd /nas1/logs/tomcat/ && tar cv dev-main-*/localhost_access_log.2023-09-22.txt먼저 원격 디렉터리를 다음으로 변경한 /nas1/logs/tomcat/tar전송할 파일과 일치하는 glob으로 실행하는 것입니다.
  • tar명령은 c아카이브를 표준 출력으로 덤프하는 옵션과 함께 제공됩니다(해당 옵션이 없으면 구현 및/또는 환경에 따라 기본 테이프 장치 또는 표준 출력으로 보냅니다). 여기에 로컬 명령에 대한 파이프가 있습니다.f -ftartar
  • tar xf -부분은 표준 입력(파이프의 다른 쪽 끝)에서 아카이브를 읽고 추출하여 디렉터리 구조와 일부 기타 메타데이터( p더 많은 메타데이터를 보존하기 위해 추가된 옵션)를 보존합니다.

당신은 에 있어야합니다 /home/test/.

답변2

명령을 경로에 넣을 수는 없지만 scp표준 glob(와일드카드 패턴)과 일치할 수 있는 파일 세트를 원하는 것처럼 보이며 소스 경로를 유지하는 다른 도구가 있습니다.

이것은:

rsync -avR 'user@ip:/nas1/logs/tomcat/./dev-main/dev-main-*/localhost_access_log.2023-09-21.txt' /home/test/

관련 정보