需要があるのかわかりませんが(たぶんないでしょう…)今回の記事では、
- Androidスマホから
- Termuxを使って
- WebDAVサーバーにファイルを転送する
というシェルスクリプトを動かしてみましたので、シェアしたいと思います。
なお、今回の記事ではコンソールでLinuxを操作した経験をある程度お持ちの方を対象としています。各コマンドの詳細やVIMの操作方法などについては細かく解説しませんのでご了承くださいませ。
環境説明
- WebDAVサーバーはSynologyのNASです
- Android OSのバージョンは13です
シェルスクリプトを動かす準備
F-Droidをapkファイルからインストール
まずはAndroidデバイスにF-Droidをインストールします。私は公式サイトから.apkファイルをダウンロードしてインストールしました。
F-Droidを起動してTermuxを検索してインストール
F-Droidのインストールが完了したら、AndroidデバイスでF-Droidを起動します。F-Droidの検索窓から「Termux」で検索すると、いくつか該当候補が見つかると思いますので、
「Termux Terminal emulator with packages」を見つけてインストールします。
Termuxから「pkg upgrade」を実行
※けっこう時間がかかりますし、パケットを使いますのでWifi環境で行うことをオススメします。
Termuxをインストールできたらホーム画面にTermuxのアイコンが作成されていると思いますので、そこからTermuxを起動します。Linuxを使ったことがある方には馴染みのあるコンソールが開きます。
まずは「pkg upgrade」を実行します。
$ pkg upgrade
「Do you want to continue? [Y/n]」と聞かれたら「y」でEnterで進めます。完了したら次に進みます。
Termuxのストレージアクセスを許可
以下のコマンドでTermuxにAndroidのストレージにアクセスする権限を与えます。スマホの画面上に許可を与えてよいか確認のメッセージが表示されたら許可します。
termux-setup-storage
VIMのインストール
以下のコマンドでVIMをインストールします。
$ pkg install vim
rcloneのインストール
WebDAV接続設定を管理するために必要なrcloneをインストールします。以下のコマンドでrcloneをインストールします。
$ pkg install rclone
以上でシェルスクリプトを動かすための準備が整いましたので、次にシェルスクリプトの作成と配置を行っていきます。
ディレクトリの準備
ディレクトリ作成
以下のディレクトリが存在しない場合は作成してください。
- /data/data/com.termux/files/home/.shortcuts
- /data/data/com.termux/files/home/.shortcuts/tasks
ディレクトリ作成のコマンド例は以下です。
$ mkdir /data/data/com.termux/files/home/.shortcuts
ディレクトリが作成できたら「tasks」ディレクトリに移動します。
$ cd /data/data/com.termux/files/home/.shortcuts/tasks
rclone.confの作成
rclone configコマンドの実行
以下のコマンドを実行します
$ rclone config
ウィザード形式で次々と質問されます。詳細は割愛しますが、値は後から直接設定ファイルを編集することで変更できます。ざっくり説明すると「type」は「webdav」、「vendor」は「other」でよいです。ウィサード中でパスワードを入力した場合は暗号化されて保存されます。
ウィザードを完了させてTermuxのプロンプトに戻ります。
「rclone config」コマンドを実行したことで、rcloneの接続設定ファイルである、
「~/.config/rclone/rclone.conf」が作成されます。このファイルをVIMで開いてみると以下のような内容のファイルになっています。設定値が間違っていたらVIMから編集して修正してください。
[nas] #←この値は控えておいてください
type = webdav
url = https://hoge.com:5000
vendor = other
user = hogeuser
pass = ※暗号化された文字列
シェルスクリプト作成
シェルスクリプト作成
以下のコマンドで「tasks」ディレクトリ内に空の「fileBackup.sh」を作成します。
$ touch fileBackup.sh
以下のコマンドで、「fileBackup.sh」に実行権限を与えます。
$ chmod +x fileBackup.sh
VIMコマンドで作成した「fileBackup.sh」を開きます。
$ vim fileBackup.sh
以下はシェルスクリプトの全文です。内容はお使いの環境に合わせて適宜変更してください。
※このスクリプトはAndroidデバイス内の「/storage/emulated/0/DCIM/OpenCamera」フォルダの中身をすべてWebDAVサーバーに「移動」します。Androidデバイス内にファイルは残しませんのでご注意ください。
#!/bin/bash
echo "Hello,"
src_dir="/storage/emulated/0/DCIM/OpenCamera"
remote_name="nas" #「rclone.conf」で指定した『この値は控えておいてください』と一致させてください
remote_dir="nas_folder"
log_file="./sync_photos_to_nas.log"
date=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$date] Sync started."
rclone move "$src_dir" "$remote_name:$remote_dir" --create-empty-src-dirs --log-file="$log_file" --log-level=INFO --no-traverse
if [ $? -eq 0 ]; then
echo "[$date] Sync completed successfully." >> "$log_file"
else
echo "[$DATE] Sync failed." >> "$log_file"
exit 1
fi
echo "Photo backup is complete"
以上でシェルスクリプトの作成は完了です。以下のコマンドで「fileBackup.sh」を実行できます。
$ ./fileBakcup.sh
ホーム画面に登録
以上でシェルスクリプトは完成しましたが、ホーム画面から起動できると便利です。
ホーム画面に今回作成したシェルスクリプトのショートカットを配置するには、F-Droidから「Termux Widget」をインストールする必要があります。
F-Droidを起動し「Termux Widget」で検索して見つかった「Termux:Widget Launch Termux」をインストールします。
インストールが完了したら、Androidのホーム画面のウィジェット登録を行う画面に「Termux Widget」が追加されていますので、選択するとホーム画面にショートカットが作成されます。
シェルスクリプトを「/data/data/com.termux/files/home/.shortcuts/tasks」に配置したことで特に追加の手順を必要とせずシェルスクリプトを認識してくれます。
以上です。最後までお読みいただきありがとうございます。
コメント