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