1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linux ファイル名に日付を含んでバックアップ

Posted at

はじめに

Qiitaに記事を書いてみよう!ということで。
Linuxサーバーで、「ファイル名.日時」の形式でバックアップすることが多かったため、
その記事をチョイスしました。

実行した環境

CentOS Linux release 7.7.1908 (Core)

コマンド

「ファイル名.年月日時分秒」でバックアップする例です。
日時の形式はdateコマンドのフォーマットで調整できます。

###ファイルの場合

$ cp -p <ファイル名> <ファイル名>.`date  +%Y%m%d%H%M%S`

###ディレクトリの場合(ファイルもOK)

$ cp -rp <ディレクトリ名> <ディレクトリ名>.`date  +%Y%m%d%H%M%S`

面倒な点

このコマンドだと、ファイル名やディレクトリ名を2回打たなければなりません。
コピー先のファイル名を間違えて、「別ファイルのバックアップ」が紛れ込んで痛い目にあったこともあります。
自作のコマンドが置けるのであれば、そのほうが安全です。
(置けない場合は上記コマンドをいつもコピペしていました。。。)

自作コマンド化

私の場合、以下のコマンドを「bkcp」という名で /home/<ユーザ名>/bin/ に保存しています。
実際のコピーコマンドもわかるよう、表示するようにしています。

bkcp

#!/bin/bash

if [ $# -ne 1 ]; then
  echo "Usage: bkcp filename" 1>&2
  exit 1
fi

CMD="cp -rp $1 $1.`date  +%Y%m%d%H%M%S`"
echo $CMD
`$CMD`
exit 0

bkcp実行例

$ bkcp testfile
cp -rp testfile testfile.20190924114404

コマンドの拡張例

私の好みは、年月日時分秒を付ける形でファイル名の衝突を考慮しない形ですが、
サーバの運用方法や、チームのルールによって、過去に派生コマンドを作っていました。

  • 年月日でバックアップ。年月日がかぶる場合は枝番を付ける。
  • 上記のルールに加え、オプションで枝番上書き可能とする。
  • dateコマンドのフォーマットを指定可能にする。

参考

今回の記事を書くにあたって、改めて参考とさせていただきました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?