다른 서버로 전송되는 파일에 대한 로그 파일을 만드는 방법

다른 서버로 전송되는 파일에 대한 로그 파일을 만드는 방법

디렉터리에 여러 파일을 수신하고 60분 이내에 수신된 파일을 다른 서버로 전송해야 하는 시나리오가 있습니다. 그래서 다음 명령을 사용합니다.

{ find -maxdepth 1 -type f -mmin -60| cut -d'/' -f2 | sed 's/^/put /' ; echo bye ; } | \
    /usr/local/bin/sshpass -p password sftp -oBatchMode=no [email protected]:/folder

이제 명령을 수정하고 전송 중인 파일의 파일 이름을 인쇄해야 하는 로그 파일을 만들어야 합니다. 아래 스크립트를 작성했는데 로그파일도 전송되고 실행중이라 왠지 신뢰가 안가네요찾다두 번 명령하면 로그 파일이 생성되는 동안 새 파일이 수신 및 전송될 수 있으므로 약간의 데이터 차이가 발생할 수 있습니다. 이 문제를 해결하는 방법을 제안해 주세요.

#!/bin/bash

file=/root/test/file_$(date +%Y-%m-%d_%H%M%S)

find -maxdepth 1 -type f -mmin -60| cut -d'/' -f2 > $file

{ find -maxdepth 1 -type f -mmin -60| cut -d'/' -f2 | sed 's/^/put /' ; echo bye ; } | \
    /usr/local/bin/sshpass -p password sftp -oBatchMode=no [email protected]:/folder

답변1

tee파이프라인의 일부로 파일 이름을 파일에 저장하는 데 사용할 수 있습니다 .

find -maxdepth 1 -type f -mmin -60| cut -d'/' -f2 | tee -a /path/to/log.file | sed 's/^/put /' 

-a파일이 이미 존재하는 경우 추가됩니다.

관련 정보