cp コマンドには、gnu 標準のバックアップ・オプションが設定されているとわかった。
-b をつけるとバックアップモード
バックアップモードをつけると、拡張子の後ろに「 ~ (tilde)」 がついたバックアップが取られる。
takuya@rena:~/Desktop$ cp -rT -b test test2 takuya@rena:~/Desktop$ tree test2 test test2 ├── a.txt └── a.txt~ test └── a.txt
バックアップの~ チルダは環境変数 SIMPLE_BACKUP_SUFFIX で指定可能です。
.back の拡張子でバックアップとりつつcp
チルダだとEmacs っぽいし、区別がつかなさそうなので、拡張子をかえてみた。
takuya@rena:~/Desktop$ export SIMPLE_BACKUP_SUFFIX=".back" takuya@rena:~/Desktop$ cp -rT -b test test2 takuya@rena:~/Desktop$ tree test2 test test2 ├── a.txt └── a.txt.back test └── a.txt 0 directories, 3 files
なるほど、これはこれで便利そう。
バックアップを数字でN世代前まで。
4回コピーしたった。
takuya@rena:~/Desktop$ cp -rT test test2 # テストディレクトリ作成 takuya@rena:~/Desktop$ cp -rT --backup=numbered test test2 takuya@rena:~/Desktop$ cp -rT --backup=numbered test test2 takuya@rena:~/Desktop$ cp -rT --backup=numbered test test2 takuya@rena:~/Desktop$ cp -rT --backup=numbered test test2
4回実行してみた。
コピー元
takuya@rena:~/Desktop$ tree test test └── a.txt 0 directories, 1 file
コピー先
takuya@rena:~/Desktop$ tree test2 test2 ├── a.txt # 最新のコピー(1回前) ├── a.txt.~1~ # 2回前 ├── a.txt.~2~ # 3回前 └── a.txt.~3~ # 4回前 (初回コピー時) 0 directories, 4 files
個人的には
a.`date -I`.back.txt #=> a.2014-09-25.back.txt a.n.txt #=> a.1.txt a.2.txt
のような、拡張子を変えない、ファイル名が好きなのだけれど。。。
ちなみに cp -rT を使うとディレクトリをマルっとコピー
takuya@rena:~/Desktop$ cp -rT test test2
これはディレクトリをディレクトリ作成してコピーしてる。覚えておくと便利。