scpを使用して上書きしたいファイルを持つリモートホストがあります。これは簡単です
scp 'myfile.ext' '[email protected]:/bar/baz'
また、新しいバージョンで上書きするのではなく、元の "/bar/baz/myfile.xt"をファイルに "名前を変更"したいと思います。単純な "/bar/baz/myfile.xt~"で十分ですが、カウンターまたは現在の日付がより良いです。
scpでできる方法はありますか?
常にインタラクティブなパスワードを入力する必要があるため、「scp」呼び出しを最小限にしたいと思います。 (いいえ、認証方法は変更できません。)
ベストアンサー1
カウンターまたは日付サフィックスを使用して、元の名前の名前をより良い名前/bar/baz/myfile.xt
に変更したいと思います。/bar/baz/myfile.xt~
を使用してこれを直接実行することはできませんが、scp
以下は元のコマンドに対するいくつかの選択肢です。
使用
rsync
rsync -ab myfile.ext [email protected]:/bar/baz
この
-b
フラグは、rsync
ターゲットファイルが変更された場合にバックアップを実行するように指示します。デフォルトは追加~
ですが、このデフォルトを変更できます。たとえば、以下は今日の日付(ソースマシンで定義されているように)を使用します。rsync -ab --suffix ".$(date +'%Y%m%d')" myfile.ext [email protected]:/bar/baz
ssh
と一緒に使用されますscp
。これは、baz
ソースファイルがコピーされるディレクトリではなく、ターゲットファイルの名前であると仮定します。ssh [email protected] 'cp -p /bar/baz /bar/baz."$(date +'%Y%m%d')"' && scp -p myfile.ext [email protected]:/bar/baz
必要に応じて
mv
代わりに使用できますが、cp
これにより実際のターゲットファイルに対する非標準のアクセス許可とハードファイルのリンクが失われます。
このrsync
オプションはよりきれいですが、常にインストールされるわけではありません。