Linux で cp コマンドでコピーをしたり mv コマンドで移動するときに、 コピー先や移動先に同名のファイルがあると 通常は上書きしてしまいます。
この 2 つのコマンドには 同名のファイルがあったときに そのファイルを退避させるオプションがあります。
次のように a/ と b/ のどちらにも c.txt があるとします。
$ ls a/ c.txt $ ls b/ c.txt
通常の cp コマンドだと上書きするだけです。
$ cp a/c.txt b/ $ ls b/ c.txt ←上書きされたファイル
-b オプションを付けます。
$ cp -b a/c.txt b/ $ ls b/ c.txt c.txt~
このように c.txt~ ができます。
ちょっとわかりにくいですが c.txt が上書きされたファイルで
元々あった c.txt が c.txt~ になっています。
ちなみに Linux では ファイル名の最後に ~ が付いている場合 退避したファイルや一時ファイルである場合が多いです。
保存されるのは 1 世代だけなので もう一度コピーをすると 今の c.txt が c.txt~ になります。
バッチ処理なんかで 1 世代だけ残しておけば良いときなど 他の方法でやるよりもずっと手軽です。