私は、リモートパスがディレクトリ(またはシンボリックリンクディレクトリ)または読み取り可能なファイルを指していることを確認するための短くて簡単な方法を探しています。
ディレクトリの場合は、scp
特定のファイルをそのディレクトリ内からローカルシステムに転送できますが、ファイルの場合はscp
そのファイルでのみ作業できます。
私が知っていたファイルパスscp
はuser@host:/path/to/dir-or-file
。
bash
注:ローカルシステム(WindowsのMobaXterm)では使用できますが、リモートシステムscp
(ssh
パスを確認したい場所)は完全なLinuxディストリビューションです。
ベストアンサー1
ファイル(ファイルの場合)またはディレクトリの一部(ディレクトリの場合)を転送しようとしています。
if ! scp user@host:/path/to/dir-or-file local/path
then
scp user@host:/path/to/dir-or-file/some-specific-file local/path
fi
scp
optionsなしでディレクトリを転送するように指示された場合は-r
失敗します。これを使用して、リモートホストの指定されたパスがディレクトリであることを検出し、scp
最初にパス名をファイルとして取得できない場合は、2番目の呼び出しでディレクトリ内の特定のファイルを取得できます。scp
もちろん、移動したい場合みんなディレクトリ(ディレクトリの場合)できること
scp -r user@host:/path/to/dir-or-file local/path
パスがディレクトリであるかファイルであるかに関係なく動作します。