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


duplicityをCentOS6.3にインストールするメモ | Bamboo lath 日々の記録【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


コメントを残す

メールアドレスが公開されることはありません。