Bashシェルスクリプトでファイルやディレクトリを”.yyyymmdd”付きでバックアップする

2021-02-15Bash

はじめに

Unix上のファイルやディレクトリを変更する前に、バックアップするために日付つきファイル名としてコピーしておくことがありますね。

「今日は何年何月何日だったっけ?」と悩む必要がないように、現在日時を .YYYYMMDD で取得し、コピー先ファイル名のサフィックスとして付与するコマンドを紹介します。

".YYYYMMDD" サフィックス付きでバックアップファイルを作成するコマンド

以下のように、 {,.$(date +%Y%m%d)} という記述を使用します。

# file_to_backupというファイルが存在
$ ls
file_to_backup

# -a オプション付きでコピー
$ cp -a file_to_backup{,.$(date +%Y%m%d)}

# 年月日付きでファイルがバックアップされている
$ ls
file_to_backup  file_to_backup.20130420

簡単な解説

実行されたコマンドは以下のように解釈されます。

$ cp -a file_to_backup file_to_backup.$(date +%Y%m%d)

cp コマンドの -a オプションは、所有者、パーミッションをそのまま保持するためのオプションです。また、 -R オプションと同様、ディレクトリの場合には階層構造を保持したまま再帰的にコピーします。

2021-02-15Bash