前回、Pythonで特定のディレクトリをバックアップするプログラムを書きましたが、シェルスクリプトであればわずか3行で実装できます。

プログラムの概要

ソースコード

#! /bin/bash

#dateコマンドで年月日を抽出
date=`date "+%Y%m%d"`
#cpコマンドで引数に指定したファイルを年月日のファイル名としてコピー
cp -r $1 $2$date

このプログラムの解説

1行目はシバン行、二行目はdateコマンドで今日の日付を取得、三行目でひとつ目の引数のディレクトリもしくはファイルをふたつ目の引数の指定したパスに今日の日付で保管します。

ふたつ目の引数は存在しないパスを指定してしまうとエラーが出てしまうので、注意しましょう。

動作環境

  • bashを搭載したLinux系OSであれば何でも。

実際に動かしてみる

実際に動かしてみます。このシェルスクリプトのファイルが./save.shでコピーしたいディレクトリが./testdir。そして保存したい場所が~/savefilesであれば以下のコマンドを実行します。

./save.sh ./testdir/ ~/savefiles/

すると、以下のように何も表示されずに終わります。

正常にディレクトリのバックアップが行われた

~/savefilesの中身を見ると正常にバックアップされていることがわかります。

メリットとデメリット

メリット

あえて言うのであれば、Pythonがインストールされていないサーバーにも実装できます。

デメリット

例外処理の対応が行われていません。正しい引数を指定することを前提として組んでいます。

結論

Pythonであれば、datetimeモジュールをインポートする必要があるので、手間がかかります。一方でシェルスクリプトであればdateコマンドに引数を与えるだけで問題なくコピー可能です。

万能なPythonだからといって、何でもPythonで書こうとするのは考えものですね。

関連記事

この自動バックアップをPythonで書いた場合、こうなる。

【内部リンク】HUGOのサイトのディレクトリを自動でバックアップするPythonプログラムを作ってみた

問題のPythonプログラムです。コピーするだけなのでシェルスクリプトでも同じものは作れます。