Help us understand the problem. What is going on with this article?

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

はじめに

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コマンドのフォーマットを指定可能にする。

参考

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away