|||||||||||||||||||||

なんぶ電子

- 更新: 

Linux(Debian)でデータをUSBドライブにバックアップ

Debian

最近USBドライブの利用が減りLinux(Debian)でマウントする際の書式も忘れがちになってしまいました。

ランサムウェアの脅威に対しローカルバックアップの意味が見直されているので、ここで再度利用方法を書き残しておきます。

USBドライブの認識

USBドライブがLinux(Debian)に認識されるとdmesgに出力されるので、まずはそれを確認します。

USBを差し込んだ後に、管理者権限でdmesgと入力した後に出力されるメッセージから対象の機器のデバイス名(sda,sdb等)を見つけます。


# dmesg
...
[54472.609165] usb 2-1.1: new high-speed USB device number 3 using ehci-pci
[54472.763282] usb 2-1.1: New USB device found, idVendor=04bb, idProduct=016c
[54472.763285] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[54472.763288] usb 2-1.1: Product: I-O DATA HDCZ-UT
[54472.763290] usb 2-1.1: Manufacturer: I-O DATA DEVICE, INC.
[54472.763292] usb 2-1.1: SerialNumber: 
[54473.144602] usb-storage 2-1.1:1.0: USB Mass Storage device detected
[54473.144708] scsi host6: usb-storage 2-1.1:1.0
[54473.144815] usbcore: registered new interface driver usb-storage
[54473.162171] usbcore: registered new interface driver uas
[54474.161963] scsi 6:0:0:0: Direct-Access     I-O DATA HDCZ-UT          0007 PQ: 0 ANSI: 6
[54474.162906] sd 6:0:0:0: Attached scsi generic sg2 type 0
[54474.168022] sd 6:0:0:0: [sdb] Spinning up disk...
[54480.304603] .
[54480.304888] ready
[54480.461018] sd 6:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
[54480.462136] sd 6:0:0:0: [sdb] Write Protect is off
[54480.462140] sd 6:0:0:0: [sdb] Mode Sense: 43 00 00 00
[54480.463131] sd 6:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[54480.534146]  sdb: sdb1 sdb2
[54480.537886] sd 6:0:0:0: [sdb] Attached SCSI disk
[55209.699255] ntfs: driver 2.1.32 [Flags: R/O MODULE].
[55209.766388] ntfs: volume version 3.1.

単に認識しているかどうかを確認したい場合はlsusbコマンドでも可能です。


# lsusb

Bus 002 Device 003: ID 04bb:016c I-O Data Device, Inc.
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

fdisk

マウントする前にパーテーションの状態を確認します。先の出力では「sdb: sdb1 sdb2」となっていました。USBドライブなのでひとつの巨大なパーテーションのつもりでしたが、1と2どちらをマウントすべきなのかわかりません。

それを確認するために、ここではfdiskを使いました。

fdiskはディスクのパーテーションを設定するツールです。誤った操作をすると最悪ディスクの中身が読み込めなくなったりしますので注意してください。

使い方はまず、デバイス名を指定してコマンドを実行します。

するとコンソールがfdiskの対話画面に切り替わり、コマンドを入力して該当のデバイスのパーテーション操作をします。


# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help):

表示されている通り、「m」と一文字入力すると、利用可能なコマンドが表示されます。

パーテーションの確認で使う場合は、pを入力します。あと使うのはパーテーション種類を表示してくれる「l」と終了の「q」ぐらいでしょうか。

Command (m for help): p
Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 171F29A5-A16A-41B3-97AC-36F31A9E631C

Device      Start        End    Sectors  Size Type
/dev/sdb1      34     262177     262144  128M Microsoft reserved
/dev/sdb2  264192 3907028063 3906763872  1.8T Microsoft basic data

sdb1は「Micorosft reserved」パーテーションがsdb1にあることがわかりました。

この領域は機器の都合で存在するのだと思いますが、とにかくsdb2を使えばよさそうだということがわかりました。

マウント

パーテーションをマウントします。

/mnt/usb等、マウントポジションとなるディレクトリを作成しそこにマウントします。

アンマウントするにはumountを使います。


# mount /dev/sdb2 /mnt/usb
...
# umount /mnt/usb

ディレクトリのサイズを確認

バックアップを取る際にディレクトリのサイズを確認したいことがあると思います。その際はduコマンドを使います。

「du ディレクトリ」で、指定したディレクトリサイズを子孫ディレクトリを含めて出力します。

もし、子孫ディレクトリまで調べる必要がないならdオプションで深さを指定できます。またhオプションを使うとMやGといったヒューマンフレンドリーな表示になります。


# du /home/user -d 1 -h

26G     /home/user/scripts
15G     /home/user/share
20K     /home/user/.ssh
7.8G    /home/user/compressdir
24K     /home/user/.java
30G     /home/user/bkup
...
184G    /home/user

rsync

rsyncはリモートやローカルのファイルを高速にコピーするためのツールです。

オプションは多数あり、詳細はman rsyncでも表示されますので確認してください。筆者がよく使っているパターンは次の通りです。

rsync -av --delete --force [コピー元] [コピー先] >>log 2>&1

それぞれの意味を簡単に書いておきます。

  • a(Arcive)

    aはアーカイブモードを意味しこれは「-rlptgoD」の略です。圧縮という意味ではありません。

  • r(Recursive)

    子孫フォルダをたどります

  • l(Link)

    リンクもコピーします

  • p(Permissions)

    パーミッションを保持します

  • t(Times)

    最終更新日を保持します

  • g(Group)

    グループを保持します

  • o(Owner)

    オーナーを保持します。このオプションは管理者権限が必要です。

  • D

    デバイスファイルをコピーする--devices(管理者権限が必要です)と特殊ファイルをコピーする--spcecialsの組み合わせです

  • v(Verbose)

    明細ログ出力をします。ここではリダイレクト(&&)でファイルに保存しています。

    リダイレクトの部分の「2>&1」の部分はエラー出力を、標準出力にする設定です。要するに通常ログもエラーログもまとめてファイルに出力しています。

  • --delete

    バックアップ先に余分なファイルが存在したら削除します

  • --force

    空ではないディレクトリも削除します

bashスクリプト

常時運用のためにbashスクリプトを作成してみました。

#!/bin/bash

# バックアップ作成

# USBディスクのパーテーション
DIV_STR=/dev/sdb2

# マウントポジション
MOUNT_DIR=/mnt/usb

# バックアップルートフォルダ名
TARGET_DIR=backup

# マウント

# マウント状況確認 最後に/が必要
mountpoint ${MOUNT_DIR}/ >$0.log 2>&1

if [ $? -gt 0 ]; then
  # マウントしていない場合はマウント
  mount ${DIV_STR} ${MOUNT_DIR} >>$0.log 2>&1
  if [ $? -gt 0 ]; then
      # マウントエラー
      exit
  fi
fi

if [ ! -d ${MOUNT_DIR}/${TARGET_DIR} ]; then
  # ディレクトリがなければ作成
  mkdir ${MOUNT_DIR}/${TARGET_DIR}
  if [ $? -gt 0 ]; then
      # 作成エラー
      exit
  fi
fi

rsync -av --delete --force /home/user/sourcedir/ ${MOUNT_DIR}/${TARGET_DIR}/targetdir/ >>$0.log 2>&1

# マウント解除
umount ${DIV_STR} >>$0.log 2>&1

エラー

先のスクリプトを実行したところ、dmsegでは書き込みできるようなメッセージが出ていたの思うのですが、次のようなエラーが出ました。

ディレクトリ `/mnt/usb/...' を作成できません: 読み込み専用ファイルシステムです

Why does my NTFS partition mount as read only?によればntfsを書き込みできるライブラリが存在していないのではないか?とのことでした。

確認してみたらいう通り存在しないようだったので、参考ページにあったntfs-3gをaptでインストールします。

今度はワーニングがでました。ファームウェアがないそうです。

W: Possible missing firmware /lib/firmware/tigon/tg3_tso5.bin for module tg3
W: Possible missing firmware /lib/firmware/tigon/tg3_tso.bin for module tg3
W: Possible missing firmware /lib/firmware/tigon/tg3.bin for module tg3

/etc/apt/sources.listにcontribとnon-freeを追記します。これらがどのような設定かというのは「Debian9(strech)から10(buster)へアップグレード」の記事で紹介していますので、気になったらそちらも参考にしてみてください。

deb htttp://deb.debian.org/debian bluster main contrib non-free

再びapt updateを実行します。該当のファームウェアはfirmware-misc-nonfreeに含まれるようなので、installします。

これでスクリプトが実行できるようになりました。

筆者紹介


自分の写真
がーふぁ、とか、ふぃんてっく、とか世の中すっかりハイテクになってしまいました。プログラムのコーディングに触れることもある筆者ですが、自分の作業は硯と筆で文字をかいているみたいな古臭いものだと思っています。 今やこんな風にブログを書くことすらAIにとって代わられそうなほど技術は進んでいます。 生活やビジネスでPCを活用しようとするとき、そんな第一線の技術と比べてしまうとやる気が失せてしまいがちですが、おいしいお惣菜をネットで注文できる時代でも、手作りの味はすたれていません。 提示されたもの(アプリ)に自分を合わせるのでなく、自分の活動にあったアプリを作る。それがPC活用の基本なんじゃなかと思います。 そんな意見に同調していただける方向けにLinuxのDebianOSをはじめとした基本無料のアプリの使い方を紹介できたらなと考えています。

広告