ログってなんぼ

日々のメモです

cpコマンド:バックアップを取りながらコピー

同僚だけど良記事なので紹介

cp するときに上書きされるファイルがあったらバックアップを取る。 « Aim At An Agile Programmer. はてなブックマーク - cp コマンドの -b オプションを使うと上書きするファイルがあったとき自動でバックアップを取ってくれる。

cp コマンドの -b オプションを使うと上書きするファイルがあったとき自動でバックアップを取ってくれる。 引用元:cp するときに上書きされるファイルがあったらバックアップを取る。 « Aim At An Agile Programmer.


環境変数で実現するには

システム全体に適用させたい場合などは環境変数のほうを使うといい。

とりあえずコマンドラインから動作確認しておく

// まず simple を指定 $ export VERSION_CONTROL=simple

// simple の時のサフィックスをココに指定 $ export SIMPLE_BACKUP_SUFFIX=.date +%Y%m%d%H%M%S

// 試す $ cp -b aaa ccc cp: ccc' を上書きしてもよろしいですか(yes/no)? y aaa' -> ccc' (バックアップ: ccc.20140325170418') $ ll 合計 0 -rw-r--r-- 1 okisanjp 0 3月 25 16:51 2014 aaa -rw-r--r-- 1 okisanjp 0 3月 25 17:04 2014 ccc -rw-r--r-- 1 okisanjp 0 3月 25 17:03 2014 ccc.20140325170418

単に連番付けたければ

// VERSION_CONTROL の初期値は existing

$ export VERSION_CONTROL=numbered

// ファイル作って上書きコピー $ touch aaa bbb $ cp -b aaa bbb cp: bbb' を上書きしてもよろしいですか(yes/no)? y aaa' -> bbb' (バックアップ: bbb.~1~') $ ll 合計 0 -rw-r--r-- 1 okisanjp 0 3月 25 16:51 2014 aaa -rw-r--r-- 1 okisanjp 0 3月 25 16:51 2014 bbb -rw-r--r-- 1 okisanjp 0 3月 25 16:51 2014 bbb.~1~

// もう一回上書きコピー $ cp -b aaa bbb cp: bbb' を上書きしてもよろしいですか(yes/no)? y aaa' -> bbb' (バックアップ: bbb.~2~') $ ll 合計 0 -rw-r--r-- 1 okisanjp 0 3月 25 16:51 2014 aaa -rw-r--r-- 1 okisanjp 0 3月 25 16:51 2014 bbb -rw-r--r-- 1 okisanjp 0 3月 25 16:51 2014 bbb.~1~ -rw-r--r-- 1 okisanjp 0 3月 25 16:51 2014 bbb.~2~

以上。CentOS6にて。