심볼릭 링크를 통해 파일을 다운로드(scp 사용)할 때 원래 파일 이름으로 저장할 수 있습니까?

심볼릭 링크를 통해 파일을 다운로드(scp 사용)할 때 원래 파일 이름으로 저장할 수 있습니까?

서버에서는 이미 디렉토리 구조가 이렇게 구성되어 있습니다. (논쟁의 여지가 있으므로 변경할 수 없습니다. 나에게 더 적합하도록 만드는 방법만 찾을 수 있습니다.)

/work/product/versions/app-0.98
/work/product/versions/app-1.0
/work/product/versions/app-1.1
/work/product/versions/app-1.2

각 디렉터리에는 여러 파일이 있습니다. 예를 들면 다음과 같습니다.

/work/product/versions/app-0.98/app-0.98.1234
/work/product/versions/app-0.98/app-0.98.1235
/work/product/versions/app-0.98/app-0.98.1236
/work/product/versions/app-0.98/app-0.98.1237

마음에 드는 버전을 얻으면 이를 에 심볼릭 링크하고 싶습니다 release. 예를 들면 다음과 같습니다.

ln -s /work/product/versions/app-0.98/app-0.98.1237 /work/product/versions/app-0.98/release

이렇게 하면 파일을 요청하여 항상 검증된 버전을 다운로드할 수 있습니다 release. 나는 다음과 같이 다운로드합니다.

scp me@host01:/work/product/versions/app-0.98/release .

내 로컬 파일 시스템에는 "release"라는 파일이 남아 있습니다.

me@host01:/home/me# ls -al
total 528948
drwxr-xr-x 2 me me      4096 Feb  6 12:24 .
drwxr-xr-x 8 me me      4096 Feb  2 13:03 ..
-rwxr-xr-x 1 me me 541627065 Feb  6 12:25 release

파일 이름을 원본 파일과 동일하게 하고 싶습니다 . 파일을 원본 파일 이름으로 저장하기 위해 app-0.98.1237서버나 호출에서 내용을 변경할 수 있나요 ?scp

저는 주로 Linux-Debian 및 CentOS 배포판과 같은 다양한 운영 체제를 사용합니다.

답변1

내가 생각할 수 있는 가장 가까운 것은 rsync베어 대신 사용하는 2단계 프로세스입니다(rsync를 백엔드 scp로 사용할 수 있음 ).scp

먼저 링크 자체를 복사하세요.

rsync -a username@host:/path/to/release .

그런 다음 복사 대상은 무엇입니까?

rsync -za username@host:"$(basename "$(readlink release)")" .

그러면 다음과 같은 결과를 얻게 됩니다.

$ ls -l
total 0
drwxrwxr-x  3 username  groupname  96 Feb  6 11:10 1.02
lrwxrwxrwx  1 username  groupname   4 Feb  6 11:09 release -> 1.02

관련 정보