シェルスクリプトを使ってLinuxのディレクトリをバックアップする方法
Linuxにはデータをバックアップする手段がいくつか用意されています。fwbackupsやSbackupといった無料のソフトウェアを利用する方法もありますが、追加ソフトを一切インストールせずに、シンプルな方法でディレクトリをバックアップすることも可能です。
本記事では、変数とtarコマンド、dateコマンドを組み合わせたシェルスクリプトを作成し、サブディレクトリを含むディレクトリ全体を「日付入り」のバックアップファイルとして保存する手順を解説します。
シェルスクリプトとは、実行したいコマンドを順番に記述したテキストファイルのことです。日常的に決まった一連のコマンドを実行しているなら、それらをまとめたシェルスクリプトを作っておくと非常に便利です。あとはスクリプトファイルを実行するだけで、コマンドが自動的に順次処理されます。
シェルスクリプトファイルの作成
ここでは例として、ユーザーガイド関連のファイルが入ったディレクトリをバックアップするシェルスクリプトを作成します。環境はUbuntu(Gnomeデスクトップ)を想定しています。
まず、Places(場所)メニューからHome Folder(ホームフォルダ)を選択してホームディレクトリを開きます。File Browser(ファイルブラウザ)がホームディレクトリを表示します。

次に、バックアップ処理のコマンドを書き込むための空ファイルを新規作成します。右側のペインで右クリックし、ポップアップメニューからCreate Document | Empty File(ドキュメントの作成|空のファイル)を選択してください。

新しいファイルが一覧に追加され、名前変更できる状態になります。拡張子を.shとして任意の名前を入力しましょう。

この例では、ファイル名をuser_guide_backups.shとしています。

続いて、ファイルにコマンドを追記します。ファイル名を右クリックし、ポップアップメニューからOpen with gedit(geditで開く)を選択してください。

ファイルがgeditで開いたら、以下の行を入力してSave(保存)をクリックします。各行の役割は後ほど詳しく説明します。
注意: 下記のテキストをコピーしてgeditに貼り付けても構いません。その際は、<username>の部分を自分のユーザー名に置き換えてください。
#!/bin/bash SRCDIR="/home/<username>/Documents/my_work/" DESTDIR="/home/<username>/Backups/" FILENAME=ug-$(date +%Y%m%d)-$(date +%T).tgz tar --create --gzip --file=$DESTDIR$FILENAME $SRCDIR

スクリプトの各行の解説
シェルスクリプトファイルの各行が何をしているのか、以下の表で確認できます。
| 行番号 | 説明 |
|---|---|
| 1 | bashシェルスクリプト(デフォルトのスクリプト形式)では、この行を必ず先頭に記述する必要があります。「shebang(シバン)」と呼ばれ、スクリプトをbashで実行することをシステムに伝えます。 |
| 2 | SRCDIRという変数を定義し、バックアップ対象のディレクトリを値として設定します。 注意: <username>は必ずご自身のユーザー名に置き換えてください。 |
| 3 | DESTDIRという変数を定義し、バックアップファイルの保存先ディレクトリを値として設定します。 注意: <username>は必ずご自身のユーザー名に置き換えてください。 |
| 4 | FILENAMEという変数を定義し、文字列とdateコマンドを組み合わせて、現在の日付と時刻が付加されたファイル名を生成します。たとえばug-20100212-13:03:45.tgzのようなファイル名になります。 注意: 変数を使用するときは、必ずドル記号($)で始めてください。また、コマンドを変数の一部として使う場合は、コマンドとそのオプションを丸括弧で囲みます。 |
| 5 | tarコマンド本体です。以下の機能とオプションを指定しています。 |
| オプション | 説明 |
|---|---|
| --create | 新しいアーカイブを作成し(同名ファイルが既に存在する場合は上書き)、指定したファイルやディレクトリをその中に書き込みます。 |
| --gzip | アーカイブ内のファイルをgzipユーティリティで圧縮するようtarに指示します。 |
| --file | tarに使用するファイル名を指定します。ここではDESTDIR、FILENAME、SRCDIRの各変数を組み合わせてファイル名を構成しています。 |
シェルスクリプトファイルのパーミッション変更
スクリプトを実行する前に、ファイルに正しいパーミッション(実行権限)が設定されていることを確認する必要があります。上記の手順と同じようにHome Folder(ホームフォルダ)を開き、シェルスクリプトファイルを右クリックして、ポップアップメニューからProperties(プロパティ)を選択します。

Properties(プロパティ)ダイアログが表示されるので、Execute(実行)チェックボックスがオンになっていることを確認してください。

確認できたらClose(閉じる)をクリックします。
シェルスクリプトの実行
シェルスクリプトを実行するには、Applications(アプリケーション)メニューからAccessories | Terminal(アクセサリ|端末)を選択して、ターミナルウィンドウを開きます。

Terminal(端末)ウィンドウが開いたら、デフォルトではHome Folder(ホームフォルダ)にいるはずです。コマンドラインでpwdと入力してEnterキーを押せば、現在のディレクトリを確認できます。プロンプトに対して./user_guide_backups.shと入力し、Enterキーを押してください。

実行後、ホームフォルダ内のBackupsフォルダに.tgzファイルが作成されているはずです。ファイル名を右クリックすると、インストール済みのアーカイブツールで開くための選択肢が表示されるほか、Extract Here(ここで展開)コマンドを使ってファイルを直接Backupsフォルダに展開することもできます。

さらに詳しく知りたい方へ
以下のリソースでは、シェルスクリプトやtar・dateコマンド、その他のLinuxコマンドについてより深く学ぶことができます。
スクリプト入門
- bashシェルを使ったスクリプト作成のクイックガイド
- Bash Shell Scripting – 10 Seconds Guide | All about Linux
- Bash Reference Manual(Bash公式リファレンスマニュアル)
Linuxコマンド
- tar MANページ
- date MANページ
- bash commands – Linux MAN Pages
これらのドキュメントを読み込むことで、自分だけの実用的なbashシェルスクリプトを構築できるようになるでしょう。
-
LinuxターミナルでFFmpegを使って動画ファイルサイズを圧縮する方法
パソコンのストレージやクラウドサービスに動画を保存していると、容量不足に悩まされることがあります。ファイルサイズを小さくできれば、大きなファイルも増え続ける動画コレクションも簡単に管理できます。ただし、その方法によって圧縮効果は大きく異なります。 動画ファイルのサイズを最適化できるツールは数多く存在します。しかし、VLC、Cinelerra、Blenderといった有名ツールの多くは、UIの裏側で「FFmpeg」というコマンドラインユーティリティという共通のエンジンを利用しています。この記事では、LinuxターミナルからFFmpegを使って動画ファイルサイズを縮小する方法をご紹介します。 FF
-
Linuxでシェルスクリプトを作成する方法【初心者向け基本ガイド】
シェルスクリプトの作成は、Linuxユーザーが必ず身につけておきたい最重要スキルのひとつです。シェルスクリプトを活用すれば、手作業で一行ずつ実行すると面倒な反復タスクを効率的に自動化できます。このチュートリアルでは、すべてのLinuxユーザーが押さえておくべき基本的なシェルスクリプトの操作方法を、実例とともにわかりやすく解説します。1. 簡単なシェルスクリプトを作成するシェルスクリプトとは、ASCIIテキストで構成されたファイルのことです。まずはテキストエディタを使って、簡単なシェルスクリプトを作成してみましょう。テキストエディタにはコマンドライン型とGUI型のさまざまな種類がありますが、本ガ