scpまたはcp -Tのrsyncアナログ(ターゲットをファイルとして扱う)

scpまたはcp -Tのrsyncアナログ(ターゲットをファイルとして扱う)

これにより、次のことcpができます。

$ mkdir q
$ touch s
$ cp -T s q  # I need same effect with scp and/or rsync.
cp: cannot overwrite directory 'q' with non-directory
$ ls q

scp1つのコマンドで同じ効果を使用または取得する方法はrsync?つまり、ターゲットがディレクトリの場合は、実際のファイル転送を必要とせずにゼロ以外の終了コードで終了したいと思います。私はsファイルをディレクトリに入れたくありませんq

もちろん個別にも確認できます。問題は、1つのコマンドでこれを行う方法です。特に同時実行の場合。

ベストアンサー1

問題のリモートディレクトリが存在すると停止します。

if ! ssh user@host "[[ -d /path/to/directory ]]"; then
    # do your scp or rsync
else
    echo "Remote location is a directory.  Aborting." 1&>2
    exit 1
fi

これを線に置き換えるには:

ssh user@host "[[ -d /path/to/directory ]]" || <<scp or rsync>>

おすすめ記事