シンボリックリンクからファイルをダウンロード(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

おすすめ記事