scpで元のファイルをバックアップする

scpで元のファイルをバックアップする

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以下は元のコマンドに対するいくつかの選択肢です。

  1. 使用rsync

    rsync -ab myfile.ext [email protected]:/bar/baz
    

    この-bフラグは、rsyncターゲットファイルが変更された場合にバックアップを実行するように指示します。デフォルトは追加~ですが、このデフォルトを変更できます。たとえば、以下は今日の日付(ソースマシンで定義されているように)を使用します。

    rsync -ab --suffix ".$(date +'%Y%m%d')" myfile.ext [email protected]:/bar/baz
    
  2. 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オプションはよりきれいですが、常にインストールされるわけではありません。

おすすめ記事