파일을 원격 호스트에 복사하고 이름을 바꾸는 스크립트

파일을 원격 호스트에 복사하고 이름을 바꾸는 스크립트

/foo파일을 tar하고 호스트 A에서 특정 대상의 원격 호스트 B로 복사(scp?) 하고 YYYY-MM -DD와 같이 우리가 사용하는 특정 시간 형식으로 이름을 바꿀 수 있는 쉘 스크립트를 작성하려고 합니다 .

이제 이 기능을 추가하기 위해 특정 날짜에 호스트 A에서 호스트 B의 경로로 파일이 복사되었다고 가정해 보겠습니다. foo.txt이는 물론 스크립트에 의해 수행됩니다. 이제 이 스크립트가 같은 날 두 번 실행되는 경우 스크립트는 원격 호스트 B의 기존 파일을 덮어쓰는 대신 호스트 B에 이미 존재하는 버전을 인식해야 하며, 덮어쓰는 대신 파일에 타임스탬프를 추가해야 합니다. it "1"로 복사한다고 가정하여 다른 파일에 복사됩니다.

예를 들어 foo.txt파일이 원격 호스트 B에 이미 존재하는 경우 호스트 A에서 실행되는 스크립트는 파일 이름을 변경 foo.txt.1하고 원격 호스트 B의 동일한 경로에 복사해야 합니다.

파일일 뿐이므로 rsync를 통해 SCP를 사용할 수 있습니다.

답변1

귀하의 요청을 잘 이해했다면 rsync 옵션( --backup또는 -b) 하나만 필요합니다.

rsync 매뉴얼 페이지를 살펴보십시오.

-비,--지원
이 옵션을 사용하면 각 파일이 전송되거나 삭제될 때 기존 대상 파일의 이름이 변경됩니다. 다음을 사용하여 백업 파일의 위치와 추가되는 접미사(있는 경우)를 제어할 수 있습니다.--백업 디렉터리그리고 - 접미사옵션.

foo.txt따라서 파일을 폴더로 /foo, Host1에서 로 전송하려는 경우 Host2명령은 다음과 같습니다.

rsync -b --suffix=".$(date +%Y-%m-%d)" -e "ssh -p $SSH_SERVER_PORT" foo.txt remoteuser@Host2:/foo/foo.txt  

" " 파일을 foo.txt에 복사할 때마다 Host2새 파일 " foo.txt.YYYY-MM-DD"이(가) 생성됩니다. 파일의 모든 백업 버전을 동일한 위치에 유지하려면
이 옵션을 사용하는 것이 좋습니다 .--backup-dir

  • 참고: 선택한 접미사로 인해 파일당 하루에 1개의 백업 복사본만 생성됩니다. "모든" 백업 복사본을 보관하려면 다른 접미사 옵션을 사용하는 것이 좋습니다(날짜도 +%Y-%m-%d_%H%M%s고려 가능)

관련 정보