WordPress(AWS+Bitnami) – PowerShellでファイルを一括保存

今回はコンテンツ系ファイルの取り出しの簡易化を試みています。

※圧縮の際のパス間違っていたので修正しました(2020/07/30)。

htdocs/wp-contentの下にある以下のフォルダです。

  • plugins
  • uploads
  • themes

課題

以前に3つのフォルダを圧縮して取り出す方法を記述したのですが、TeratermやらWinSCPやら切り替えがあって非常に面倒くさい。
しかも毎度やることは同じ。
というわけで何とか単純化できないかというが今回の試みです。

ざっくり手順

Windows PowerShellを使ってssh接続もscp接続もする。
後は適当に、バッチ化しておけばちょっと楽になるはず。

コード

ファイル名:content-backup.ps1

# **** 移行元のサーバー情報 ****
# ユーザーID
$user_name=Read-Host "接続先のユーザーIDを指定してください"
# ドメイン情報
$domain=Read-Host "接続先のドメインを指定してください。"
# 秘密鍵(.pem)ファイルパス(C:\Users以下に配置しないとアクセス権の問題で失敗します) ex."C:\Users\WordpressKeyPair.pem"
$pemfile_path=Read-Host "秘密鍵(.pem)ファイルの保存先を指定してください。C:\Users\の以下に配置されている必要があります"
# バックアップファイルを保存する先 ex."C:\backup"
$backup_path=Read-Host "取り出したバックアップの保存先を指定してください"

# ログイン情報の作成
$login_info=$user_name+"@"+$domain

# 各ディレクトリを圧縮
ssh -i $pemfile_path $login_info "cd /opt/bitnami/apps/wordpress/htdocs/wp-content/;tar zcvf uploads.tar.gz uploads;"
ssh -i $pemfile_path $login_info "cd /opt/bitnami/apps/wordpress/htdocs/wp-content/;tar zcvf plugins.tar.gz plugins;"
ssh -i $pemfile_path $login_info "cd /opt/bitnami/apps/wordpress/htdocs/wp-content/;tar zcvf themes.tar.gz themes;"

# SCP接続先情報を作成
$uploads_tar_path=$login_info+":"+"/opt/bitnami/apps/wordpress/htdocs/wp-content\uploads.tar.gz"
$plugins_tar_path=$login_info+":"+"/opt/bitnami/apps/wordpress/htdocs/wp-content\plugins.tar.gz"
$themes_tar_path=$login_info+":"+"/opt/bitnami/apps/wordpress/htdocs/wp-content\themes.tar.gz"

# SCP接続してローカルに保存
scp -i $pemfile_path $uploads_tar_path $backup_path
scp -i $pemfile_path $plugins_tar_path $backup_path
scp -i $pemfile_path $themes_tar_path $backup_path

# 圧縮ディレクトリを削除
"不要になった圧縮ディレクトリを削除しています。"
ssh -i $pemfile_path $login_info "cd /opt/bitnami/apps/wordpress/htdocs/wp-content;rm -f /uploads.tar.gz;rm -f /plugins.tar.gz;rm -f themes.tar.gz;exit;"

ファイル名:content-backup.bat

powershell -NoProfile -ExecutionPolicy Unrestricted .\content-backup.ps1
pause

使い方

  • wordpress_backup.batとwordpress_backup.ps1を同じフォルダに配置
  • wordpress_backup.batを実行する
  • 「接続先のユーザーIDを指定してください」と聞いてきたら
    • → たぶんbitnami
  • 「接続先のドメインを指定してください」と聞いてきたら
    • → 自分のwordpressのドメイン。IPでも可
  • 「秘密鍵(.pem)ファイルの保存先を指定してください」と聞いてきたら
    • → teratermとかでつなぐときのファイルパスを指定
    • C:\Users以下のフォルダに置かないとアクセス権の絡みで失敗する
  • 「取り出したバックアップの保存先を指定してください」と聞いてきたら
    • 保存したい場所を適当に指定。

パスの指定は""(ダブルクォート)で括っておいた方が無難。
空白がなければ無しでも良い。

UTF-8だと文字化けするので、wordpress_backup.ps1はShift-JISで保存した方が良いです。

課題

不要になった圧縮ディレクトリを削除しています。
で止まってしまうケースがあります。
恒久的な対策が見つかっていません。しょぼい・・・。

暫定処置としては、Enterキーを何回か押してください。
最後まで処理が進みます。

ダウンロード

一応サンプルを置いておきます。
大したトラブルは起きないと思いますが、ご使用については自己責任でお願いいたします。

content-backup

まとめ

次はMySQLデータのダンプですかね。
ssh接続時にrmコマンドを実行するとsshを終了しない対策、誰か教えてください。

おわり

コメントを残す

メールアドレスが公開されることはありません。