「Davfs2」の版間の差分
細 (→通常ユーザーでマウント: 空白追加) |
(関連記事を追加) |
||
(3人の利用者による、間の5版が非表示) | |||
1行目: | 1行目: | ||
+ | {{Lowercase title}} |
||
[[Category:ファイルシステム]] |
[[Category:ファイルシステム]] |
||
− | [[ |
+ | [[Category:WebDAV]] |
+ | [[en:Davfs2]] |
||
− | '''DAVfs''' は WebDAV サーバーをディスクドライブとしてマウントできるようにする Linux ファイルシステムドライバーです。WebDAV は HTTP/1.1 を拡張してウェブリソースをリモートで共同で作成するプロトコルで、RFC 4918 で定義されています。 |
||
+ | {{Related articles start}} |
||
+ | {{Related|WebDAV}} |
||
+ | {{Related articles end}} |
||
+ | [http://savannah.nongnu.org/projects/davfs2 davfs2] は [[WebDAV]] サーバーをディスクドライブとしてマウントできるようにする Linux ファイルシステムドライバーです。WebDAV は HTTP/1.1 を拡張してウェブリソースをリモートで共同で作成するプロトコルで、RFC 4918 で定義されています。 |
||
− | == |
+ | == インストール == |
− | + | {{Pkg|davfs2}} パッケージを[[インストール]]してください。 |
|
− | == |
+ | == WebDAV のマウント == |
− | 例: |
||
− | <nowiki># mount.davfs http://localhost:8080/ /mnt/dav</nowiki> |
||
− | <nowiki># mount -t davfs http://localhost:8080/ /mnt/dav</nowiki> |
||
− | == |
+ | === 設定とマウントオプション === |
+ | システム全体の設定ファイルは {{ic|/etc/davfs2/davfs2.conf}} に、ユーザー個別の設定ファイルは {{ic|~/.davfs2/davfs2.conf}} になります。後者は通常のユーザーで実行されたときにシステム全体の設定よりも優先して読み込まれます。WebDAV やキャッシュ、デバッグ関連のオプションが存在します。利用可能なオプションと構文は {{man|5|davfs2.conf}} を参照してください。 |
||
− | network グループにユーザーを追加 (username はあなたのユーザー名に置き換えてください): |
||
− | # usermod -a -G network username |
||
+ | 必要であればマウントオプションを使って設定ファイルのパスを定義したりファイルアクセスに関するオプションを設定できます。以下のコマンドでオプションのリストを確認できます: |
||
− | webdav エントリを /etc/fstab に追加 (username はあなたのユーザー名に置き換えてください): |
||
+ | $ mount.davfs -h |
||
− | <nowiki>https://webdav.example.com /home/username/webdav davfs user,noauto,uid=username,file_mode=600,dir_mode=700 0 1</nowiki> |
||
+ | {{man|8|mount.davfs}} にも説明とオプションが載っています。 |
||
− | ホームディレクトリに secrets ファイルを作成: |
||
− | $ mkdir ~/.davfs2/ |
||
− | <nowiki>$ echo "https://webdav.example.com webdavuser webdavpassword" >> ~/.davfs2/secrets</nowiki> |
||
− | $ chmod 0600 ~/.davfs2/secrets |
||
+ | === コマンドラインを使う === |
||
− | nextcloud と owncloud の場合、url は: |
||
+ | WebDAV をマウントするときは直接 {{ic|mount.davfs}} を使わずに {{ic|mount}} を使用します: |
||
− | <nowiki>https://webdav.example.com/remote.php/webdav</nowiki> |
||
+ | # mount -t davfs http(s)://addres:<port>/path /mount/point |
||
− | box.com の場合、url は: |
||
− | <nowiki>https://dav.box.com/dav</nowiki> |
||
+ | === systemd を使う === |
||
− | STACK の場合、url は (username はあなたのユーザー名に置き換えてください): |
||
+ | [[systemd#マウント|systemd]] でマウントするには: |
||
− | <nowiki>https://username.stackstorage.com/remote.php/webdav</nowiki> |
||
+ | {{hc|/etc/systemd/system/mnt-webdav-service.mount|<nowiki> |
||
− | 同一サーバーから複数のディスクをマウントしたい場合、{{ic|~/.davfs2/secrets}} ファイルでサーバーアドレスではなくディスクのマウントポイントを指定してください: |
||
+ | [Unit] |
||
+ | Description=Mount WebDAV Service |
||
+ | After=network-online.target |
||
+ | Wants=network-online.target |
||
+ | [Mount] |
||
− | /home/username/disk1 webdavuser1 "webdavpassword1" |
||
+ | What=http(s)://address:<port>/path |
||
− | /home/username/disk2 webdavuser1 "webdavpassword2" |
||
+ | Where=/mnt/webdav/service |
||
− | ......... |
||
+ | Options=uid=1000,file_mode=0664,dir_mode=2775,grpid |
||
− | /home/username/diskN webdavuserN "webdavpasswordN" |
||
+ | Type=davfs |
||
+ | TimeoutSec=15 |
||
+ | [Install] |
||
− | {{ic|~/webdav}} をマウントしたりアンマウントすることができます: |
||
+ | WantedBy=multi-user.target |
||
− | # mount ~/webdav |
||
+ | </nowiki>}} |
||
− | # fusermount -u ~/webdav |
||
+ | |||
+ | systemd の automount ユニットを作成することでタイムアウトを設定できます: |
||
+ | {{hc|/etc/systemd/system/mnt-webdav-service.automount|<nowiki> |
||
+ | [Unit] |
||
+ | Description=Mount WebDAV Service |
||
+ | After=network-online.target |
||
+ | Wants=network-online.target |
||
+ | |||
+ | [Automount] |
||
+ | Where=/mnt/dav |
||
+ | TimeoutIdleSec=300 |
||
+ | |||
+ | [Install] |
||
+ | WantedBy=remote-fs.target |
||
+ | </nowiki>}} |
||
+ | |||
+ | systemd のマウントユニットを使用する方法について詳しくは [[Fstab#systemd による自動マウント]]を参照してください。 |
||
+ | |||
+ | === fstab を使う === |
||
+ | |||
+ | webdav をファイルシステムにマウントする方法を定義するには、以下の形式で [[fstab]] のエントリを追加します: |
||
+ | |||
+ | {{hc|/etc/fstab|2=<nowiki>https:</nowiki>//''webdav.example/path'' /mnt/''webdav'' davfs rw,user,uid=''username'',noauto 0 0}} |
||
+ | |||
+ | ''username'' はマウントするファイルシステムの所有者に置き換えてください。数字の ID かユーザー ID で指定できますが、マウントユーザーと別の uid をマウントできるのは ''root'' だけです。 |
||
+ | |||
+ | == ヒントとテクニック == |
||
+ | |||
+ | === 接続情報の保存 === |
||
+ | |||
+ | ''secrets'' ファイルを作成することで WebDAV サービスの接続情報を保存できます (通常ユーザーの場合は {{ic|~/.davfs2/secrets}}、''root'' の場合は {{ic|/etc/davfs2/secrets}} を使用): |
||
+ | |||
+ | {{hc|/etc/davfs2/secrets| |
||
+ | 2=<nowiki>https:</nowiki>//''webdav.example/path'' ''davusername'' ''davpassword''}} |
||
+ | |||
+ | ''secrets'' ファイルの[[パーミッション]]は適切に設定してください。例えば ''root'' でマウントする場合: |
||
+ | # chmod 600 /etc/davfs2/secrets |
||
+ | # chown root:root /etc/davfs2/secrets |
||
+ | |||
+ | 通常ユーザーでマウントする場合: |
||
+ | $ chmod 600 ~/.davfs2/secrets |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
49行目: | 93行目: | ||
=== ファイルの作成やコピーができない === |
=== ファイルの作成やコピーができない === |
||
+ | ファイルを作成したりコピーできない場合やフリーズが発生するようなときは、[[davfs2#WebDAV のマウント|設定ファイル]] を編集して {{ic|use_locks 0}} オプションを使ってください。パラメータのデフォルトは {{ic|1}} で、書き込みを行うときにサーバー上のファイルをロックします。 |
||
− | ファイルの作成やコピーができない場合、{{ic|/etc/davfs2/davfs2.conf}} を編集して以下の行を変更してください: |
||
+ | === シークレットファイルのパスワード === |
||
− | {{hc|/etc/davfs2/davfs2.conf| |
||
+ | |||
− | [...] |
||
+ | {{ic|\}} や {{ic|"}} などのパスワード内の特殊文字に注意してください。{{ic|\}} でエスケープしてください。 |
||
− | use_locks 0 |
||
+ | |||
− | [...] |
||
+ | === ネットワークはオンラインですが、ドメインの検索に失敗する === |
||
+ | |||
+ | {{ic|network-online.target}} に到達しても WebDAV サーバーのドメインが見つからない場合があります。名前の検索が手動で成功するまで待つことができます。 |
||
+ | |||
+ | まず、[[davfs2# fstab を使う|fstab]] を設定する必要があります。次に、15秒間 ping でサーバーに到達できるかどうかをテストし、成功した場合のみマウントを試行します。 |
||
+ | |||
+ | {{hc|/etc/systemd/system/mnt-webdav-service.service|2= |
||
+ | [Unit] |
||
+ | Description=Mount WebDAV Service |
||
+ | After=network-online.target |
||
+ | Wants=network-online.target |
||
+ | |||
+ | [Service] |
||
+ | Type=oneshot |
||
+ | ExecStart=bash -c 'for i in {1..15}; do if ping -c 1 ''mywebdav.server.url''; then mount ''/path/to/mountpoint''; break; else sleep 1; fi; done' |
||
+ | ExecStop=umount ''/path/to/mountpoint'' |
||
+ | RemainAfterExit=true |
||
+ | |||
+ | [Install] |
||
+ | WantedBy=default.target |
||
}} |
}} |
||
+ | |||
+ | これは、[[ユーザーユニット]] として使用することをお勧めします。 |
||
+ | |||
+ | === WebDAV リソースのマウント時のエラー '/etc/fstab のマウントオプションが異なる' === |
||
+ | |||
+ | これは次の場合に発生します。:<br> |
||
+ | 1) webdav リソースとそのマウントポイントが /etc/fstab に設定されている<br> |
||
+ | 2) マウントポイントが ''mount'' コマンドに引数として渡されています (マウントポイントが /etc/fstab のものと同じであっても)<br> |
||
+ | 修正: /etc/fstab で指定された値が使用されるように、マウント時にマウントポイントを渡さないようにします。 |
||
+ | 例えば: |
||
+ | $ mount -t davfs https://mywebdav mymountpoint # incorrect |
||
+ | different mount options in /etc/fstab |
||
+ | $ mount -t davfs https://mywebdav # correct |
||
+ | $ |
||
== 参照 == |
== 参照 == |
||
+ | *http://ajclarkson.co.uk/blog/auto-mount-webdav-raspberry-pi/ |
||
− | * http://doc.owncloud.org/server/6.0/user_manual/files/files.html |
2023年5月27日 (土) 16:09時点における最新版
関連記事
davfs2 は WebDAV サーバーをディスクドライブとしてマウントできるようにする Linux ファイルシステムドライバーです。WebDAV は HTTP/1.1 を拡張してウェブリソースをリモートで共同で作成するプロトコルで、RFC 4918 で定義されています。
目次
インストール
WebDAV のマウント
設定とマウントオプション
システム全体の設定ファイルは /etc/davfs2/davfs2.conf
に、ユーザー個別の設定ファイルは ~/.davfs2/davfs2.conf
になります。後者は通常のユーザーで実行されたときにシステム全体の設定よりも優先して読み込まれます。WebDAV やキャッシュ、デバッグ関連のオプションが存在します。利用可能なオプションと構文は davfs2.conf(5) を参照してください。
必要であればマウントオプションを使って設定ファイルのパスを定義したりファイルアクセスに関するオプションを設定できます。以下のコマンドでオプションのリストを確認できます:
$ mount.davfs -h
mount.davfs(8) にも説明とオプションが載っています。
コマンドラインを使う
WebDAV をマウントするときは直接 mount.davfs
を使わずに mount
を使用します:
# mount -t davfs http(s)://addres:<port>/path /mount/point
systemd を使う
systemd でマウントするには:
/etc/systemd/system/mnt-webdav-service.mount
[Unit] Description=Mount WebDAV Service After=network-online.target Wants=network-online.target [Mount] What=http(s)://address:<port>/path Where=/mnt/webdav/service Options=uid=1000,file_mode=0664,dir_mode=2775,grpid Type=davfs TimeoutSec=15 [Install] WantedBy=multi-user.target
systemd の automount ユニットを作成することでタイムアウトを設定できます:
/etc/systemd/system/mnt-webdav-service.automount
[Unit] Description=Mount WebDAV Service After=network-online.target Wants=network-online.target [Automount] Where=/mnt/dav TimeoutIdleSec=300 [Install] WantedBy=remote-fs.target
systemd のマウントユニットを使用する方法について詳しくは Fstab#systemd による自動マウントを参照してください。
fstab を使う
webdav をファイルシステムにマウントする方法を定義するには、以下の形式で fstab のエントリを追加します:
/etc/fstab
https://webdav.example/path /mnt/webdav davfs rw,user,uid=username,noauto 0 0
username はマウントするファイルシステムの所有者に置き換えてください。数字の ID かユーザー ID で指定できますが、マウントユーザーと別の uid をマウントできるのは root だけです。
ヒントとテクニック
接続情報の保存
secrets ファイルを作成することで WebDAV サービスの接続情報を保存できます (通常ユーザーの場合は ~/.davfs2/secrets
、root の場合は /etc/davfs2/secrets
を使用):
/etc/davfs2/secrets
https://webdav.example/path davusername davpassword
secrets ファイルのパーミッションは適切に設定してください。例えば root でマウントする場合:
# chmod 600 /etc/davfs2/secrets # chown root:root /etc/davfs2/secrets
通常ユーザーでマウントする場合:
$ chmod 600 ~/.davfs2/secrets
トラブルシューティング
ファイルの作成やコピーができない
ファイルを作成したりコピーできない場合やフリーズが発生するようなときは、設定ファイル を編集して use_locks 0
オプションを使ってください。パラメータのデフォルトは 1
で、書き込みを行うときにサーバー上のファイルをロックします。
シークレットファイルのパスワード
\
や "
などのパスワード内の特殊文字に注意してください。\
でエスケープしてください。
ネットワークはオンラインですが、ドメインの検索に失敗する
network-online.target
に到達しても WebDAV サーバーのドメインが見つからない場合があります。名前の検索が手動で成功するまで待つことができます。
まず、fstab を設定する必要があります。次に、15秒間 ping でサーバーに到達できるかどうかをテストし、成功した場合のみマウントを試行します。
/etc/systemd/system/mnt-webdav-service.service
[Unit] Description=Mount WebDAV Service After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=bash -c 'for i in {1..15}; do if ping -c 1 mywebdav.server.url; then mount /path/to/mountpoint; break; else sleep 1; fi; done' ExecStop=umount /path/to/mountpoint RemainAfterExit=true [Install] WantedBy=default.target
これは、ユーザーユニット として使用することをお勧めします。
WebDAV リソースのマウント時のエラー '/etc/fstab のマウントオプションが異なる'
これは次の場合に発生します。:
1) webdav リソースとそのマウントポイントが /etc/fstab に設定されている
2) マウントポイントが mount コマンドに引数として渡されています (マウントポイントが /etc/fstab のものと同じであっても)
修正: /etc/fstab で指定された値が使用されるように、マウント時にマウントポイントを渡さないようにします。
例えば:
$ mount -t davfs https://mywebdav mymountpoint # incorrect different mount options in /etc/fstab $ mount -t davfs https://mywebdav # correct $