私は自分の管理しているサーバーにownCloudというプライベートクラウドストレージを構築しています。
そこに置いている一部のファイルが削除できなくなりましたので、データベースを操作して削除することにしました。
まずは解決策を書いておくよー。
「ownCloudって何」って方や、「削除できないファイルが発生」の経緯は目次から少し下の記事から読んでねー。
データベースを操作してファイルのロックを解除して解消
おそらく、何らかの理由でファイルを掴んだまま(Lock)になっているのでは無いかと、アタリを付けて、データベースを操作してロックを解除してみることにします。
ターミナルでサーバーにSSH接続します。
ownCloudをメンテナンスモードにする
ターミナルでownCloudの設定ファイルを書き換えて、メンテナンスモードにします。
(設定ファイルの場所は適宜読み替えて下さい。)
vi /var/www/owncloud/config/config.php
config.php内の「’maintenance’ => false,」を「’maintenance’ => true,」にして保存します。
‘maintenance’ => false,
ここを「true」に書き換えて上書き保存。
これだけです。
‘maintenance’ => true,
ブラウザでアクセスすると、きちんとメンテナンスモードになっていることを確認しました。
データベースにアクセス
引き続き、ターミナルでデータベースにアクセスします。
# mysql -u owncloud -p
# mysql -u owncloud -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 000000 Server version: xx.x.xx-MariaDB-xxxxxx Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
まずは ownCloud のデータベースを確認します。
デフォルトのままなら「ownCloud」というデータベースが存在するはずです。
MariaDB [(none)]> show databases;
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | owncloud | +--------------------+ 2 rows in set (0.06 sec)
「ownCloud」というデータベースがありますので、選択します。
他の名前にしている場合は、(適宜読み替えて)そのデータベースを選択して下さい。
MariaDB [(none)]> use owncloud;
MariaDB [(none)]> use owncloud; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
「Database changed」となったら成功です。
まずはこのownCloudデータベースのテーブルを確認します。
MariaDB [owncloud]> show tables;
MariaDB [owncloud]> show tables; +--------------------------------+ | Tables_in_owncloud | +--------------------------------+ | oc_account_terms | | oc_accounts | | oc_activity | | oc_activity_mq | | oc_addressbookchanges | | oc_addressbooks | | oc_appconfig | | oc_audioplayer_albums | | oc_audioplayer_artists | | oc_audioplayer_genre | | oc_audioplayer_playlist_tracks | | oc_audioplayer_playlists | | oc_audioplayer_stats | | oc_audioplayer_streams | | oc_audioplayer_tracks | | oc_authtoken | | oc_calendarchanges | | oc_calendarobjects | | oc_calendars | | oc_calendarsubscriptions | | oc_cards | | oc_cards_properties | | oc_comments | | oc_comments_read_markers | | oc_credentials | | oc_dav_job_status | | oc_dav_properties | | oc_dav_shares | | oc_external_applicable | | oc_external_config | | oc_external_mounts | | oc_external_options | | oc_federated_reshares | | oc_file_locks | | oc_filecache | | oc_files_antivirus | | oc_files_avir_status | | oc_files_trash | | oc_group_admin | | oc_group_user | | oc_groups | | oc_jobs | | oc_mail_accounts | | oc_mail_aliases | | oc_mail_collected_addresses | | oc_migrations | | oc_mimetypes | | oc_mounts | | oc_notifications | | oc_persistent_locks | | oc_preferences | | oc_privatedata | | oc_properties | | oc_schedulingobjects | | oc_share | | oc_share_external | | oc_storages | | oc_systemtag | | oc_systemtag_group | | oc_systemtag_object_mapping | | oc_trusted_servers | | oc_users | | oc_vcategory | | oc_vcategory_to_object | +--------------------------------+ 64 rows in set (0.00 sec)
この中に「oc_file_locks」が存在しますので、これを削除します。
本来は操作中(アップロード中や同期中)なのでロックされているはずなので、今回のように一人で使っている場合は良いけど、複数人で使っている場合などは気をつけてね。
MariaDB [owncloud]> delete from oc_file_locks;
MariaDB [owncloud]> delete from oc_file_locks; Query OK, 663 rows affected (0.02 sec)
「Query OK」となれば、成功です。
データベースから出て終了します。
MariaDB [owncloud]> quit
MariaDB [owncloud]> quit Bye
「Bye」となれば、成功です。
ownCloudのメンテナンスモードを解除する
ターミナルでownCloudの設定ファイルを書き換えて、メンテナンスモードを解除します。
(設定ファイルの場所は適宜読み替えて下さい。)
先程、メンテナンスモードにする時に行った、
config.php内の「’maintenance’ => true,」を「’maintenance’ => false,」にして保存します。
ownCloudとは
ownCloudは自分自身の専用サーバー環境に構築できる、オープンソースのソフトウェアで、セキュアにファイル共有が出来るDropboxやGoogle Driveみたいなものです。
GMOペパボ株式会社のレンタルサーバーサービスの「ロリポップ!」でも「簡単インストール」でownCloudのインストールが出来るようになったので、個人でも簡単にプライベートクラウドを構築できるよ。
大容量のファイル共有
ownCloudは自分のサーバーにインストールして使用します。
そのため、自分のサーバー容量の許す限りのファイルを保存することができます。
アクセスは簡単にWebブラウザで出来ます。
モバイルのアプリも存在していて、iOS/Androidで閲覧とファイルダウンロードができるツールがあります。
そして、何より便利なのがデスクトップではMac/Windows/Linuxの専用同期ソフトが有ることです。
例えばこのツールを使って、PCの「ダウンロードフォルダ」と「ドキュメントフォルダ」を同期しておけば、PCでダウンロードや作成した書類を外出先の携帯で簡単に確認することが出来ます。
セキュリティも確保
通信はSSL(HTTPS)通信に対応しているので、通信は暗号化されますので、インターネット経路の途中の第三者にのぞき見られたり、勝手に書き換えたり出来ないようになっています。
ownCloudのサーバーへのインストール方法とかは、また別記事にするよ。
削除できないファイルが発生
ある日、専用同期ツールのログを見たら、同期できない画像ファイルが有ることが分かりました。
このファイルはWeb上では同期しているDesktopにあるのですが、実際には過去にDesktopに有ったもので、現在はDesktopに有りません。
2020/09/18 7:49:10 xxxxxxxx.png.png Desktop サーバの返答は "400 Bad Request" から "DELETE https://xxxxxxxx/remote.php/dav/files/xxxxxxxx/Desktop/xxxxxxxx.png"です (skipped due to earlier error, trying again in 13 秒)
ブラウザでDesktopフォルダにアクセスしてみると確かに存在し、その画像を開いて見ることも出来ました。
もう必要の無いファイルで、同期エラーが出ているのも気持ちが悪いので削除しようとしたのですが、ブラウザでも削除の操作を受け付けません。
ファイル名が悪いのかと思い、ファイル名の変更を試みましたが、その操作も受け付けません。
サーバーの操作でよく有ることですが、ファイル名に日本語やスペースが入っていたり、記号が入っていたりすると操作がうまくできなくなることがあります。
削除もファイル名も変更できない。。。あちゃー、困ったぞ。。。
解決策はこのページの冒頭に書いておくよー。
コメント