カテゴリー: Linux

duplicityをCentOS6.3にインストールするメモ

【duplicityインストール】
duplicityは個人データのバックアップとして使えるツールです。

■特徴は3つ
・バックアップ中の履歴を古い状態から新しい状態への増分で記録し、複数のフルバックアップも取れる
・GnuPGを使って暗号化する機能がある
・SSH以外のネットワーク機能にも対応している(FTPやWebDAV,S3など)

今回はFTPでの接続が必要だったのでduplicityを選びました。

■今回のサーバのバージョン

# cat /etc/redhat-release
CentOS release 6.3 (Final)

以下からインストールの説明

■最新のバージョンをダウンロードしてくる(2012/12/21の時点では0.6.20)

# pwd
/root/tmp
# mkdir tmp
# cd tmp/
# wget http://code.launchpad.net/duplicity/0.6-series/0.6.20/+download/duplicity-0.6.20.tar.gz
--2012-12-21 19:56:24--  http://code.launchpad.net/duplicity/0.6-series/0.6.20/+download/duplicity-0.6.20.tar.gz
code.launchpad.net をDNSに問いあわせています... 91.189.89.224, 91.189.89.225
code.launchpad.net|91.189.89.224|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://code.launchpad.net/duplicity/0.6-series/0.6.20/+download/duplicity-0.6.20.tar.gz [続く]
--2012-12-21 19:56:24--  https://code.launchpad.net/duplicity/0.6-series/0.6.20/+download/duplicity-0.6.20.tar.gz
code.launchpad.net|91.189.89.224|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Moved Temporarily
場所: https://launchpadlibrarian.net/121487466/duplicity-0.6.20.tar.gz [続く]
--2012-12-21 19:56:26--  https://launchpadlibrarian.net/121487466/duplicity-0.6.20.tar.gz
launchpadlibrarian.net をDNSに問いあわせています... 91.189.89.228, 91.189.89.229
launchpadlibrarian.net|91.189.89.228|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1142460 (1.1M) [application/x-tar]
`duplicity-0.6.20.tar.gz' に保存中

100%[===================================================================================================================>] 1,142,460    149K/s 時間 8.6s

2012-12-21 19:56:36 (130 KB/s) - `duplicity-0.6.20.tar.gz' へ保存完了 [1142460/1142460]

■python-devel,libsync-devel,libsyncを入れる(epelリポジトリ使用)

# yum install python-devel librsync-devel librsync
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/metalink                                                                                                                         | 5.6 kB     00:00
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
base                                                                                                                                  | 3.7 kB     00:00
epel                                                                                                                                  | 4.3 kB     00:00
epel/primary_db                                                                                                                       | 4.1 MB     00:00
extras                                                                                                                                | 3.5 kB     00:00
extras/primary_db                                                                                                                     |  24 kB     00:00
jenkins                                                                                                                               |  951 B     00:00
jenkins/primary                                                                                                                       |  18 kB     00:00
jenkins                                                                                                                                              167/167
updates                                                                                                                               | 3.5 kB     00:00
updates/primary_db                                                                                                                    | 4.3 MB     00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package librsync.i686 0:0.9.7-15.el6 will be installed
---> Package librsync-devel.i686 0:0.9.7-15.el6 will be installed
---> Package python-devel.i686 0:2.6.6-29.el6_3.3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                  Arch                           Version                                     Repository                         Size
=============================================================================================================================================================
Installing:
 librsync                                 i686                           0.9.7-15.el6                                epel                               44 k
 librsync-devel                           i686                           0.9.7-15.el6                                epel                               12 k
 python-devel                             i686                           2.6.6-29.el6_3.3                            updates                           167 k

Transaction Summary
=============================================================================================================================================================
Install       3 Package(s)

Total download size: 223 k
Installed size: 564 k
Is this ok [y/N]: y
Downloading Packages:
(1/3): librsync-0.9.7-15.el6.i686.rpm                                                                                                 |  44 kB     00:00
(2/3): librsync-devel-0.9.7-15.el6.i686.rpm                                                                                           |  12 kB     00:00
(3/3): python-devel-2.6.6-29.el6_3.3.i686.rpm                                                                                         | 167 kB     00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                        514 kB/s | 223 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : librsync-0.9.7-15.el6.i686                                                                                                                1/3
  Installing : librsync-devel-0.9.7-15.el6.i686                                                                                                          2/3
  Installing : python-devel-2.6.6-29.el6_3.3.i686                                                                                                        3/3
  Verifying  : python-devel-2.6.6-29.el6_3.3.i686                                                                                                        1/3
  Verifying  : librsync-0.9.7-15.el6.i686                                                                                                                2/3
  Verifying  : librsync-devel-0.9.7-15.el6.i686                                                                                                          3/3

Installed:
  librsync.i686 0:0.9.7-15.el6                   librsync-devel.i686 0:0.9.7-15.el6                   python-devel.i686 0:2.6.6-29.el6_3.3

Complete!

■duplicityのtar.gzを展開してコンパイルしてインストールする

# tar -xzvf duplicity-0.6.20.tar.gz
duplicity-0.6.20/
duplicity-0.6.20/po/
duplicity-0.6.20/po/LINGUAS
duplicity-0.6.20/po/de/
duplicity-0.6.20/po/de/de.po
・・・・

# cd duplicity-0.6.20
# ll
合計 292
-rw-------  1 1000 1000  67959 10月 28 21:23 2012 CHANGELOG
-rw-------  1 1000 1000  17987 10月 28 21:23 2012 COPYING
-rw-------  1 1000 1000 160119 10月 28 21:23 2012 Changelog.GNU
-rw-------  1 1000 1000   2759 10月 28 21:23 2012 README
-rw-------  1 1000 1000   1225 10月 28 21:23 2012 README-LOG
-rw-------  1 1000 1000    809 10月 28 21:23 2012 README-REPO
drwxr-xr-x  2 1000 1000   4096 10月 28 21:23 2012 bin
drwxr-xr-x  2 1000 1000   4096 10月 28 21:23 2012 dist
drwxr-xr-x  3 1000 1000   4096 10月 28 21:23 2012 duplicity
drwxr-xr-x 27 1000 1000   4096 10月 28 21:23 2012 po
-rwxr-xr-x  1 1000 1000   3233 10月 28 21:23 2012 setup.py
-rw-------  1 1000 1000    102 10月 28 21:23 2012 tarfile-CHANGES
-rw-------  1 1000 1000   2814 10月 28 21:23 2012 tarfile-LICENSE
drwxr-xr-x  6 1000 1000   4096 10月 28 21:23 2012 testing
[root@192 duplicity-0.6.20]# python ./setup.py build
running build
running build_py
creating build
creating build/lib.linux-i686-2.6
creating build/lib.linux-i686-2.6/duplicity
・・・

[root@192 duplicity-0.6.20]# python ./setup.py install
running install
running build
running build_py
running build_ext
running build_scripts
・・・

■duplicityのバージョンを確認してみる。

# duplicity --version
duplicity 0.6.20

■FTPも利用する場合はncftpもインストールする(epelリポジトリ使用)

# yum search ncftp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
epel/pkgtags                                                                                                                          |  325 B     00:00
==================================================================== N/S Matched: ncftp =====================================================================
ncftp.i686 : Improved console FTP client

  Name and summary matches only, use "search all" for everything.
[root@192 duplicity-0.6.20]# yum install ncftp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package ncftp.i686 2:3.2.4-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                             Arch                               Version                                     Repository                          Size
=============================================================================================================================================================
Installing:
 ncftp                               i686                               2:3.2.4-1.el6                               epel                               315 k

Transaction Summary
=============================================================================================================================================================
Install       1 Package(s)

Total download size: 315 k
Installed size: 1.3 M
Is this ok [y/N]: y
Downloading Packages:
ncftp-3.2.4-1.el6.i686.rpm                                                                                                            | 315 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 2:ncftp-3.2.4-1.el6.i686                                                                                                                  1/1
  Verifying  : 2:ncftp-3.2.4-1.el6.i686                                                                                                                  1/1

Installed:
  ncftp.i686 2:3.2.4-1.el6

Complete!

■ncftpのバージョンを見てみる

# ncftp --version
NcFTP 3.2.4 (Apr 07, 2010) by Mike Gleason (http://www.NcFTP.com/contact/).

ここまででインストールは完了。

■ローカル内でのバックアップ例
○作業場所例

$ pwd
/home/user

○バックアップ元

$ ls -al ./work/
合計 12
drwxrwxr-x   2 user user 4096 12月 21 20:29 2012 ./
drwxrwxrwx. 14 user user 4096 12月 21 20:32 2012 ../
-rw-rw-r--   1 user user   11 12月 21 20:29 2012 first.txt

○バックアップ先

$ ls -al dup_backup_test/
合計 8
drwxrwxr-x   2 user user 4096 12月 21 20:33 2012 ./
drwxrwxrwx. 14 user user 4096 12月 21 20:32 2012 ../

○初回フルバックアップ

$ duplicity ./work file:///home/user/dup_backup_test
Import of duplicity.backends.u1backend Failed: No module named httplib2
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase:
Retype passphrase to confirm:
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1356089561.48 (Fri Dec 21 20:32:41 2012)
EndTime 1356089561.49 (Fri Dec 21 20:32:41 2012)
ElapsedTime 0.01 (0.01 seconds)
SourceFiles 2
SourceFileSize 4107 (4.01 KB)
NewFiles 2
NewFileSize 4107 (4.01 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 2
RawDeltaSize 11 (11 bytes)
TotalDestinationSizeChange 234 (234 bytes)
Errors 0
-------------------------------------------------

○初回バックアップ後のバックアップ先

$ ls -al ./dup_backup_test/
合計 20
drwxrwxr-x   2 user user 4096 12月 21 20:36 2012 ./
drwxrwxrwx. 14 user user 4096 12月 21 20:32 2012 ../
-rw-------   1 user user  261 12月 21 20:36 2012 duplicity-full-signatures.20121221T113556Z.sigtar.gpg
-rw-------   1 user user  196 12月 21 20:36 2012 duplicity-full.20121221T113556Z.manifest.gpg
-rw-------   1 user user  234 12月 21 20:36 2012 duplicity-full.20121221T113556Z.vol1.difftar.gpg

○バックアップ元を変更する

$ ls -al ./work/
合計 16
drwxrwxr-x   2 user user 4096 12月 21 20:37 2012 ./
drwxrwxrwx. 14 user user 4096 12月 21 20:37 2012 ../
-rw-rw-r--   1 user user   11 12月 21 20:29 2012 first.txt
-rw-rw-r--   1 user user   12 12月 21 20:37 2012 second.txt

○2回目のバックアップ

$ duplicity ./work file:///home/user/dup_backup_test
Import of duplicity.backends.u1backend Failed: No module named httplib2
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Fri Dec 21 20:35:56 2012
GnuPG passphrase:
Retype passphrase to confirm:
--------------[ Backup Statistics ]--------------
StartTime 1356089881.33 (Fri Dec 21 20:38:01 2012)
EndTime 1356089881.34 (Fri Dec 21 20:38:01 2012)
ElapsedTime 0.01 (0.01 seconds)
SourceFiles 3
SourceFileSize 4119 (4.02 KB)
NewFiles 2
NewFileSize 4108 (4.01 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 2
RawDeltaSize 12 (12 bytes)
TotalDestinationSizeChange 233 (233 bytes)
Errors 0
-------------------------------------------------

○2回目バックアップ後のバックアップ先

$ ls -al ./dup_backup_test/
合計 32
drwxrwxr-x   2 user user 4096 12月 21 20:38 2012 ./
drwxrwxrwx. 14 user user 4096 12月 21 20:37 2012 ../
-rw-------   1 user user  261 12月 21 20:36 2012 duplicity-full-signatures.20121221T113556Z.sigtar.gpg
-rw-------   1 user user  196 12月 21 20:36 2012 duplicity-full.20121221T113556Z.manifest.gpg
-rw-------   1 user user  234 12月 21 20:36 2012 duplicity-full.20121221T113556Z.vol1.difftar.gpg
-rw-------   1 user user  196 12月 21 20:38 2012 duplicity-inc.20121221T113556Z.to.20121221T113757Z.manifest.gpg
-rw-------   1 user user  233 12月 21 20:38 2012 duplicity-inc.20121221T113556Z.to.20121221T113757Z.vol1.difftar.gpg
-rw-------   1 user user  263 12月 21 20:38 2012 duplicity-new-signatures.20121221T113556Z.to.20121221T113757Z.sigtar.gpg

○バックアップ状態の確認

$ duplicity collection-status file:///home/user/dup_backup_test
Import of duplicity.backends.u1backend Failed: No module named httplib2
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Fri Dec 21 20:35:56 2012
Collection Status
-----------------
Connecting with backend: LocalBackend
Archive dir: /home/user/.cache/duplicity/8716bfe8333e4b5eaeabee4eec99bcbf

Found 0 secondary backup chains.

Found primary backup chain with matching signature chain:
-------------------------
Chain start time: Fri Dec 21 20:35:56 2012
Chain end time: Fri Dec 21 20:37:57 2012
Number of contained backup sets: 2
Total number of contained volumes: 2
 Type of backup set:                            Time:      Num volumes:
                Full         Fri Dec 21 20:35:56 2012                 1
         Incremental         Fri Dec 21 20:37:57 2012                 1
-------------------------
No orphaned or incomplete backup sets found.

■レストアしてみる
workの下を空にしておく

$ ls -al ./work/
合計 8
drwxrwxr-x   2 user user 4096 12月 21 20:42 2012 ./
drwxrwxrwx. 14 user user 4096 12月 21 20:37 2012 ../

レストアする

$ duplicity file:///home/user/dup_backup_test /home/user/work
Import of duplicity.backends.u1backend Failed: No module named httplib2
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Fri Dec 21 20:35:56 2012
GnuPG passphrase:

$ ls -al ./work/
合計 16
drwxrwxr-x   2 user user 4096 12月 21 20:37 2012 ./
drwxrwxrwx. 14 user user 4096 12月 21 20:37 2012 ../
-rw-rw-r--   1 user user   11 12月 21 20:29 2012 first.txt
-rw-rw-r--   1 user user   12 12月 21 20:37 2012 second.txt

復元する日時を指定した場合は–restore-time(-t)をオプションとして日時を指定して実行する。
特定のディレクトリだけ復元したい場合は–file-to-restoreオプションでパス名を指定する。
すでにあるディレクトリに上書きする形で復元したいときは–forceオプションをつける

■GnuPGでパスフレーズを毎回求められるのが面倒な場合
事前にexportしておくと楽かも。
export PASSPHRASE=gpgpassphrase

■古いバックアップの削除
5組のバックアップを残してそれ以前のものを削除する場合

$ duplicity remove-all-but-n-full 5 /home/user/dup_backup_test

ある日以前のバックアップを削除する場合

$ duplicity remove-older-than 3M /home/user/dup_backup_test

■年月日の指定方法
○年月日と時間の指定(日本時間の2008年9月4日 18:57:11)
2008-09-04T18:57:11+09:00

○年月日の指定(2008年9月4日)
2008-09-04
2008/09/04
09/04/2008
09-04-2008

○相対的な指定
3D5h45m(3日前と5時間45分前)
5Y4M15s(5年4ヶ月と15秒前)

○現在
now

■duplicityがサポートするアクセス方法と対応するURLのフォーマット

cf+http://container_name
file:///some_dir
ftp://user[:password]@other.host[:port]/some_dir
ftps://user[:password]@other.host[:port]/some_dir
hsi://user[:password]@other.host[:port]/some_dir
imap://user[:password]@other.host[:port]/some_dir
rsync://user[:password]@other.host[:port]::/module/some_dir
rsync://user[:password]@other.host[:port]/relative_path
rsync://user[:password]@other.host[:port]//absolute_path
s3://other.host/bucket_name[/prefix]
s3+http://bucket_name[/prefix]
scp://user[:password]@other.host[:port]/some_dir
ssh://user[:password]@other.host[:port]/some_dir
tahoe://alias/directory
webdav://user[:password]@other.host/some_dir
webdavs://user[:password]@other.host/some_dir
gdocs://user[:password]@other.host/some_dir

■その他

使い方:
  duplicity [full|incremental] [options] source_dir target_url
  duplicity [restore] [options] source_url target_dir
  duplicity verify [options] source_url target_dir
  duplicity collection-status [options] target_url
  duplicity list-current-files [options] target_url
  duplicity cleanup [options] target_url
  duplicity remove-older-than time [options] target_url
  duplicity remove-all-but-n-full count [options] target_url
  duplicity remove-all-inc-of-but-n-full count [options] target_url

コマンド:
  cleanup
  collection-status
  full
  incr
  list-current-files
  restore
  remove-older-than <time>
 remove-all-but-n-full
 remove-all-inc-of-but-n-full
 verify

オプション:
 -h, --help show this help message and exit
 --allow-source-mismatch
 --archive-dir=path
 --asynchronous-upload
 --dry-run
 --encrypt-key=gpg-key-id
 --encrypt-secret-keyring=path
 --encrypt-sign-key=gpg-key-id
 --exclude=shell_pattern
 --exclude-device-files
 --exclude-filelist=filename
 --exclude-filelist-stdin
 --exclude-globbing-filelist=filename
 --exclude-if-present=filename
 --exclude-other-filesystems
 --exclude-regexp=regular_expression
 --extra-clean
 --file-prefix=FILE_PREFIX
 -r path, --file-to-restore=path
 --force
 --ftp-passive
 --ftp-regular
 --full-if-older-than=time
 --gio
 --gpg-options=options
 --ignore-errors
 --imap-mailbox=imap_mailbox
 --include=shell_pattern
 --include-filelist=filename
 --include-filelist-stdin
 --include-globbing-filelist=filename
 --include-regexp=regular_expression
 --log-fd=file_descriptor
 --log-file=filename
 --name=backup name
 --no-encryption
 --no-compression
 --no-print-statistics
 --null-separator
 --num-retries=number
 --numeric-owner
 --old-filenames
 --pydevd
 --rename=RENAME
 -t time, --restore-time=time, --time=time
 --rsync-options=options
 --s3-european-buckets
 --s3-use-rrs
 --s3-use-new-style
 --s3-unencrypted-connection
 --s3-multipart-chunk-size=number
 --s3-use-multiprocessing
 --scp-command=command
 --sftp-command=command
 --short-filenames
 --sign-key=gpg-key-id
 --ssh-askpass
 --ssh-backend=paramiko|pexpect
 --ssh-options=options
 --tempdir=path
 --timeout=seconds
 --time-separator=char
 --use-agent
 --use-scp
 -v [0-9], --verbosity=[0-9]
 -V, --version
 --volsize=number

■参考URL
duplicity本家

[CentOS] How to install Duplicity on your VPS/Dedicated Server

Duplicity – secure incremental backup

ローカル環境のIRCサーバとしてngircdをインストールする

ローカル環境のIRCサーバとしてngircdをインストールする

ircd-hybridをインストールしようとしたけど設定がわからなくて挫折。
この行削除しろとか言われても・・・。
なので簡単そうなngircdをインストールすることにする。

OS:CentOS release 6.3

■普通にyumでインストールする。

# yum search ngircd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
============================================================================================== N/S Matched: ngircd ==============================================================================================
ngircd.i686 : Next Generation IRC Daemon

  Name and summary matches only, use "search all" for everything.
[root@192 ircd]# yum install ngircd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package ngircd.i686 0:18-2.el6 will be installed
--> Processing Dependency: libident.so.0 for package: ngircd-18-2.el6.i686
--> Running transaction check
---> Package libident.i686 0:0.32-4.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================================================
 Package                                             Arch                                            Version                                               Repository                                       Size
=================================================================================================================================================================================================================
Installing:
 ngircd                                              i686                                            18-2.el6                                              epel                                            145 k
Installing for dependencies:
 libident                                            i686                                            0.32-4.el6                                            epel                                             13 k

Transaction Summary
=================================================================================================================================================================================================================
Install       2 Package(s)

Total download size: 158 k
Installed size: 437 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): libident-0.32-4.el6.i686.rpm                                                                                                                                                       |  13 kB     00:00
(2/2): ngircd-18-2.el6.i686.rpm                                                                                                                                                           | 145 kB     00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                            375 kB/s | 158 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : libident-0.32-4.el6.i686                                                                                                                                                                      1/2
  Installing : ngircd-18-2.el6.i686                                                                                                                                                                          2/2
  Verifying  : libident-0.32-4.el6.i686                                                                                                                                                                      1/2
  Verifying  : ngircd-18-2.el6.i686                                                                                                                                                                          2/2

Installed:
  ngircd.i686 0:18-2.el6

Dependency Installed:
  libident.i686 0:0.32-4.el6

Complete!

■設定ファイルを一部変更

# cp /etc/ngircd.conf /etc/ngircd.conf.def
# vim /etc/ngircd.conf
# diff /etc/ngircd.conf.def /etc/ngircd.conf
47c47,48
<       Listen = 127.0.0.1 --- >       ;Listen = 127.0.0.1
>       Listen = 0.0.0.0
51a53
>       MotdFile = /etc/ngircd.motd

■ngircdの起動

# /etc/rc.d/init.d/ngircd start
ngircd を起動中:                                           [  OK  ]

インストールから起動まではこれだけでOK。
あとはLimeChatとかIRCクライアントで接続するだけ。
※あくまでローカル内の話しです。

[Global]セクションの「Password」とか「Ports」も設定したほうがいいかも。
あと「MotdFile」も作成して何かした表示用の文字を入れておくほうが
エラーでなくていいかも。

あと良くわかんないけど[Channel]セクションを定義しておくと
接続時に勝手に表示されていい感じ。

■参考URL
IRC初心者がIRCを通知ツールとして使ってみる,または個人的IRC環境のメモ

Jenkinsとかからの通知を目標にするぞ。。

LPIC レベル2 覚えられないコマンドとか色々5

■lvcreate コマンド

lvcreate [オプション] ボリュームグループ名

-L 続けてボリュームサイズを指定
-n 続けて論理ボリューム名を指定
-s スナップショットを指定

-sがサイズと思ってしまって毎度間違う。。。

■debugfsコマンド

debugfs は ext2/ext3/ext4 ファイルシステムの対話的デバッグを行うコマンド

起動すると専用の debugfs シェル画面となり、その中で使える様々なコマンドを使ってファイルシステムを調査・編集することができる。
きめ細かで高度な操作が行える反面、操作には ext2/ext3/ext4 ファイルシステムに対する十分な知識が必要なので、
e2fsck や tune2fs などの便利なコマンドで解決できる場合はまずそちらの利用を検討するべき。

■modprobeコマンド

modprobe コマンドは依存関係を自動的に解決してカーネルモジュールのロード・アンロードが行えるコマンド。

-f 強制的に操作を行う
-r ロードではなくアンロードを行う
-l ロードできるモジュールを一覧表示
–show-depends 指定したモジュールの依存関係を表示

LPIC レベル2 覚えられないコマンドとか色々4

全部覚えられないとか言ってる気がしてきた。。

■マルチホーム接続

マルチホーム (接続) とは、外部(インターネットなど) へ接続する際に、複数の経路を使って接続すること。
これを行うには、外部へ接続するホストに対して、複数の IP アドレスを割り当てる必要がある。

Linux システムでは、物理的に複数のネットワークインタフェースを用意し、それぞれに IP アドレスを割り当てる方法のほかに、
ひとつのネットワークインタフェースに複数の IP アドレスを仮想的に対応させる方法 (IP エイリアシング) がある。
IP エイリアシングを使い、複数の IP アドレスをネットワークインタフェースに割り当てるには・・・。

# ifconfig eth0:1 IPアドレス

eth0 の後ろに :1 という指定を付け足すことで、コロン (:) の後に続いた別名(エイリアス)に対して新たに IP アドレスを割り当てることができる。
エイリアスは任意の英数字を使えるので、「eth0:lan1」などと指定する事もできる。

■ホスト名に関連した情報を表示するためのコマンド

nslookup DNSでホスト名とIPアドレスを変換
dig nslookupより詳細な情報を表示
hostname 自ホストのホスト名を表示
hostname -d 自ホストのDNSドメイン名を表示
hostname -i 自ホストのIPアドレスを表示
hostname -f 自ホストのFQDNを表示
hostname -a 自ホストのエイリアスを表示

■GRUB Legacyの設定ファイル

/boot/grub/menu.lstの設定パラメータ

timeout メニューを表示している秒数
default デフォルトで起動するエントリ番号
splashimage メニュー表示時の背景画像
title メニューに表示させるエントリ名
root カーネルイメージもしくはOSが格納されているパーティションの指定
kernel カーネルイメージとカーネルオプションの指定
initrd 初期RAMディスクファイルの指定
makeactive ルートパーティションをアクティブ化
chainloader 指定されたセクタの読み込みと実行
hiddenmenu 起動時の選択メニューを表示しない

■GRUB2

設定ファイルは/boot/grub/grub.cfgだけどGRUB Legacyと違い直接編集はしない。
/etc/default/grubで設定を行い、update-grubコマンドで/boot/grub/grub.cfgを生成する。

GRUB2の全体的な設定は /etc/default/grub ファイルに記述する。

カーネルイメージ、ルートパーティションの指定などは /etc/grub.d ディレクトリ内のファイルで行う。

カスタムの設定を記述するファイル内で利用するパラメータ

menuentry 各設定の名前を指定する項目(GRUB Legacy の title に相当)
set root='(hdディスク番号,パーティション番号)’ カーネルイメージや初期 RAM ディスクイメージの含まれているパーティションを指定する項目(GRUB Legacy の root に相当)GRUB Legacy と異なり、パーティション番号は1から数える。
linux カーネルイメージファイルを指定する項目(GRUB Legacy の kernel に相当)
initrd 初期 RAM ディスクイメージファイルを指定する項目(GRUB Legacy の initrd と同様)

■ジャーナリング

ジャーナリングとは、実データをディスクに書き込む前にメタデータを専用の領域に書き込んでおくことで、
不正にシステムが終了してしまいファイルシステム内での整合性がとれなくなってしまう状況を防ぐ機能

ext3/ext4 以外にも ReiserFS, XFS 等、高機能なファイルシステムはジャーナリング機能を持っている。

■初期RAMディスク

初期 RAM ディスクは、システム起動時に仮の環境としてまずメモリ上にファイルシステムを展開し、そこでカーネルを
動作させてから本来のファイルシステムをルートにマウントし直す、といった段階的なブートを実現する機能。

高度な機能を使うにはまずカーネルを動作させる必要があり、仮の環境でまずカーネルを動かして、それから本来の環境をブートさせようという発想。

initrd 形式と initramfs 形式の2種類がある。

○initrd型式

作成方法 mkinitrd 出力ファイル名 カーネルバージョン
展開方法 gunzip initrd.img.gzmount -o loop  initrd.img マウント先

○initramfs形式

作成方法 mkinitramfs  -o 出力ファイル名 カーネルバージョン
展開方法 gunzip initrd.img.gzcpio -id < initrd.img

現在では cpio アーカイブを gzip で圧縮した initramfs 形式の方がよく利用されている。

■RAIDを管理・操作するコマンド

「RAID を管理・操作するコマンド」には mdadm があり、その設定ファイルは
/etc/mdadm.conf

Ping-tがなかなか倒せない。。

LPIC レベル2 覚えられないコマンドとか色々3

作成済みのファイルシステム(デバイス)を引数にとって動作するコマンド

tune2fs ext2/ext3/ext4 の設定を行う
e2label ext2/ext3/ext4 のラベルを操作
dumpe2fs ext2/ext3/ext4 の詳細を表示する
debugfs ext2/ext3/ext4 の対話的デバッグを行う
reiserfstune ReiserFS の設定を行う
debugreiserfs ReiserFS の対話的デバッグを行う
xfs_admin xfs の設定を行う
xfs_info xfs の情報を表示する

■tune2fsコマンド
tune2fs [オプション] デバイス

-c 自動fsckが行われるまでのマウント回数を設定
-i 自動fsckが行われるまでの時間を設定
-j ext2をext3に変換。ジャーナリング機能を付与
-l スーパーブロックの内容を出力
-L 続けて指定した名前でラベルをつける

■mkreiserfsコマンド
RaiserFSファイルシステムを作るコマンド
mkreiserfs [オプション] デバイス

-b 続けてブロックサイズをbyte単位で指定
-l 続けてボリュームラベル名を指定
-j 続けてジャーナルのファイル名を指定
-s 続けてジャーナルのサイズを指定

LPIC レベル2 覚えられないコマンドとか色々2

なんだかなーおぼえられねーなー。

■カーネルパラメータ
sysctlでカーネルパラメータの操作を行う

表示する sysctl カーネルパラメータ
 変更する sysctl -w カーネルパラメータ=値
 一覧 sysctl -a

/proc/sys によるカーネルパラメータ操作
kernel.shmallが対象パラメータの場合

表示する cat /proc/sys/kernel/shmall
 変更 echo ‘2097152’ > /proc/sys/kernel/shmall

■ARP
IP アドレスと MAC アドレスの対応関係は、ARP キャッシュという
テーブルとしてシステム内に保持されているARP キャッシュに関する
操作を行うコマンドは arp です。

arp [オプション]

-i –device 続けて表示対象インターフェースを指定
-a –display  続けて表示対象のホスト名を指定
-d –delete 続けて削除対象のホスト名を指定
-n –numeric 逆引きを行わず、IPアドレスのまま表示
-s set 続けてIPとMACアドレスの対応を指定しキャッシュに追加
-f file 続けてファイルを指定し、その内容をキャッシュに追加

■mtコマンド
mtコマンドは、テープドライブを制御するコマンド。
磁気テープなどのテープデバイスを早送りしたり、巻き戻したりできる。

書式:mt -f テープデバイス 操作

テープデバイスはSCSI接続なら/dev/st0となります。
ただ、テープデバイスに/dev/st0を指定した場合、データの読み書きで
テープが自動的に巻き戻されます。
その為、複数のファイルを読み書きしたい場合などは巻き戻ししない
/dev/nst0をテープデバイスに指定します。

■カーネルのソース

/usr/src/linux 内のファイル・ディレクトリで覚えておきたいもの。

.config カーネルのビルド設定ファイル
Makefile makeの設定やカーネルのバージョンが書いてある
kernel/ カーネル本体のソースが入っている
Documentation/ ドキュメント類が入っている

 

 

LPIC レベル2 覚えられないコマンドとか色々

いやー今回はかなり覚えられないw

■namedのオプション

-t namedのルートディレクトリとするディレクトリを指定(chrootにするディレクトリの指定)
-u namedの実行ユーザを指定
-g namedの実行グループを指定

■DNSSEC
DNSSEC(DNS Security Extensions)とは、公開鍵暗号方式を用いた
電子署名により、正答なDNSサーバからのゾーン情報である事を認証し、
またゾーン情報が改竄されていないことを保証する技術。
公開鍵と秘密鍵を作成するには dnssec-keygen コマンドを使用し、
ゾーンファイルへ署名に dnssec-signzone コマンドを使用する。
ゾーン情報を暗号化する技術では無い。

■TSIG
TSIG(Transaction Signature)とは、マスターDNSサーバとスレーブDNSサーバに共通の
秘密鍵を設定する事で、DNSサーバの偽装など、なりすましを防ぐ技術。
共通鍵の作成は dnssec-keygen コマンドを使用する。
作成した共通鍵は、マスター/スレイブDNSサーバ双方の
/etc/named.conf ファイルに、keyステートメントとして設定します。

■mkisofs コマンド

mkisofs [オプション] ディレクトリ

-o 続けてイメージファイル出力先を指定する
-J Windows系拡張であるJolietフォーマットで作成
-R UNIX系拡張であるRockRidgeフォーマットで作成
-udf DVDで用いられるUDFフォーマットで作成

■modprobe
modprobe の設定ファイルでは、各カーネルモジュールのデフォルトパラメータを
指定したり(options)、カーネルモジュールに別名をつけたり(alias)、特定の
カーネルモジュールのロード時・アンロード時に実行されるコマンドを設定したり
(install, remove)できます。

■cpioコマンド
cpioコマンドもtarコマンドと同じく、複数のファイルをまとめて1つのファイル
(アーカイブ)にする、またはアーカイブを展開する際に使用するコマンド。
バックアップや初期 RAM ディスク(initramfs形式)の作成などに使用される。

-o 新しくアーカイブを作成する
-i アーカイブからファイルを展開する

■カーネルパラメータ

カーネルの動作や細かな設定値を参照・変更するための仕組み。
カーネルパラメータの多くの項目は、実行時に値を変更すること
ができ、すぐに新設定が有効になる。

/proc/sys 以下にカーネルパラメータを操作するための仮想ファイルが
存在し、仮想ファイルに対する読み書きを通じて操作することができる。

カーネルパラメータはビルド時ではなく実行中に設定を変更することができる。

新しいカーネルをインストールした際は、基本的にカーネルパラメータには
適切な値が自動的に設定されている。

パフォーマンスチューニング目的など、特に必要があって設定をする場合を
除いては、手動で設定を行わなくても問題ない。

sysctl コマンドで変更した設定は再起動時に設定が失われる。

恒久的に(再起動後も)設定を有効にするためには、起動時に自動実行される
スクリプトを編集し、起動毎に設定したい値を変更する sysctl コマンドを
実行するようにするか、/etc/sysctl.conf という専用の設定ファイルに設定を記述する。

■insserv コマンド

SUSE 系ディストリビューションで利用。
insserv コマンドは引数にサービス名だけを指定すると自動起動する設定を、
-r オプションを加えると自動起動しない設定を行う。

■update-rc.d コマンド

update-rc.d [オプション] サービス 操作 [優先度] [ランレベル]

操作

default ランレベルに応じて、SかKで始まるリンクを作る
start Sで始まるリンクを作る
stop Kで始まるリンクを作る
remove リンクを削除する(-f で強制)

自動起動設定を追加・削除することができる。
update-rc.d はその名前の通り、/etc/rc[0-6].d 内のシンボリックリンクを
操作して、サービスの自動起動設定を行うことができるコマンド。
start stop defaults でリンクを作ることも、remove でリンク削除もできる。

優先順位を指定することができる。
defaults や start, stop に続く部分に数字を書き、自動起動設定の優先度(S99local の 99 の部分)を指定することができる。

LPIC レベル2 覚えられないコマンドとオプションメモ

あー全然オプションが覚えられない。覚えられない。

netstat [オプション]

実行システム上のネットワーク状態について様々な情報を表示できるコマンド

-l 待ち受け状態のソケットのみを表示
-a 待ち受け状態によらずすべてのソケットを表示
-c 情報を毎秒更新して最新状態を表示
-i ネットワークインターフェースの統計を表示
-r ルーティングテーブルを表示
-n ホスト名などを名前解決せずに数字(IP)で表示

これに関連して、、、ネットワーク関連のユーティリティコマンドの概要

ping ターゲットホストまでの疎通を確認
traceroute ターゲットホストまでの経路を確認
tcpdump ネットワークを監視してパケットをキャプチャ
nc TCP/UDPを利用して様々な低レベルの操作を行う(telnet的な)
nmap ネットワークのスキャンを行う

ログインしているユーザへの情報通知方法

/etc/issue ログインプロンプトの手前に表示される内容を設定するファイル
/etc/motd ユーザがシステムにログインした直後に、コンソールに表示される内容を設定するファイル
wall コマンド ログインしているユーザ全員のコンソールに、引数で指定したメッセージを表示
shutdown コマンドの -k オプション wall と同様にログインしているユーザ全員にメッセージを送る

※-k オプションを指定した場合にはシャットダウン・再起動などの動作はキャンセル

tcpdump [オプション] [監視対象の条件式]

host ダンプ対象とするホストを指定
port ダンプ対象とするポートを指定
tcp TCPのパケットを対象とする
udp UDPのパケットを対象とする
icmp ICMPのパケットを対象とする
arp ARPのパケットを対象とする

オートマウントの動作を設定するためのメイン設定ファイル

/etc/auto.master

nmap [スキャンタイプ] [オプション] 対象

スキャンタイプ(何も指定しないとデフォルトでは TCP SYN スキャン)

-sT TCPスキャン
-sU UDPスキャン
-sP Pingスキャン

オプション

-p 続けて対象ポート範囲を指定
-F 有名ポートを対象とした高速スキャン
-O 対象ホストのOS識別を試みる

メモリ上に配置する特殊なファイルシステム

tmpfs

OpenVPN のメイン設定ファイル

/etc/openvpn/server.conf

/etc/inittab のアクション指定子

initdefault デフォルトランレベルを指定
once 指定ランレベルになったら一度だけ実行
wait onceと同様。ただしプロセスの終了を待つ
boot ブート時に実行する
bootwait boot時と同様だが、プロセスの終了を待つ
sysinit bootと同様だが、より先に実行する
respawn プロセスが終了しても自動的に再起動

/etc/inittab は以下の形式

ID:ランレベル:アクション指定子:コマンド

sysinit, boot, bootwait はランレベルによらない設定のためランレベルは無視される。
※空欄にしておくらしい。

XFS関連のコマンドのややこしさが異常。。

xfs_check XFSをチェックする
xfs_admin XFSの設定を行う
xfs_info XFSの情報を表示する
mkfs.xfs XFSを作成する
xfsrestore バックアップから XFS ファイルシステムの復元を行う
xfsdump XFS ファイルシステムのバックアップを行う

ソースからのカーネルのビルドとインストール(再構築)の基本的な手順

1. 設定を初期化 make mrproper で設定ファイルを含めてディレクトリ内を初期化。
展開したソースにあらかじめ不適切な設定が含まれている可能性や、
古いカーネルの設定が残っている可能性を考慮し、はじめに必ず実行する。
2. 設定を行う 初期化された設定を今回の再構築用に設定する。
make oldconfig など。
ほかに make config で対話的に設定する方法、
make menuconfig でコンソール上のメニューから設定する方法などなど。
3. ビルドを行う make もしくは make all とすることで、依存関係の解消、
カーネル本体とモジュールのビルド、一時ファイルの削除が自動で行われる。
4. システムにインストールする ビルドを行っただけではシステムに配置されてはいないので、インストールを行う。
通常、make modules_install としてモジュールをインストールしてから、
make install としてカーネル本体をインストールする。
make install によって /boot 以下にカーネルイメージが配置され、
ブートローダに新しいカーネルを使う起動設定が追加される。

LPIC:ncコマンド

全然知らなかったのでメモ。

ncコマンド

TCP/UDP を使って任意の通信を行わせることのできる、汎用性の高いコマンド

もともとnetcatだったらしい。

書式

nc [オプション] ホスト ポート

オプションを指定せずにホストとポートを指定するとtelnetのように対話型になる。

標準出力の内容を送信するのでシェルのパイプで自動実行させることも可能。

$ cat ./commandstring | nc mail.example.com 25

ポートスキャンもできる。

$ nc -vz target.com 100-200

代表的オプション

オプション 説明
-v 接続に成功した際のログメッセージなどを出力させるためのオプション
-z 接続のみを試み、データを送信することはしないというオプション
n1-n2 ポートの範囲を指定

ncとnmapでポートスキャンができる。

■参考URL
ncコマンド (netcat)

./jqをインストールする

./jqをインストールする

MOONGIFT:JSONを使った開発のお供にどうぞ「jq」

JSONデータ構造を見やすくしてくれるコマンド。

本家サイト

jq is like sed for JSON data – you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.

■環境確認

# cat /etc/redhat-release
CentOS release 5.7 (Final)
# uname -a
Linux xxxxxxx.com 2.6.32-042stab049.6 #1 SMP Mon Feb 6 19:16:12 MSK 2012 i686 i686 i386 GNU/Linux

■ソースのダウンロード(今回の環境ではDownload source)

# cd /usr/local/src/
# wget http://stedolan.github.com/jq/download/source/jq.tgz
--2012-11-02 14:02:39--  http://stedolan.github.com/jq/download/source/jq.tgz
stedolan.github.com をDNSに問いあわせています... 204.232.175.78
stedolan.github.com|204.232.175.78|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 450943 (440K) [application/octet-stream]
`jq.tgz' に保存中

100%[===================================================================================================================>] 450,943      339K/s 時間 1.3s

2012-11-02 14:02:41 (339 KB/s) - `jq.tgz' へ保存完了 [450943/450943]

■ソースの展開

# tar xzvf jq.tgz
stedolan-jq-95a0074/
stedolan-jq-95a0074/.gitignore
.....ずらずら.....
stedolan-jq-95a0074/testdata

■フォルダに入ってmake

# cd stedolan-jq-95a0074/
# ls
COPYING    builtin.h   compile.h  forkable_stack.h    jv.c       jv_parse.c    jv_unicode.h          lexer.l    opcode.h       parser.gen.info
Makefile   bytecode.c  docs       frame_layout.h      jv.h       jv_parse.h    jv_utf8_tables.gen.h  locfile.h  opcode_list.h  parser.h
README.md  bytecode.h  execute.c  gen_utf8_tables.py  jv_dtoa.c  jv_print.c    lexer.gen.c           main.c     parser.gen.c   parser.y
builtin.c  compile.c   execute.h  jq_test.c           jv_dtoa.h  jv_unicode.c  lexer.gen.h           opcode.c   parser.gen.h   testdata
# make
gcc -Wextra -Wall -Wno-missing-field-initializers -Wno-unused-parameter -std=gnu99 -ggdb -Wno-unused-function -O -DJQ_DEBUG=0 -o jq parser.gen.c lexer.gen.c opcode.c bytecode.c compile.c execute.c builtin.c jv.c jv_parse.c jv_print.c jv_dtoa.c jv_unicode.c main.c
# ll
合計 860
-rw-rw-r-- 1 root root   2957 10月 22 03:52 COPYING
....
-rwxrwxr-x 1 root root 292707 11月  2 14:04 jq
....

■「jq」が出来たので「/usr/local/bin/」にシンボリックを貼ってコマンドを登録

# cd /usr/local/bin/
# ln -s /usr/local/src/stedolan-jq-95a0074/jq
# ll
合計 5932
.....
lrwxrwxrwx 1 root root      37 11月  2 14:05 jq -> /usr/local/src/stedolan-jq-95a0074/jq
.....

■サイトのサンプルを試す

# curl 'http://search.twitter.com/search.json?q=json&rpp=5&include_entities=true' | jq '.results[0]'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5192  100  5192    0     0  11854      0 --:--:-- --:--:-- --:--:-- 2708k
{
  "to_user_name": null,
  "to_user_id_str": "0",
  "to_user_id": 0,
  "id": 264231272392581120,
  "geo": null,
  "from_user_name": "Chris Johnson",
  "from_user_id_str": "911210857",
  "from_user_id": 911210857,
  "from_user": "CHRISpy_Json",
  "entities": {
    "user_mentions": [],
    "urls": [],
    "hashtags": [
      {
        "indices": [
          103,
          121
        ],
        "text": "accomplishedtweet"
      }
    ]
  },
  "created_at": "Fri, 02 Nov 2012 05:03:39 +0000",
  "id_str": "264231272392581120",
  "iso_language_code": "en",
  "metadata": {
    "result_type": "recent"
  },
  "profile_image_url": "http://a0.twimg.com/profile_images/2777986607/635aaa3cc2f805fb9f642d6e616e3ce0_normal.jpeg",
  "profile_image_url_https": "https://si0.twimg.com/profile_images/2777986607/635aaa3cc2f805fb9f642d6e616e3ce0_normal.jpeg",
  "source": "&lt;a href=&quot;http://twitter.com/download/iphone&quot;&gt;Twitter for iPhone&lt;/a&gt;",
  "text": "It's 1 in the morning, i just finished all of my hw, i got to skype ailise and i'm not even that tired #accomplishedtweet",
  "to_user": null
}

出来たー