<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Takanotume24</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Takanotume24"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Takanotume24"/>
	<updated>2026-04-13T20:30:45Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Duplicity&amp;diff=27404</id>
		<title>Duplicity</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Duplicity&amp;diff=27404"/>
		<updated>2022-09-21T05:49:47Z</updated>

		<summary type="html">&lt;p&gt;Takanotume24: 全角スペースを半角スペースへ変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:バックアップ]]&lt;br /&gt;
[[en:Duplicity]]&lt;br /&gt;
[https://www.nongnu.org/duplicity/ Duplicity] はネットワークバックアッププログラムです。&lt;br /&gt;
&lt;br /&gt;
ディレクトリやファイルのスナップショットを GnuPG で暗号化されたリモートの tar ファイルに保存することができ、ファイルをバックアップリポジトリとして使用します。リモートのバックアップリポジトリと接続するのに使えるプロトコルは次のとおりです: rsync, ftp, HSI, WebDAV, Tahoe-LAFS, Amazon S3。&lt;br /&gt;
&lt;br /&gt;
バックアップは差分で実行されるため、(最後のバックアップから) ファイルの変更した部分だけが保存されます。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
&lt;br /&gt;
{{pkg|duplicity}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
===フロントエンド===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[duply]]|Duplicity のシェルフロントエンド。|https://www.duply.net/|{{AUR|duply}}}}&lt;br /&gt;
* {{App|[[Deja Dup]]|正しい方法でバックアップするための複雑さを隠し、duplicityをバックエンドとして使用するシンプルなバックアップツールです。|https://wiki.gnome.org/Apps/DejaDup|{{pkg|deja-dup}}}}&lt;br /&gt;
&lt;br /&gt;
==基本的な使用方法==&lt;br /&gt;
&lt;br /&gt;
===バックアップの実行===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;scp/ssh&#039;&#039; プロトコルを使ってローカルフォルダの {{ic|/home/me}} をリモートの &#039;&#039;other.host&#039;&#039; 内の {{ic|/usr/backup}} にバックアップする場合:&lt;br /&gt;
&lt;br /&gt;
 $ duplicity /home/me scp://uid@other.host//usr/backup&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを初めて実行したときは、完全なバックアップが作成されます。同じコマンドをもう一度実行すると、既存のバックアップリポジトリに差分バックアップが行われます。&lt;br /&gt;
&lt;br /&gt;
コマンドラインオプションを追加することで以下のようなことができます:&lt;br /&gt;
* バックアップから特定のファイルやディレクトリを追加・除外 (シェルパターンや正規表現が使えます)。&lt;br /&gt;
* 暗号化の設定やバックアップの署名。&lt;br /&gt;
&lt;br /&gt;
===バックアップからファイルを復元===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;other.host&#039;&#039; のリモートリポジトリ &#039;&#039;/usr/backup&#039;&#039; に保存されている最後のスナップショットからローカルフォルダの {{ic|/home/me}} を復元したい場合:&lt;br /&gt;
&lt;br /&gt;
 $ duplicity scp://uid@other.host//usr/backup /home/me &lt;br /&gt;
&lt;br /&gt;
上記のコマンドはバックアップの際に使用するコマンドと順番が逆になっています。URL 引数は常にバックアップリポジトリとして扱われ、ローカルパス引数は同期するディレクトリとして扱われます (ローカルのバックアップリポジトリを指定したいときは file:// プロトコルを付けて指定する必要があります)。&lt;br /&gt;
&lt;br /&gt;
コマンドラインオプションを追加することで以下のようなことができます:&lt;br /&gt;
* リポジトリ全体ではなく特定のファイルだけ復元。&lt;br /&gt;
* 特定時刻の状態にファイルを復元。&lt;br /&gt;
&lt;br /&gt;
===メンテナンス===&lt;br /&gt;
&lt;br /&gt;
リポジトリの状態をローカルファイルと比較することができるコマンドラインオプションが存在します。また、古いスナップショットを削除したり、一定のスナップショットだけを確保したり、指定した時間よりも新しいスナップショットだけ残すこともできます。&lt;br /&gt;
&lt;br /&gt;
詳しくは man ページを見てください。&lt;br /&gt;
&lt;br /&gt;
===サンプルバックアップスクリプト===&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 ## Remote backup script. Requires duplicity and gpg-agent with the keys and passphrases loaded as root.&lt;br /&gt;
 ## Uses separate encryption and signing keys&lt;br /&gt;
 ## Usage:  &#039;backup_remote.sh&#039;&lt;br /&gt;
 &lt;br /&gt;
 enc_key=44D79E41&lt;br /&gt;
 sign_key=F5C978E3&lt;br /&gt;
 src=&amp;quot;/mnt/backup/&amp;quot;&lt;br /&gt;
 dest=&amp;quot;scp://destination.com//backups/homeserver&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Keychain is used to source the ssh-agent keys when running from a cron job&lt;br /&gt;
 type -P keychain &amp;amp;&amp;gt;/dev/null || { echo &amp;quot;I require keychain but it&#039;s not installed.  Aborting.&amp;quot; &amp;gt;&amp;amp;2; exit 1; }&lt;br /&gt;
 eval `keychain --eval web_rsa` || exit 1&lt;br /&gt;
 ## Note: can&#039;t use keychain for gpg-agent because it doesn&#039;t currently (2.7.1) read in all the keys correctly. &lt;br /&gt;
 ## Gpg will ask for a passphrase twice for each key...once for encryption/decryption and once for signing. &lt;br /&gt;
 ## This makes unattended backups impossible, especially when trying to resume an interrupted backup.&lt;br /&gt;
 if [ -f &amp;quot;${HOME}/.gnupg/gpg-agent-info&amp;quot; ]; then&lt;br /&gt;
       . &amp;quot;${HOME}/.gnupg/gpg-agent-info&amp;quot;&lt;br /&gt;
       export GPG_AGENT_INFO&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 duplicity --use-agent \&lt;br /&gt;
          --verbosity notice \&lt;br /&gt;
          --encrypt-key &amp;quot;$enc_key&amp;quot; \&lt;br /&gt;
          --sign-key &amp;quot;$sign_key&amp;quot; \&lt;br /&gt;
          --full-if-older-than 60D \&lt;br /&gt;
          --num-retries 3 \&lt;br /&gt;
          --asynchronous-upload \&lt;br /&gt;
          --volsize 100 \&lt;br /&gt;
          --archive-dir /root/.cache/duplicity \&lt;br /&gt;
          --log-file /var/log/duplicity.log \&lt;br /&gt;
          --exclude /mnt/backup/fsarchiver \&lt;br /&gt;
          --exclude &#039;**rdiff-backup-data&#039; \&lt;br /&gt;
          &amp;quot;$src&amp;quot; &amp;quot;$dest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* There is an issue with the current version of pinentry (0.8.1-3) that will not allow passphrase entry for a root gpg-agent when logged in as root using su - or sudo. If you are accessing a remote server where direct root ssh login is not allowed (or desired!), then you have to either [https://bugzilla.redhat.com/show_bug.cgi?id&amp;amp;#61;677665 patch pinentry] or {{ic|chown root `tty`}} before running pinentry. This is not an issue when running gpg-agent as a non-root user.&lt;br /&gt;
* If you want to start gpg-agent on root login and then cache the passphrases for gpg-agent at your convenience, you can add these functions to your /root/.bashrc:}}&lt;br /&gt;
&lt;br /&gt;
 function gpg_start {&lt;br /&gt;
        gnupginf=&amp;quot;${HOME}/.gnupg/gpg-agent-info&amp;quot;&lt;br /&gt;
        if pgrep -u &amp;quot;${USER}&amp;quot; gpg-agent &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
            eval &amp;quot;$(cat $gnupginf)&amp;quot;&lt;br /&gt;
            eval &amp;quot;$(cut -d= -f1 &amp;lt; $gnupginf | xargs echo export)&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            eval &amp;quot;$(gpg-agent -s --daemon --write-env-file $gnupginf)&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
 }&lt;br /&gt;
 function keys {&lt;br /&gt;
        touch test-gpg.txt&lt;br /&gt;
        touch test-gpg.txt1&lt;br /&gt;
        gpg -r &#039;Duplicity Encryption Key&#039; -e test-gpg.txt&lt;br /&gt;
        gpg -r &#039;Duplicity Signature Key&#039; -e test-gpg.txt1&lt;br /&gt;
        gpg -u &amp;lt;signing key&amp;gt; --detach-sign test-gpg.txt&lt;br /&gt;
        gpg -u &amp;lt;encryption key&amp;gt; --detach-sign test-gpg.txt1&lt;br /&gt;
        gpg -d test-gpg.txt.gpg&lt;br /&gt;
        gpg -d test-gpg.txt1.gpg&lt;br /&gt;
        rm test-gpg.txt*&lt;br /&gt;
 }&lt;br /&gt;
 gpg_start&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
“inappropriate ioctl for device” というような GPG のエラーが発生する場合、GPG のバージョン 2.1 以上から変わった GPG エージェントの挙動が原因です。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=190301 こちらのスレッド] を見てください。基本的には GPG エージェントにパスフレーズを渡すためにプログラムを明示的に許可する必要があります。&lt;br /&gt;
&lt;br /&gt;
問題を解決する[[GnuPG#無人のパスフレーズ]]に手順が載っています。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
* [[バックアッププログラム]]&lt;br /&gt;
* [http://duplicity.nongnu.org/ Duplicity ホームページ]&lt;br /&gt;
* [[Wikipedia:Duplicity (software)]]&lt;br /&gt;
* [https://launchpad.net/deja-dup Déjà Dup ホームページ]&lt;/div&gt;</summary>
		<author><name>Takanotume24</name></author>
	</entry>
</feed>