ラベル Command の投稿を表示しています。 すべての投稿を表示
ラベル Command の投稿を表示しています。 すべての投稿を表示

2014/12/21

GNUのddrescueを使う

イメージをコピーしたりする時にddコマンドを使います。
しかし、ddコマンドにはちょっと使いにくいところがあります。

そこで、ddrescueを使ってやっていきます。

ddrescueはapt-getで入ります。

 sudo apt-get install gddrescue

コマンド名とパッケージ名が微妙に違うので注意が必要です。
GNUのddrescueだからgddrescueです。

#本当はddrescueにも2種類あって、GNUのddrescueとGNUじゃないddrescueがあります。
#Ubuntu12.04くらいまでは両方のddrescueがapt-getで入れれたのですが。
#Ubuntu14.04ではGNUのddrescueしかapt-getに登録されていないですね。

 sudo ddrescue -v -A -r3 [INFILE] [OUTFILE] [LOGFILE]

オプションについては以下の通りです。
  -v  :  経過を画面出力
  -A  :  エラーの部分には0を入れる
  -r   :  指定した回数分リトライする

加えてですが、OUTFILEにデバイス名が入っている時には" --force "オプションを追加しないと行けないみたいです。
こんなエラーが出ます。

ddrescue: Output file exists and is not a regular file.
ddrescue: Use '--force' if you really want to overwrite it, but be
          aware that all existing data in the output file will be lost.
Try 'ddrescue --help' for more information.


結構ミスすると泣ける操作なので、--forceオプションは初めは付けないで、
エラーになったら再度確認後オプションをつけたほうがいいかなと思います。

参考にしたサイト
SUSE Linux での dd_rescue : 非番のエンジニア
http://islandcnt.exblog.jp/16789134/

Inner Journeys: GNU ddrescueを使って、壊れたHDDからデーターを救出。
http://babooshka-innerjourneys.blogspot.jp/2012/11/gnu-ddrescuehdd.html

2013/06/13

ddコマンドを使ってバックアップ

「HDD全体のバックアップがとりたい」
ので,ddコマンドを使って全体のバックアップを取ります.

しかし,このバックアップはddコマンドだけで単純にバックアップすると
バックアップファイルの大きさが元の容量と同じとなってしまいます.
(つまり100GBのHDDのバックアップファイルは100GB)

それはさすがに大きすぎるので,バックアップファイルを直接gzipで圧縮して容量を小さくします.
復元するときには圧縮したままのイメージをddにかけて復元することができます.

バックアップを取るときは
sudo dd if=/dev/sda | gzip -c > hdd_img.gz

復元するときは
sudo gzip -dc < hdd_img.gz | dd of=/dev/sda

です.

参考になったサイト
dd+lzopでディスクを丸ごとバックアップしてみた。 | データセンターの専用サーバ データセンターダイレクト ブログ
http://blog.dc-d.jp/?p=600
ブータブルLinuxCDを用いたWindowsパーティションのバックアップ手順 | エコなびの2007年10月31日の1番目の記事 - 楽天ブログ(Blog)
http://plaza.rakuten.co.jp/econavi/diary/200710310000/
できればアプリ開発工房 CentOS (Linux) ddコマンドでのディスクフルバックアップ・リストア
http://bincube.blog.fc2.com/blog-entry-12.html


ddコマンドを使ってUbuntuのMBRをバックアップ&復元

デュアルブート環境などをつくるときにやってしまいがちなのは,
MBR関係の問題です.

そんなときのために,あらかじめMBRをバックアップしておくことをお勧めします.
sudo dd if=/dev/sda of=mbr_bak.img bs=512 count=1

ディスクの先頭から512Byteをバックアップします.

そして,万が一のことがあって,復元したいときは,
sudo dd if=mbr_bak.img of=/dev/sda  bs=512 count=1

で元に戻せます.

参考にしたサイト
MBRのバックアップ - adsaria mood
http://d.hatena.ne.jp/adsaria/20080812/1218506371
@IT:MBR(マスターブートレコード)をバックアップするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/375bkupmbr.html
UbuntuTips/Install/BackupMBR - Ubuntu Japanese Wiki
https://wiki.ubuntulinux.jp/UbuntuTips/Install/BackupMBR
PF-X.NET: MBRのバックアップ/リストア ddコマンド
http://www.pf-x.net/archives/2005/05/mbr_dd.html


2013/06/08

UbuntuでSambaの共有フォルダを自動マウント

PCですぐSambaのサーバーにアクセスしたいので自動マウントさせます.
sudo mkdir /mnt/samba
echo "//(SambaサーバーのIPアドレス)/(サーバー側のマウントしたいフォルダ) /mnt/samba smbfs username=(サーバー側のユーザー名),password=(パスワード),defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a

パスワードを平文で入力しないといけないのが嫌でしたが,
もっと調べれば平文で打たなくてもいい方法があるのかもしれません.

最後のコマンドで何もエラーが出なければ成功です.

ちょっと確認しておきます.
df -m

これで自分がマウントしたサーバーのIPやファイルが出てればおkでしょう.

参考になったサイト
SmbFsでネットワークプレースのマウントと共有
http://lets-ubuntu.yui.at/smbfs.html
Ubuntu: sambaをマウントするコマンド | Apptechs Blog
http://blog.apptechs.jp/?p=60
Electronic Genome - Ubuntu 8.04のsmbfsでWindows共有フォルダをマウントする
http://itmst.blog71.fc2.com/blog-entry-99.html
mountコマンドでCIFSをファイル共有 - profaim.jp
http://www.profaim.jp/tools/soft/linux/mnt_cifs.php


エディタを使わずにCUIでファイルに管理者権限で書き込む

このブログなどで「あるファイルに追記する」というような操作をすることが多いのですが,
実際にはviで作業などをおこなっても,このようなブログに記すときは次のように
echo "sample" >> /etc/sample

のように書いたほうが,書きやすいし,そのままコピペすればいいようになるので良いと思っています.
(わざわざエディタでやりたい人はこれくらいは読み替えられると思うので...)

しかし,この方法で管理者権限が必要なファイルに追記しようとするとこのままではいきません.
つまり,
sudo echo "sample" >> /etc/sample

とはいかないわけです.
(このままだとリダイレクトまで管理者権限でおこなってくれないわけですね)

よって,管理者権限が必要なファイルでも書き換えられるようにするにはどうすればいいかを探しました.

コマンドなんで,何種類かあるわけですね.

まずは,
sudo sh -c "echo 'sample' >> /etc/sample"

直接シェルを使うんですね.

あと,
echo 'sample' | sudo tee -a /etc/sample

teeはaオプションで追記になるんですね

加えて,
echo "sample" | sudo tee sample.txt > /dev/null

aのオプションを使わないとこんな感じになるそうです.

なんこかありましたが,
どれを使っていこうか悩みますね.

1個目だと
普通にやって
「あ,管理者権限じゃないとダメだ」
と思ったあとに全部管理者権限でしようと思った時にイメージしやすいし,

2個目は1個目よりもコマンドが簡単でみんな分かりやすそう.

一応2個目を使っていきますかね.

参考になったサイト
sudoでリダイレクトをしたいとき - Yuta.Kikuchiの日記
http://d.hatena.ne.jp/yutakikuchi/20111013/1318436872
sudoコマンドに関する追加メモ - 試験運用中なLinux備忘録
http://d.hatena.ne.jp/kakurasan/20100512/p1




2013/05/11

"dd"コマンドでHDDをまるごと換装

ある使っているUbuntuのHDDに空きがなくなってしまった。
追加してもいいのだが、
HDDを1つにしたかったので
HDDをまるごと他のHDDにコピーしたい。

コピーしたあとにGPartedとかでリサイズをすればいいので、
まずは完全にコピーだけする。

それもGPartedでできるのかもしれないが、
いまいちどうすればいいのかわからなかったので、
"dd"コマンドでやることにした。

まず、
コピー元のHDD、
コピー先のHDD、
を準備する。

それらのHDD以外で起動できるPCを用意する(作業をするPC)

そのPCに2つのHDDをつないで、
次のコマンドを実行
sudo fdisk -l
これで、コピー元のHDD、コピー先のHDDが/dev/sd○と割り振られていることを確認する
(○の部分の文字を確認)
HDDの容量が違うとわかりやすいです。

ここでは、
コピー元のHDDを /dev/sdb
コピー先のHDDを /dev/sdc
に割り振られているとして話を進めます。

そしてついに"dd"コマンド
sudo dd if=/dev/sdb of=/dev/sdc
これで、/dev/sdbを/dev/sdcへコピーすることになります。
ifとofを反対にすると大切なデータがなくなってしまうのでしっかり確認を!!
(ifのiはin、ofのoはoutと覚えます。)

そして、"dd"コマンドは時間がかかるのに、何も標準出力してくれなく、途中経過がわかりません。

よって、別の端末でこれをやります。
pidof dd | xargs kill -USR1
これで、一応その時の途中経過がわかります。

あとは時間がかかるので、待つだけです。

参考にしたサイト

Ubuntu日本語フォーラム / HDDをそっくり交換する方法を教えてください。
https://forums.ubuntulinux.jp/viewtopic.php?id=3240

UNIXの部屋 コマンド検索:dd (*BSD/Linux)
http://x68000.q-e-d.net/~68user/unix/pickup?dd

ddの途中経過を表示する - bokko bokkoにしてやんよ
http://cubicdaiya.github.io/blog/ja/blog/2012/07/18/ddfalsetu-zhong-jing-guo-wobiao-shi-suru/

dd実行 途中経過 | Linux系OSのQ&A【OKWave】
http://okwave.jp/qa/q3182540.html

2013/05/10

UbuntuでFreeBSD UFSをマウントする方法

ある事情であるHDDの中身を見たいということを頼まれました。
Windowsではマウント出来なかったのでLinuxの方のパーティションなのかなと思い、
Ubuntuで見てみました。

自動マウントが効いてくれるといいなと思っていると、
次のようなエラーが出て自動マウントできませんでした。
Error mounting: mount: wrong fs type, bad option, bad superblock on /dev/sdb1,        missing codepage or helper program, or other error      
In some cases useful info is found in syslog - try      
dmesg | tail  or so
仕方ないので、ディスクユーティリティーを開いてみたところパーティションタイプが
「FreeBSD UFS」
になっていました。

よって、コマンドでUFSとやらをマウントすることに
sudo mkdir /mnt/hdd1_tmp
sudo mount -t ufs /dev/sdb1 /mnt/hdd1_tmp
すると次のようなエラーが

mount: 間違ったファイルシステムタイプ、不正なオプション、
       /dev/sdb1 のスーパーブロックが不正、コードページまたは
       ヘルパープログラムの未指定、或いは他のエラー
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
言われたとおりに次のようにすると
dmesg | tail
ufs was compiled with read-only support, can't be mounted as read-write
You didn't specify the type of your ufs filesystem

mount -t ufs -o ufstype=sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep ...
>>>WARNING<<< Wrong ufstype may corrupt your filesystem, default is ufstype=old
 ufs_read_super: bad magic number
どうやらreadonlyでしないといけなくて、
UFSにはタイプがいろいろあり、指定しないと"old"になってしまうそうです。

タイプがいっぱいあってどれがいいのかを悩んでいたところ、
ネットを見てみるとタイプを"44bsd"か"ufs2"にしているところが多かったので、
まずは"ufs2"に
sudo mount -t ufs -r -o ufstype=ufs2 /dev/sdb1 /mnt/hdd1_tmp

おお。できました。

中身も見ることができてよかった。
いつも自動マウントにたよっているから"mount"コマンドあまり使っていなかったので
いい勉強になりました。

参考にしたサイト

LinuxでFreeBSDのパーティションをマウントする « つれづれメモ
http://wpblog.onodalaw.com/?p=60

LinuxでのUFSマウント方法 » 恵比寿InformationTechnology
http://www.ebisu-it.com/linux-tips-centos/lt-manage/lt-manage-ufs/


Linux: Mount FreeBSD UFS 2 File System Command
http://www.cyberciti.biz/faq/howto-linux-mount-freebsd-ufs2-filesystem/



2012/08/31

find コマンド ファイル検索

よく使っている定番の"find"コマンドですが、ちょっと調べてみると、オプションを利用することによってもっと使いやすくなることがわかりました。

特に覚えておきたいオプション

●-iname
大文字、小文字の区別をなくす
●-type
検索する対象の種類を指定
使いそうなのは
f   ファイル
d  ディレクトリ
l   リンク
●-print
検索にヒットしたものを表示
●-ls
検索にヒットしたものを詳しく表示
●-exec
ヒットしたものにコマンドを実行
コマンドを実行する対象の場所に"{}"をつける。
コマンドの最後に"\;"をつける。
●-ok
"-exec"オプションの確認を求めてくるver

検索の追加、否定

●-or
つないだ条件を"or"でつなぐ
●!
つないだ条件を"not"でつなぐ

少しずつ覚えていこう


ちなみにこれをググっている時に"locate"コマンドという"find"よりもっと高速に検索できるコマンドを見つけましたが、"find"コマンドが我慢できないほど遅いわけではないので、"find"コマンドを使っていくことにします。

我慢できなくなったら"locate"コマンドにしよう。

参考にしたサイト

めっちゃ便利やねん find コマンドのオプションまとめ | バシャログ。
http://c-brains.jp/blog/wsg/10/04/09-095214.php

UNIXの部屋 コマンド検索:find (*BSD/Linux)
http://x68000.q-e-d.net/~68user/unix/pickup?find

find の代わりに locate を使おう - Everyday Programmer
http://d.hatena.ne.jp/supermassiveblackhole/20100707/1278482221




nkf コマンド 文字コードの変換

先ほどVimでの文字コードを変換して再読み込みをしました。

○○○○に怖いものなんてない!!: Vimで文字コードを変換して再読み込み
http://kowaimononantenai.blogspot.jp/2012/08/vim.html
すると、次は「このファイルの文字コードをUTF-8にしたい」と思いました。

ググると、"nkf"コマンドというものがあるらしいです。
デフォルトでは入っていないのでapt-getで入れてから使います。

sudo apt-get install nkf

nkf -w old.txt 

オプションの"w"がUTF-8に変換するオプションです。
一応元の文字コードを指定する必要性があるわけではないそうですが、オプションで「どの文字コードから変換するのか」というのもつけるほうがいいという記事もありましたが、これはつけていません。
まず、上のコマンドを実行すると文字コードがUTF-8に変わった内容が標準出力にでてくるので、きちんと変換されているか確認します。

nkf -w old.txt > new.txt

その後このコマンドで標準出力をファイルに書き込めはおkです。

ついでに、"g"オプションを使うとそのファイルの文字コードがわかってVimで再読み込みするときに便利です。

nkf -g old.txt

2012/08/21

コマンドでファイルの拡張子一括変更

ファイルの拡張子を一括で変更したいときにに
mv *.txt *.log

なんてことはできないのでファイル名(今回は拡張子)の一括変更できるようにしたいなと思いました。

ググると
for nm in *.txt; do
> mv $nm ${nm%.txt}.doc;
> done

おー すごい!

コマンドを覚えるのは頑張りますが、こんなふうにプログラムみたいにやったことはあまりありません。(はじめにこれ見た時「Pythonみたいだな」と思いました。こっちの方が昔からあるんでしょうけど)

こういうコマンドにもチャレンジしていきたいけど、いいサイトとか本とかあればいいな
(正規表現やワイルドカードや後方参照などを勉強中なので)

ここを参考にしました。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231055/