# [メタ情報] # 識別子: メディアおよびJSONをXserverへ更新_exe # システム名: 未分類 # 技術種別: Misc # 機能名: Misc # 使用言語: Shell Script # 状態: 実行用 # [/メタ情報] 要約:このスクリプトは、Mac の LaunchAgent により 60 秒ごとに自動実行され、Dropbox 上の pmedia, mmedia, さらに Python が生成した meta_gd_wp_data(JSON類) を Xserver の対応ディレクトリへ rsync で同期する仕組みである。rsync は Homebrew 版を明示し、UTF-8-MAC→UTF-8 の文字コード変換、不要ファイル削除、権限設定、ssh 接続などを適切に設定している。実行時には ssh-agent で鍵をロードし、各処理の開始・終了をログに記録。LaunchAgent(plist)はログイン時と 60 秒ごとにシェルスクリプトを起動し、標準出力・エラーは /tmp に保存する構成になっている。 /Users/xxxxxxxxm1/scripts/sync_dropbox_xserver_m1.sh #!/bin/bash # ===== LaunchAgent 用:PATH を明示的に設定 ===== export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" export LANG=en_US.UTF-8 # ===== rsync: Homebrew 版を絶対パスで指定 ===== RSYNC="/opt/homebrew/bin/rsync" # ===== ローカルパス ===== LOCAL_DROPBOX_BASE="/Volumes/NO3_SSD/Dropbox/dropbox_1" # pcloud_library.json など JSON 類が入るディレクトリ(Python が書き出している場所) LOCAL_META_DIR="$HOME/meta_gd_wp_data" # ===== ログディレクトリ ===== LOG_DIR="$HOME/scripts/logs" # ===== Xserver 接続情報 ===== SSH_USER="xxxxxxxx" SSH_HOST="xxxxxxxx.xsrv.jp" SSH_PORT="10022" SSH_KEY="$HOME/.ssh/id_rsa_sync" # ===== ログディレクトリ作成 ===== mkdir -p "$LOG_DIR" # ---- /tmp にトレース(launchd 実行確認) ---- TS="$(date '+%Y-%m-%d %H:%M:%S')" echo "[$TS] sync_dropbox_xserver_m1.sh START (pid=$$, user=$(id -un))" >> /tmp/sync_dropbox_trace.log echo "[$TS] ==== sync_dropbox_xserver_m1.sh START ====" >> "$LOG_DIR/sync_dropbox_debug.log" # ===== launchd 用に ssh-agent を起動して鍵をロード ===== eval "$(ssh-agent -s)" >/dev/null 2>&1 ssh-add "$SSH_KEY" >/dev/null 2>&1 # --------------------------------------------------------- # 1) pmedia → Xserver: wp-content/pmedia # --------------------------------------------------------- echo "[$(date '+%Y-%m-%d %H:%M:%S')] rsync pmedia START" >> "$LOG_DIR/sync_dropbox_debug.log" "$RSYNC" -avz --iconv=UTF-8-MAC,UTF-8 \ --delete --perms --chmod=Da+rx,Fa+r \ -e "ssh -i $SSH_KEY -p $SSH_PORT" \ --exclude='@esDir' \ "$LOCAL_DROPBOX_BASE/pmedia/" \ "$SSH_USER@$SSH_HOST:/home/xxxxxxxx/xxxxxxxx.com/public_html/wp-content/pmedia/" \ >> "$LOG_DIR/rsync_pmedia.log" 2>>"$LOG_DIR/rsync_pmedia_error.log" P_RET=$? echo "[$(date '+%Y-%m-%d %H:%M:%S')] rsync pmedia END (exit=$P_RET)" >> "$LOG_DIR/sync_dropbox_debug.log" sleep 1 # --------------------------------------------------------- # 2) mmedia → Xserver: wp-content/mmedia # --------------------------------------------------------- echo "[$(date '+%Y-%m-%d %H:%M:%S')] rsync mmedia START" >> "$LOG_DIR/sync_dropbox_debug.log" "$RSYNC" -avz --iconv=UTF-8-MAC,UTF-8 \ --delete --perms --chmod=Da+rx,Fa+r \ -e "ssh -i $SSH_KEY -p $SSH_PORT" \ --exclude='@esDir' \ "$LOCAL_DROPBOX_BASE/mmedia/" \ "$SSH_USER@$SSH_HOST:/home/xxxxxxxx/xxxxxxxx.com/public_html/wp-content/mmedia/" \ >> "$LOG_DIR/rsync_mmedia.log" 2>>"$LOG_DIR/rsync_mmedia_error.log" M_RET=$? echo "[$(date '+%Y-%m-%d %H:%M:%S')] rsync mmedia END (exit=$M_RET)" >> "$LOG_DIR/sync_dropbox_debug.log" sleep 1 # --------------------------------------------------------- # 3) meta_gd_wp_data → Xserver: _secure/wp_json # (pcloud_library.json / videoct.json / videoembed.json など) # --------------------------------------------------------- echo "[$(date '+%Y-%m-%d %H:%M:%S')] rsync meta_gd_wp_data START" >> "$LOG_DIR/sync_dropbox_debug.log" "$RSYNC" -avz \ --delete --perms --chmod=Da+rx,Fa+r \ -e "ssh -i $SSH_KEY -p $SSH_PORT" \ "$LOCAL_META_DIR/" \ "$SSH_USER@$SSH_HOST:/home/xxxxxxxx/xxxxxxxx.com/public_html/_secure/wp_json/" \ >> "$LOG_DIR/rsync_meta_gd_wp_data.log" 2>>"$LOG_DIR/rsync_meta_gd_wp_data_error.log" J_RET=$? echo "[$(date '+%Y-%m-%d %H:%M:%S')] rsync meta_gd_wp_data END (exit=$J_RET)" >> "$LOG_DIR/sync_dropbox_debug.log" exit 0 /Users/xxxxxxxxm1/Library/LaunchAgents/com.xxxxxxxxm1.sync_dropbox_xserver_m1.plist Label com.xxxxxxxxm1.sync_dropbox_xserver_m1 ProgramArguments /bin/bash /Users/xxxxxxxxm1/scripts/sync_dropbox_xserver_m1.sh RunAtLoad StartInterval 60 StandardOutPath /tmp/sync_dropbox_xserver_m1.out StandardErrorPath /tmp/sync_dropbox_xserver_m1.err