Linux上でファイルのバックアップしようと思って一番シンプルにするとなるとcpコマンドを使うことになるかと思います。
まぁ、単純に
$ cp foo bar
みたいなことをするんですが、GNUオプションをみているとバックアップする用途なら結構便利そうなオプションが幾つかあります。
コピーしたファイルに番号をつける
良くありがちなのが末尾に番号をつけていくというものです。
$ cp foo foo.1
みたいな。
ただ、番号(バージョン)をきちんと管理したいなら手動でやるとミスるので下記の--backupオプションが便利かもしれません。
$ cp --backup=numbered -f foo foo $ ls foo foo.~1~ $ cp --backup=numbered -f foo foo $ ls foo foo.~1~ foo.~2~
2回実行すると番号がインクリメントされていきます。
cpはコピー元とコピー先に同じファイル名を指定すると怒られるので-f(--force)オプションをつけてあげる必要があります。
--backupオプションはnumberedをつけなければ単純に末尾にチルダ(~)がついたファイルが作られます。
$ cp --backup -f foo foo $ ls foo foo~
コピーしたファイルに日付をつける
特にオプションをつけなくても
$ cp foo `date +foo_%Y%m%d` $ ls foo foo_20140513
のようなことをすれば日付がついたバックアップファイルをつけることができますが、--suffixオプションをつけることでも日付をつけたファイルを作ることができたりします。
$ cp --suffix=_`date +%Y%m%d` -f foo foo $ ls foo foo_20140513
この--suffixオプションは省略した場合、環境変数のSIMPLE_BACKUP_SUFFIXが使われ、デフォルトではチルダとなっています。
export SIMPLE_BACKUP_SUFFIX=_
などとして、サフィックスをアンダーバーに変更しておき、
$ cp --backup -f foo foo $ ls foo foo_
と実行すると、チルダではなくアンダーバーが付加されたバックアップファイルが作成されます。
常に日付をつけたければ
export SIMPLE_BACKUP_SUFFIX=`date +_%Y%m%d`
としておけば、--suffixオプションを指定せずに日付つきのバックアップファイルが作られます。
$ cp --backup -f foo foo $ ls foo foo_20140513
コピー先のバックアップファイル名の指定を省略する
通常、cpコマンドはコピー元とコピー先の2つを指定しなくてはいけません。
$ cp foo cp: missing destination file operand after `foo' 詳しくは `cp --help' を実行して下さい.
ただ、下記のようにするとコピー先のファイル名を省略することが可能です。
$ cp foo{,.bk} $ ls foo foo.bk
日付を入れたい場合は、{}内にdateコマンドを差し込むことで可能です。
$ cp foo{,`date +_%Y%m%d`} $ ls foo foo_20140513
まぁ、コピー先のファイル名を指定したほうが早いという場合がありますが、ファイル名が長い場合やシェルスクリプトにcpコマンドを組み込みたいといった場合は便利かもしれません。
[PR]SSLサーバ証明書なら[ドメインキーパー]◆VeriSign/GlobalSign/他取り扱い
[PR]固定IPが【業界最安値クラス】+【5分で発行】+【2ヶ月無料体験】